• [Phoenix] 六、MR在Ali-Phoenix上的使用


    摘要: 在云HBASE上利用MR BULKLOAD入库PHOENIX表或通过MR构建PHOENIX索引表。

    一、MR在Phoenix上的用途

    1. 利用MR对Phoenix表(可带有二级索引表)进行Bulkload入库, 其原理是直接生成主表(二级索引表)的HFILE写入HDFS。相对于走API的数据导入方式,不仅速度更快,而且对HBASE集群的负载也会小很多。目前云HBASE上的Phoenix支持以下数据源的Bulkload工具:

      • CsvBulkLoadTool
      • JsonBulkLoadTool
      • RegexBulkLoadTool
      • ODPSBulkLoadTool(待上线)
    2. 利用MR Building二级索引。当主表数据量较大时,可以通过创建异步索引,使用MR快速同步索引数据。

    二、如何访问云HBASE的HDFS?

    由于云HBASE上没有MR,需要借助外部的计算引擎(自建的HADOOP集群或者EMR),而使用外部的计算引擎的首先面临的问题是,如何跨集群访问HDFS。
    1.由于云HBASE的HDFS端口默认是不开的,需要联系工作人员开通。
    2.端口开通以后,要想顺利的访问HDFS是HA配置的云HBASE集群,需要向工作人员获取云HBASE的主备(emr-header-1,emr-header-2)namenode host/IP。参考如下配置模板,设置hadoop客户端配置文件:
    hdfs-site.xml

      <configuration> 
        <property> 
          <name>dfs.nameservices</name>  
          <value>emr-cluster</value> 
        </property>  
        <property> 
          <name>dfs.client.failover.proxy.provider.emr-cluster</name>  
          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 
        </property>  
        <property> 
          <name>dfs.ha.automatic-failover.enabled.emr-cluster</name>  
          <value>true</value> 
        </property>  
        <property> 
          <name>dfs.ha.namenodes.emr-cluster</name>  
          <value>nn1,nn2</value> 
        </property>  
        <property> 
          <name>dfs.namenode.rpc-address.emr-cluster.nn1</name>  
          <value>{emr-header-1-host}:8020</value> 
        </property>  
        <property> 
          <name>dfs.namenode.rpc-address.emr-cluster.nn2</name>  
          <value>{emr-header-2-host}:8020</value> 
        </property> 
      </configuration>

    3.验证访问云HBASE HDFS

    hadoop dfs -ls hdfs://emr-cluster/

    三、BULKLOAD PHOENIX表

    1. 由于要和云HBASE通信,所以客户端的依赖的hbase-protocol.jar需要是1.1.x版本。可以使用链接:http://central.maven.org/maven2/org/apache/hbase/hbase-protocol/1.1.1/hbase-protocol-1.1.1.jar 下载。

    2. 以EMR访问云HBASE为例。EMR集群需要把云HBASE HDFS的emr-cluster 相关配置和当前EMR的HDFS配置合在一起形成新的配置文件,单独存放在一个目录(${conf-dir})下。通过yarn命令的--config参数指定新的配置目录,使这些配置文件放在CLASSPATH最前面覆盖掉当前EMR集群hadoop_conf_dir下的配置,以便bulkload程序能识别到云HBASE HA的HDFS URL。
    3. 执行BULKLOAD命令
    yarn --config ${CONF_DIR} jar ${PHOENIX_HOME}/phoenix-${version}-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table "TABLENAME" --input "hdfs://emr-header-1.cluster-55090:9000/tmp/test_data"  --zookeeper "zk1,zk2,zk3" --output "hdfs://emr-cluster/tmp/tmp_data"

    注意: --output 配置的是云HBASE的临时文件,这样直接把生成的HFILE存储在云HBASE的HDFS上,后续的只有简单的move操作。否则,如果生成在EMR集群还需要走网络发送到云HBASE HDFS上。

    四、参考

    http://www.syscrest.com/2016/02/access-remote-ha-enabled-hdfs-oozie-distcp-action/

    转自:https://yq.aliyun.com/articles/544746

     


    交流

    如果大家对HBase有兴趣,致力于使用HBase解决实际的问题,欢迎加入Hbase技术社区群交流:

    微信HBase技术社区群,假如微信群加不了,可以加秘书微信: SH_425 ,然后邀请您。

     

     

    ​  钉钉HBase技术社区群

  • 相关阅读:
    【2】通过Ajax方式上传文件(图片),使用FormData进行Ajax请求
    【1】mongoDB 的安装及启动
    第一篇博客
    Java Integer 进制转化的实现(附源码),对模与补码的理解
    筛法求素数(普通筛法与欧拉筛法) 这是个问题
    字典的拼接方法
    使用Selenium抓取百度指数一
    正则表达式30分钟入门教程
    微博抓取尝试
    __call__方法的最简要说明
  • 原文地址:https://www.cnblogs.com/hbase-community/p/8853568.html
Copyright © 2020-2023  润新知