作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/6898227.html 转载请注明出处

最近由于想调研下低延迟的数据查询框架,那么基于SQL on Hbase的Phoenix是必不可少的,先熟悉下它的编译和部署并记录下过程

Phoenix编译

由于当前我的测试集群是CDH5.4.0,而它并没有把phoenix include进去,因为需要自己修改phoenix的pom依赖及几个类文件,然后进行编译后才能使用,过程如下

源码下载

先去GitHub下载v4.6.0-Hbase-1.0的源码zip包,解压后导入到本地IDE.

源码修改

  1. 先修改repository下的依赖,让phoenix依赖CDH的repository而不依赖apache原生的,修改完如下截图
  2. 修改几个重要的依赖组件如hbase,flume,hadoop等版本依赖,如下图所示,全部修改成CDH的对应版本

    注意上图我本来想修改pig也为对应CDH版本的,但是修改后无法编译成功,因此暂时不动它了.
  3. 修改LocalIndexMerger.java类中82行rmt.prepareMutationsForMerge方法调用,添加第6个参数传值为1
  4. 修改IndexSplitTransaction.java类中275行MetaTableAccessor.splitRegion方法调用,添加第6个参数传值为1

源码编译

第二步中修改完成后,直接在phoenix源代码根目录下执行mvn clean install -DskipTests后等待编译成功
随后可以去phoenix-assembly\target目录下查看结果,如下图

Phoenix部署

编译完成后,上面结果图中除了phoenix-4.6.0-HBase-1.0.tar.gz是已经打包好解压后就可以直接用的phoenix外,其他的7个jar包都是必不可少的,随后需要进行几步安装和部署才能使用,如下

phoenix安装

To install a pre-built phoenix, use these directions:
Download and expand the latest phoenix-[version]-bin.tar.
Add the phoenix-[version]-server.jar to the classpath of all HBase region server and master and remove any previous version. An easy way to do this is to copy it into the HBase lib directory (use phoenix-core-[version].jar for Phoenix 3.x)
Restart HBase.
Add the phoenix-[version]-client.jar to the classpath of any Phoenix client.

可以参考官网这句描述,这里不用再download官网的phoenix-[version]-bin.tar了,上面的phoenix-4.6.0-HBase-1.0.tar.gz可以直接用,如果不放心的话可以去官网download,具体步骤如下

  • 在Hbase集群任意一节点下解压phoenix-4.6.0-HBase-1.0.tar.gz,随后将那7个jar包拷贝到解压后的lib目录下(如果存在其他版本需要先删除掉)
  • 将phoenix-4.6.0-HBase-1.0-server.jar拷贝到每一个regionserver以及master的classpath下,这里基于CDH,可以做如下拷贝
    比如,cp phoenix-4.6.0-HBase-1.0-server.jar /opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/lib/hbase/lib
  • 重启Hbase集群

Phoenix测试

进入phoenix根目录的bin下,执行./sqlline.py localhost:2181,出现如下结果表示phoenix安装成功

Phoenix编译支持CDH的更多相关文章

  1. 1、Spark 2.1 源码编译支持CDH

    目前CDH支持的spark版本都是1.x, 如果想要使用spark 2x的版本, 只能编译spark源码生成支持CDH的版本. 一.准备工作 找一台Linux主机, 由于spark源码编译会下载很多的 ...

  2. Gobblin编译支持CDH5.4.0

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 Gobblin的前身是linkedin的Camus,好多人也用过,准备用Gobblin的方式来抽 ...

  3. PHP编译支持mysqli

    PHP编译支持mysqli前提是必须安装mysql直接上命令先进入源码包我的源码包是在/usr/local/php-5.2.1/ext/mysqli这样进入 cd /usr/local/php-5.2 ...

  4. Mac系统下编译支持Android平台的最新X264编码器

    Mac系统下编译支持Android平台的最新X264编码器 原文来自 http://www.mingjianhua.com,转载请注明出处 1.首先去官网下载最新的x264源代码,解压到任意目录 ht ...

  5. nginx编译支持HTTP2.0

    nginx编译支持HTTP2.0 nginx编译支持HTTP2.0 wget https://www.openssl.org/source/openssl-1.1.0i.tar.gz #openssl ...

  6. xmake v2.5.7 发布,包依赖锁定和 Vala/Metal 语言编译支持

    xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...

  7. xmake v2.6.1 发布,使用 Lua5.4 运行时,Rust 和 C++ 混合编译支持

    xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...

  8. Android Studio增加NDK代码编译支持--Mac环境

    Android的APP开发基本都是使用Java或者跨平台框架进行开发的,对于很多APP来说已经足够了,但是,对于提供功能给外部使用或者性能要求很高的需求下,如图像处理等,可能会需要C/C++库的支持, ...

  9. 实战FFmpeg编译支持arm64(转)

    App store要求上架的app必须支持arm64.而手中的ffmpeg还不支持arm64, 百度下ffmpeg支持arm64方法,网上有很多资料.其中一篇是使用脚本自动编译实现的.本文就是使用它的 ...

随机推荐

  1. 如何在VS2010中更好的编写JavaScript代码

    VS2010默认的JavaScript代码编辑器相对简单.对于大家熟悉的代码折叠,代码结构.函数导航,代码高亮等都不支持,使用很不便.下面介绍下我发现的几个VS2010插件,具有哪些功能,如何安装和使 ...

  2. IOS开发学习笔记039-autolayout 代码实现

    本文转载至 http://www.cnblogs.com/songliquan/p/4548206.html 1.代码实现比较复杂 代码实现Autolayout的步骤 利用NSLayoutConstr ...

  3. c#基础 第六讲

    烧开水 先询问:“是否要烧开水(Y/N)” 是的话执行--0°--100°(30°---水温了,50°---水热了,80°---水快开了,100°---水已经开了, 结束.) 判断 循环 选择 跳转 ...

  4. 使用jquery修改标题$("title").html("标题")应注意的问题

    使用jquery修改标题$("title").html("标题")应注意的问题: 如果修改后的标题和原标题一致,jquery会跳过该操作,这种情况再从其他页面回 ...

  5. 常用SEO优化技巧

    SEO是指搜索引擎优化 搜索引擎优化是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式.SEO的目的理解是:为网站提供生态式的自我营销解决方案,让网站在行业内占据领先地位,从而 ...

  6. 使用RODBC连接MySQL数据库(R-3.4.3)

    1.安装RODBC包 install.packages("RODBC") 2.配置ODBC 首先查看是否有mysqlODBC5.1Driver  如果没有mysqlODBC5.1D ...

  7. Ta-lib K线模式识别

    1, CDL2CROWS (Two Crows 两只乌鸦) 简介:三日K线模式,第一天长阳,第二天高开收阴,第三天再次高开继续收阴,收盘比前一日收盘价低,预示股价下跌. 例子:integer = CD ...

  8. Python 进程(process)

    1. 进程 1.1 进程的创建 fork 正在运行着的代码,就称为进程 # 示例: import os # 注意: fork 函数,只在 Unix/Linux/Mac 上运行, windows 不可以 ...

  9. js获取浏览器信息及版本(兼容IE)

    获取浏览器信息方法有很多种,但是要是兼容ie旧版本就有点麻烦了,因为很多方法在旧版本ie是不支持的,所以ie我做了单独处理,但是目前还有小问题,就是想显示QQ浏览器,搜狗浏览器..这样的,这样还实现不 ...

  10. 手动编译安装Libvirt之后利用systemctl管理libvirtd服务

    因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...