[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/

目录
相关文章
|
XML 数据挖掘 API
数据为王!深度挖掘天猫商品详情接口,赋能电商运营新策略
**天猫商品详情接口摘要** - 开放平台API,获取商品标题、价格、描述、销量等信息。 - 支持多语言,用于生成详情页、数据分析、营销策略、竞品分析和购物决策。 - 注册授权,获取AppKey和AppSecret,参照文档构建请求。 - 发送GET/POST请求,处理JSON或XML响应数据。 - 助力自动化运营、提升效率和竞争力,对商家和消费者都有价值。
|
前端开发 开发者
解决Edge输入document.querySelector(‘video‘).playbackRate = 2.5视频无法加速的问题,‘Uncaught (in promise) TypeErro’
解决Edge输入document.querySelector(‘video‘).playbackRate = 2.5视频无法加速的问题,‘Uncaught (in promise) TypeErro’
|
分布式数据库 Hbase
[Phoenix] 二、数据类型
目前Phoenix支持22种简单数据类型和1个一维Array的复杂类型。
10358 1
|
开发框架 缓存 JavaScript
阿里巴巴加入 Eclipse 基金会,开源一站式 Java 应用诊断平台 -- Eclipse Jifa
### 前言 Java 作为一门主流的编程语言, 在业界拥有着丰富的工具帮助开发者排查与定位研发过程中遇到的各类疑难问题。早在多年前, 阿里巴巴就研发了一款 Java 应用的在线问题诊断平台 -- ZProfiler, 致力于帮助研发同学快速定位生产环境中频繁遇到的 Java 问题, 例如 OOM 异常。 在内部, ZProfiler 平台被研发同学广泛使用, 协助他们解决了大量的生产问题
3875 0
阿里巴巴加入 Eclipse 基金会,开源一站式 Java 应用诊断平台 -- Eclipse Jifa
|
机器学习/深度学习 存储 Shell
Google Colab免费GPU大揭晓:超详细使用攻略
Google Colab免费GPU大揭晓:超详细使用攻略
|
SQL 分布式数据库 Hbase
[Phoenix] 八、动态列
传统关系型数据库的动态列实现只能依赖逻辑层的设计实现,而Phoenix是HBase上的SQL层,借助HBase特性实现的动态列功能,具有高度的灵活性,告别业务逻辑层的复杂设计。
8419 0
|
分布式计算 Hadoop 分布式数据库
[Phoenix] 十二、数据迁移
数据迁移工具是否丰富,也在一定程度上决定了数据库的流行程度和它的生态圈。了解其相关工具,能让我们的数据迁移工作更加高效。本文主要介绍 Phoenix 的数据导入导出工具,希望给准备在 Phoenix 上做数据迁移的同学一些帮助。
5081 0
|
SQL 分布式数据库 索引
Phoenix入门到精通
此Phoenix系列文章将会从Phoenix的语法和功能特性、相关工具、实践经验以及应用案例多方面从浅入深的阐述。希望对Phoenix入门、在做架构设计和技术选型的同学能有一些帮助。
33014 0
|
数据库 索引
[Phoenix] 十一、查询计划详解
数据库的使用中了解其查询计划的构成,是进行查询性能调优的必要条件。本文将详细介绍Phoenix的查询计划语法、组成结构,以及一些注意事项
4825 0
|
SQL Java 数据库连接
[Phoenix] 九、分页查询
所谓分页查询就是从符合条件的起始记录,往后遍历“页大小”的行。对于Phoenix的分页查询,怎么使用?性能怎么样?需要注意什么?将会在文章中通过示例和数据说明。
7810 0