天天看點

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

本文檔純粹是自我記錄 不是幫助文檔

繼續閱讀