
# 运行跨集群HBase BulkLoad数据导入任务
#### 操作场景
由于BulkLoad操作会占用大量的计算资源和消耗较多的网络和磁盘IO。为了避免对HBase读写产生影响，支持将BulkLoad任务运行在另外一个MRS集群上，然后将生成的HFile文件拷贝并导入到HBase集群的表中。
#### 约束与限制
该章节操作仅适用于MRS 3.6.0-LTS及之后版本。
#### 前提条件
- 如果是安全集群，两个集群需要配置好互信和跨集群拷贝功能，详细操作请参见[配置MRS集群间互信](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0354.html)和[启用MRS集群间拷贝功能](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300047.html)。
- 需要确保在HBase集群客户端所在节点能正确解析两个集群所有节点的主机名，即"/etc/hosts"中需包含两个集群所有主机的主机名与业务IP地址的映射关系，且主机名与IP地址需保持一一对应。
 
#### 提交跨集群HBase BulkLoad任务
1. 使用Yarn集群的HDFS客户端，将BulkLoad的数据文件上传到Yarn集群的HDFS上，详细操作请参见[HDFS客户端使用实践](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1663.html)。
   
   Yarn集群指运行BulkLoad的MapReduce任务的集群；HBase集群指导入生成的HFile文件的集群。
   
   
2. 分别登录HBase集群和Yarn集群的FusionInsight Manager界面，在首页单击"下载客户端"，"选择客户端类型"设置为"仅配置文件"，"选择下载位置"设置为"浏览器"，单击"确定"下载客户端配置文件至本地并解压，获取以下文件：
   
   - HBase集群客户端配置文件解压后的"...\\HBase\\conf"目录下
     - core-site.xml
     
     - hbase-site.xml
      
   
   - Yarn集群客户端配置文件解压后的"...\\Yarn\\conf"目录下
     - core-site.xml
     
     - hdfs-site.xml
     
     - yarn-site.xml
     
     - mapred-site.xml
      
   
   
   
   
3. 以客户端安装用户登录HBase集群客户端所在节点，执行以下命令： 
   配置环境变量：
   ```
   source 客户端安装目录/bigdata_env
   ```
   认证用户，集群未启用Kerberos认证（普通模式）请跳过此操作：
   ```
   kinit 组件业务用户
   ```
   
   
4. 分别将[2]获取的HBase集群和Yarn集群的配置文件上传到客户端指定目录，例如上传至"/opt/hbase_conf"和"/opt/yarn_conf"目录下。
5. 通过如下两种方式指定集群配置，任选其一即可。 
   - 修改HBase客户端"*客户端安装目录* /HBase/hbase/conf"目录下的"hbase-common.xml"文件：
     ```
     <configuration>
         <property>
             <name>import.cluster.hbase.config</name>
             <value>/opt/hbase_conf</value>
             <desc>HBase集群配置路径</desc>
         </property>
         <property>
             <name>import.cluster.yarn.config</name>
             <value>/opt/yarn_conf</value>
             <desc>Yarn集群配置路径</desc>
         </property>
     </configuration>
     ```
     
   
   - 提交任务时通过命令参数**import.cluster.hbase.config** 和**import.cluster.yarn.config** 指定集群配置：
     ```
     hbase com.huawei.hadoop.hbase.tools.bulkload.ImportData -Dimport.cluster.hbase.config=/opt/hbase_conf -Dimport.cluster.yarn.config=/opt/yarn_conf -Dimport.hfile.output="/path/for/output" <xmlfile> <tablename> <inputdir>
     ```
     
   
   
   
   
6. 参考[7](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1615.html#mrs_01_1615__l43d64c67eb3547438080031d6d2657f6)提交任务，如果通过配置命令参数指定集群配置，则需要在提交任务命令中新增**import.cluster.hbase.config** 和**import.cluster.yarn.config**参数，否则不需要设置其他参数。
7. 任务执行执行完成之后，使用[Distcp命令](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0794.html)，将生成的HFile拷贝到HBase集群的指定目录中。例如：
   
   ```
   hadoop distcp hdfs://clusterX/path/for/output /path/for/output
   ```
   
   
8. 执行如下命令将HFile导入HBase中： 
   ```
   hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles </path/for/output> <tablename>
   ```
   例如执行以下命令：
   ```
   hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /hfile ImportTable
   ```
   
   
 
