[How to] Phoenix 与 CDH5.4.2 HBase的整合
1.简介
Phoenix将SQL带回到了NOSQL的世界,其在HBase之上做了一个layer,客户端通过SQL调用Phoenix,Phoenix在转化为HBase客户算API进行访问HBase,其很多计算也是通过HBase的协处理器的机制来完成的。当前很多场景下使用CDH版本的HBase,可惜Cloudrea公司并没有官方支持,内有将Phoenix纳入发布版本中,所以造成社区的Phoenix并不能很好的和HBase的cdh版本进行继承,本文通过重新编译Phoenix的方式将两者结合。
2.Phoenix版本选取
Phoenix并没有纳入CDH正式版本中。现在只是CDH版本的lab项目,基于这一点如果我们要使用CDH版本的HBase所适配的Phoenix则需要自己去编译。网上也有很多编译方法,但是这些方法在修改完毕POM文件中的HBase版本后(指定为CDH的HBase版本)通常编译不能通过,唯一的方法是修改Phoneix的源代码,这种在没有经过完整测试的情况下是很危险的,即使修改完毕代码后编译通过对于后续在使用在也是后果自负。
CDH对于Phoneix纳入lab项目的官方声明如下:
http://blog.cloudera.com/blog/2015/05/apache-phoenix-joins-cloudera-labs/
对于Phoneix的工作在如下git中进行,我们可以根据当前自身的HBase版本来选取对应的phoinex版本:
https://github.com/cloudera-labs/phoenix
在我们的生产环境使用的cdh5.4.2版本的HBase,所以在上述git中选取最接近的1.1.0分支,正如上述,虽然是lab版本但是对于“胡乱”修改代码自行编译的版本还是靠谱些。
我们也可以在Cloudera的下载目录中找到Phoneix的版本,但是这些都是parcel格式,这种格式的文件只能通过cloudera manager来安装!
http://archive.cloudera.com/cloudera-labs/phoenix/parcels/
3.Phoenix的安装
Phoneix并不是以集群方式或者说起并没有独立的runtime环境,主要以客户端包被继承与应用客户端来运行,以服务端包被继承于HBase服务端来运行,在客户端将“sql”语句解析成HBase的API来进行访问,当进行二级索引的操作的时候又使用到协处理机制来处理主表与索引表的记录等。
安装方法:
- 将 phoenix-[version]-server.jar 加入到HBase节点的classpath中,通常可以直接放入带lib目录下。
- 修改配置文件
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property><property>
<name>hbase.region.server.rpc.scheduler.factory.class</name>
<value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
<property>
<name>hbase.rpc.controllerfactory.class</name>
<value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property><property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
</property>- 重启集群
- 将 phoenix-[version]-client.jar 继承到应用程序中.
4. bug fix
此版本在limit上有一个bug需要解决,patch:PHOENIX-2601
[How to] Phoenix 与 CDH5.4.2 HBase的整合的更多相关文章
- Phoenix连接安全模式下的HBase集群
Phoenix连接安全模式下的HBase集群 HBase集群开启安全模式(即启用kerberos认证)之后,用户无论是用HBase shell还是Phoenix去连接HBase都先需要通过kerber ...
- HBase详解(05) - HBase优化 整合Phoenix 集成Hive
HBase详解(05) - HBase优化 整合Phoenix 集成Hive HBase优化 预分区 每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维 ...
- hive与hbase的整合
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点学习成本低,可以通过类S ...
- Hive与Hbase关系整合
近期工作用到了Hive与Hbase的关系整合,虽然从网上参考了很多的资料,但是大多数讲的都不是很细,于是决定将这块知识点好好总结一下供大家分享,共同掌握! 本篇文章在具体介绍Hive与Hbase整合之 ...
- Phoenix实现用SQL查询HBase
博客已转移,请借一步说话,http://www.weixuehao.com/archives/111 HBase,一个NoSQL数据库,可存储大量非关系型数据. HBase,可以用HBase shel ...
- 大数据平台搭建 - cdh5.11.1 - hbase集群搭建
一.简介 HBase是一种构建在HDFS之上的分布式.面向列的存储系统.在需要实时读写.随机访问超大规模数据集时,可以使用HBase. 尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决 ...
- phoenix将hdfs数据导入hbase
http://phoenix.apache.org/bulk_dataload.html
- Hadoop Hive与Hbase关系 整合
用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Ha ...
- apache-kylin-2.5.2-bin-cdh57与cdh-5.13.0集群整合运用
1.下载kylin最新版apache-kylin-2.5.2-bin-cdh57: 2.解压配置环境变量: export BASE_PATH="/opt/cloudera/parcels/C ...
随机推荐
- 【NOI 2018】归程(Kruskal重构树)
题面在这里就不放了. 同步赛在做这个题的时候,心里有点纠结,很容易想到离线的做法,将边和询问一起按水位线排序,模拟水位下降,维护当前的各个联通块中距离$1$最近的距离,每次遇到询问时输出所在联通块的信 ...
- Apache Commons IO之FileUtils的常用方法
Apache Commons IO 在学习io流的时候研究(翻译)了一下这个,只有FileUtils的某些方法,并不全面,还请谅解 org.apache.commons.io 这个包下定义了基于 st ...
- bzoj2961&&bzoj4140 共点圆
题目描述 在平面直角坐标系中,Wayne需要你完成n次操作,操作只有两种: 1.0 x y.表示在坐标系中加入一个以(x, y)为圆心且过原点的圆. 2.1 x y.表示询问点(x, y)是否在所有已 ...
- 《剑指offer》— JavaScript(15)反转链表
反转链表 题目描述 输入一个链表,反转链表后,输出链表的所有元素. *** 思路 (本题链表默认无头结点) pHead为当前结点,如果当前结点为空的话,直接返回: pHead为当前结点,pre为当前结 ...
- where EXISTS (子查询)多对多中通过中间表查对方列表
用户表A,小组表B,小组和用户是多对多关系,中间有个中间表M 已知 小组 id 即teamId ,想知道这个小组中的用户列表信息,可以如下写sql: select * from A a where E ...
- ORB原理与源码解析
转载: http://blog.csdn.net/luoshixian099/article/details/48523267 CSDN-勿在浮沙筑高台 没有时间重新复制代码,只能一股脑的复制,所以代 ...
- 关于maven工程打jar的问题
今天对maven做一些整理,更好的理了下思路: 这个篇博客介绍的还是很详细的: http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.htm ...
- 报错laravel/horizon v1.4.3 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.的解决办法
执行composer install后报以下错误: Problem 1 - laravel/horizon v1.4.3 requires ext-pcntl * -> the requeste ...
- VMware 安装Ubuntu16.04时显示不全的解决方法
实际安装时发现进行到分区这个步骤时,看不到下面的按钮, 百度后得知有此遭遇的不在少数,是因为系统默认分辨率与电脑分辨率的差异导致的. 解决方法也很简单粗暴: 左手按住alt键右手鼠标往上拖动安装界面, ...
- CoreDNS配置kubernetes作为后端
概述 coredns之所以如此名声大噪,就是因为从kubernetes1.9开始引入,作为kubernetes内部服务发现的默认dns.毫无疑问kubernetes是coredns的后端之一,所以我们 ...