
# Spark同时访问两个HBase样例程序开发思路
#### 场景说明
spark支持同时访问两个集群中的HBase，前提是两个集群配置了互信。
#### 数据规划
1. 将cluster2集群的所有Zookeeper节点和HBase节点的IP和主机名配置到cluster1集群的客户端节点的"/etc/hosts"文件中。
2. 分别将cluster1和cluster2集群Spark2x客户端conf下的hbase-site.xml文件放到"/opt/example/A"，"/opt/example/B"两个目录下。
3. 用spark-submit提交命令：
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   运行样例程序前，需要在Spark客户端的"spark-defaults.conf"配置文件中将配置项"spark.yarn.security.credentials.hbase.enabled"设置为"true"（该参数值默认为"false"，改为"true"后对已有业务没有影响。如果要卸载HBase服务，卸载前请将此参数值改回"false"）。
   ```
   spark-submit --master yarn --deploy-mode client --files /opt/example/B/hbase-site.xml --keytab /opt/FIclient/user.keytab --principal sparkuser  --class com.huawei.spark.examples.SparkOnMultiHbase /opt/example/SparkOnMultiHbase-1.0.jar
   ```
   
 
#### 开发思路
1. 用户访问HBase时，需要使用对应集群的配置文件创建Configuration对象，用于创建Connection对象。
2. 用对应的Connection对象操作HBase表，包括建表、插入数据、查看数据并进行打印。
 
