[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
在emr或自建集群上访问云HBase集群

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

三、BULKLOAD PHOENIX表

以EMR访问云HBASE为例。EMR集群需要把云HBASE HDFS的emr-cluster 相关配置和当前EMR的HDFS配置合在一起形成新的配置文件,单独存放在一个目录(${conf-dir})下。
通过yarn/hadoop命令的--config参数指定新的配置目录,使这些配置文件放在CLASSPATH最前面覆盖掉当前EMR集群hadoop_conf_dir下的配置,以便bulkload程序能识别到云HBASE HA的HDFS URL。当在emr或自建集群上能够访问自己的HDFS(hadoop --config <confdir> dfs -ls /), 也能够访问云HBase的HDFS(hadoop --config <confdir> dfs -ls hdfs://emr-cluster/)说明配置成功了。

执行如下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/

相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
SQL 分布式计算 Hadoop
Hive使用Impala组件查询(1)
Hive使用Impala组件查询(1)
159 0
|
7月前
|
SQL 存储 Java
Hive使用Impala组件查询(2)
Hive使用Impala组件查询(2)
85 0
|
分布式计算 分布式数据库 Scala
Spark查询Hbase小案例
写作目的 1)正好有些Spark连接HBase的需求,当个笔记本,到时候自己在写的时候,可以看 2)根据rowkey查询其实我还是查询了好久才找到,所以整理了一下 3)好久没发博客了,水一篇
178 0
Spark查询Hbase小案例
|
Java 分布式数据库 Maven
|
SQL 分布式计算 数据库
Spark on Phoenix 4.x Connector:如何在Spark侧设置Phoenix参数
前言 X-Pack Spark可以使用Spark on Phoenix 4.x Connector直接对接Phoenix数据库,读取Phoenix数据表数据。有时在读取Phoenix时需要设置Phoenix的一些参数,例如Phoenix为了保障数据库的稳定性,默认开了索引包含,即查询Phoebe表必须要带上索引或者主键字段作为过滤条件。
1661 0
|
SQL 分布式计算 Java
Hadoop大数据平台实战(02):HBase vs. Hive vs. Impala 对比
Hadoop大数据平台实战(02):HBase vs. Hive vs. Impala 对比。
2678 0
|
Java 数据库连接 分布式数据库
Phoenix ODPSBulkLoadTool 使用案例
介绍Phoenix ODPSBulkLoadTool 使用案例
2594 0
|
SQL 存储 物联网
Ali-HBase的SQL实践与改进
HBase原生api虽然赋予了用户极致的控制力,但也带来了较高的开发成本和学习成本,而SQL则很好的解决了这个使用问题。本文从为什么需要SQL开始谈起,进而讲解了SQL on Hbase,接着着重分享了Ali-Hbase SQL的优化与改进,最后对未来进行了展望。
3902 0