更新时间:2025-12-10 GMT+08:00
分享

运行跨集群HBase BulkLoad任务

功能介绍

由于BulkLoad操作会占用大量的计算资源和消耗较多的网络和磁盘IO。为了避免对HBase读写产生影响,支持将BulkLoad任务运行在另外一个MRS集群上,然后将生成的HFile文件拷贝并导入到HBase集群的表中。

该章节操作仅适用于MRS 3.6.0-LTS及之后版本。

前提条件

  • 如果是安全集群,两个集群需要配置好互信和跨集群拷贝功能,详细操作请参见配置MRS集群间互信启用MRS集群间拷贝功能
  • 需要确保在HBase集群客户端所在节点能正确解析两个集群所有节点的主机名,即“/etc/hosts”中需包含两个集群所有主机的主机名与业务IP地址的映射关系,且主机名与IP地址需保持一一对应。

提交跨集群HBase BulkLoad任务

  1. 使用Yarn集群的HDFS客户端,将BulkLoad的数据文件上传到Yarn集群的HDFS上,详细操作请参见HDFS客户端使用实践

    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.configimport.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提交任务,如果通过配置命令参数指定集群配置,则需要在提交任务命令中新增import.cluster.hbase.configimport.cluster.yarn.config参数,否则不需要设置其他参数。
  7. 任务执行执行完成之后,使用Distcp命令,将生成的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

相关文档