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的整合的更多相关文章

  1. Phoenix连接安全模式下的HBase集群

    Phoenix连接安全模式下的HBase集群 HBase集群开启安全模式(即启用kerberos认证)之后,用户无论是用HBase shell还是Phoenix去连接HBase都先需要通过kerber ...

  2. HBase详解(05) - HBase优化 整合Phoenix 集成Hive

    HBase详解(05) - HBase优化 整合Phoenix 集成Hive HBase优化 预分区 每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维 ...

  3. hive与hbase的整合

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点学习成本低,可以通过类S ...

  4. Hive与Hbase关系整合

    近期工作用到了Hive与Hbase的关系整合,虽然从网上参考了很多的资料,但是大多数讲的都不是很细,于是决定将这块知识点好好总结一下供大家分享,共同掌握! 本篇文章在具体介绍Hive与Hbase整合之 ...

  5. Phoenix实现用SQL查询HBase

    博客已转移,请借一步说话,http://www.weixuehao.com/archives/111 HBase,一个NoSQL数据库,可存储大量非关系型数据. HBase,可以用HBase shel ...

  6. 大数据平台搭建 - cdh5.11.1 - hbase集群搭建

    一.简介 HBase是一种构建在HDFS之上的分布式.面向列的存储系统.在需要实时读写.随机访问超大规模数据集时,可以使用HBase. 尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决 ...

  7. phoenix将hdfs数据导入hbase

    http://phoenix.apache.org/bulk_dataload.html

  8. Hadoop Hive与Hbase关系 整合

    用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Ha ...

  9. 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 ...

随机推荐

  1. 安装MySql出现Error Nr.1045的解决办法

    如图,最后一步出现这个错误框 这是因为上次安装过MySql,其用户数据在卸载的时候没有被删除掉,解决办法如下: 显示隐藏的文件夹,打开C盘,找到下图文件删除之 删除之后再安装一遍MySQL,就可以了

  2. BZOJ4868 [Shoi2017]期末考试 【三分 + 贪心】

    题目链接 BZOJ4868 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以 ...

  3. 【SDOI2015】序列统计 解题报告

    2119: [BZOJ3992][SDOI2015]序列统计 Description 小\(C\)有一个集合\(S\),里面的元素都是小于\(M\)的非负整数. 他用程序编写了一个数列生成器,可以生成 ...

  4. 【bzoj1078】 SCOI2008—斜堆

    http://www.lydsy.com/JudgeOnline/problem.php?id=1078 (题目链接) 题意 给出一个斜堆,并给出其插入的操作,求一个字典序最小的插入顺序. Solut ...

  5. Java的基本类型

    基本数据类型的加载和存储 极客时间深入理解Java虚拟机读后感,有错误还请指正 虚拟机中的Boolean类型 在Java语言规范中,boolean类型的值只有两种可能,那就是"true&qu ...

  6. java多线程 -- CountDownLatch 闭锁

    CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown ...

  7. List of NP-complete problems

    This is a list of some of the more commonly known problems that are NP-complete when expressed as de ...

  8. Spss22安装与破解步骤

    Spss22安装与破解教程 向师姐请教了一些学术问题,哈哈说的有点大,不过真的很感谢,学到了很多,少走了很多弯路. 1.下载安装包 可以去IBM官网.人大论坛等网站下载,全部文件应包括spss22安装 ...

  9. 【Asp.net入门09】第一个ASP.NET 应用程序-处理窗体(1)

    我们创建了一个HTML窗体,可以通过它显示受邀参加晚会的嘉宾,但是,当嘉宾单击Submit RSVP按钮时,同一个页面会反复多次显示.为了解决此问题,需要实现一段代码,用于在将窗体数据发布到服务器时执 ...

  10. CSS之display样式

    一.前言 行内标签:类似span,无法设置高度,宽度,padding,margin 块级标签:类似div,可以设置高度,宽度,padding,margin 默认情况下是这个样子的,但是可以通过disp ...