Maxcompute Spark 访问 阿里云 Hbase

引子

本来这个东西是没啥好写的,但是在帮客户解决问题的时候,发现链路太长,不能怪客户弄不出来,记录一下

需求列表

  • MaxCompute Spark包 (写文章时刻为版本 0.32.1, 请自行更新,本文不是文档)
  • Spark 配置
spark.hadoop.odps.project.name = <安全信息>
spark.hadoop.odps.access.id = <安全信息>
spark.hadoop.odps.access.key = <安全信息>
spark.executor.instances = 2
spark.executor.cores = 2
spark.executor.memory = 4g
spark.driver.cores = 2
spark.driver.memory = 4g
spark.master = yarn-cluster
spark.hadoop.odps.task.major.version = cupid_v2
spark.sql.catalogImplementation=odps
spark.hadoop.odps.cupid.container.image.enable = true
spark.hadoop.odps.cupid.container.vm.engine.type = hyper
spark.hadoop.odps.end.point = http://service.cn.maxcompute.aliyun.com/api
spark.hadoop.odps.runtime.end.point = http://service.cn.maxcompute.aliyun-inc.com/api
spark.sql.catalogImplementation = odps
spark.hadoop.odps.cupid.vpc.domain.list = 参考文档 https://github.com/aliyun/MaxCompute-Spark/wiki/09.-VPC-Access%E6%96%87%E6%A1%A3%E8%AF%B4%E6%98%8E
spark.hadoop.odps.cupid.smartnat.enable = 参考文档 https://github.com/aliyun/MaxCompute-Spark/wiki/09.-VPC-Access%E6%96%87%E6%A1%A3%E8%AF%B4%E6%98%8E
  • Spark样例工程模版
  • hbase控制台的vpc id zk endpoint都是需要的信息 Maxcompute Spark 访问 阿里云 Hbase
  • 白名单添加 100.0.0.0/8 这样可以让maxcompute机器访问 hbase服务 Maxcompute Spark 访问 阿里云 Hbase
  • 最好下载hbase shell 来校验测试是否成功 Maxcompute Spark 访问 阿里云 Hbase

执行步骤

  • 测试代码路径 ~/spark-2.x/src/main/scala/com/aliyun/odps/spark/examples/SparkPi.scala
  • 解压样例工程 mvn clean package 记得改掉SparkPi文件里的 zkAddress 之后才测试
  • 如果表没有创建,需要用代码里面注释掉的创建表代码先创建表
  • 执行命令
bin/spark-submit --master yarn-cluster --properties-file ~/SparkConf/spark-defaults.conf --class com.aliyun.odps.spark.examples.SparkPi ~/Code/github/mc-spark-examples/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar
  • --master local表示本地执行 zkAddress用的是hbase外网地址,如果是--master yarn-cluster则表示提交到集群执行,用的是专用网络地址
  • 下载了hbase-shell之后,本地更改 conf/hbase-site.xml
并且记得把本地的公网ip加到hbase白名单里,不然也访问不了
<configuration>
     <property>
         <name>hbase.zookeeper.quorum</name>
         <value>这里填外网地址</value>
     </property>
</configuration>
  • hbase命令
bin/hbase shell
list
scan 'test'

如果hbase shell里能够看到你写入的记录,就差不多了
同时需要关注的是,alihbase不能直接用社区的hbase client包访问,详细看样例工程还有他们的文档
https://help.aliyun.com/document_detail/166161.html?spm=a2c4g.11174283.6.833.1ec9363feo117z

本文档纯粹是自我记录 不是帮助文档

上一篇:用HashSet存储自定义对象


下一篇:《中国人工智能学会通讯》——2.28 端到端神经机器翻译