Phoenix 集成HBase

Phoenix 版本:phoenix-4.6.0-HBase-1.0

源码下载地址:

http://apache.cs.uu.nl/phoenix/phoenix-4.6.0-HBase-1.0/src/phoenix-4.6.0-HBase-1.0-src.tar.gz

应用下载地址:

http://apache.cs.uu.nl/phoenix/phoenix-4.6.0-HBase-1.0/bin/phoenix-4.6.0-HBase-1.0-bin.tar.gz

HBase        版本:1.0.0-cdh5.4.7

JDK              版本:1.7.0_45

Phoenix 编译

1、下载源码:

下载源码解压后需要修改文件有pom.xml、LocalIndexMerger.java、IndexSplitTransaction.java

1.1、Pom.xml位于phoenix-4.6.0-HBase-1.0-src 下

1.2、 LocalIndexMerger.java位于phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver

1.3、IndexSplitTransaction.java位于

phoenix-4.5_Orig/phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver

修改源码

pom.xml

1、将源码包源修改为cloudera 具体如下:

<id>cloudera</id>      <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>

</repository>

效果如下图

2、 修改HBase版本和cdh版本信息

将Hadoop依赖的版本修改为cloudera,HBase 也修改为cdh版本具体如下:

<!-- Hadoop Versions -->

<hbase.version>1.0.0-cdh5.4.7</hbase.version>

<hadoop-two.version>2.6.0-cdh5.4.7</hadoop-two.version>

<!-- Dependency versions -->

<commons-cli.version>1.2</commons-cli.version>

<hadoop.version>2.6.0-cdh5.4.7</hadoop.version>

<flume.version>1.5.0-cdh5.4.7</flume.version>

效果如下图:

修改IndexSplitTransaction.java

需要修改的地方位于84行

原来: rss.getServerName(), metaEntries);

修改后:rss.getServerName(), metaEntries, 1);

如下效果图:

修改IndexSplitTransaction.java

需要修改的地方位于291行

修改前:

daughterRegions.getSecond().getRegionInfo(), server.getServerName());

修改后:

daughterRegions.getSecond().getRegionInfo(), server.getServerName(), 1);

效果图如下:

重新编译

运行mvn clean install –DskipTests 即可

新jar 包

新jar 包在phoenix-assembly 下可以找到

Core 包位于phoenix-core 下

Phoenix 和hbase集成

官网安装步骤:http://phoenix.apache.org/installation.html#SQL_Client

Installation

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.

1、在HBase服务端下载phoenix 并解压,将上诉7个jar拷贝进来即可。

2、将新编译后的phoenix-4.6.0-HBase-1.0-server.jar拷贝到每一个RegionServer下 /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hbase/lib

3、在服务端配置环境变量

export HBASE_HOME=opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hbase
export CLASSPATH=.:$HBASE_HOME/lib/phoenix-4.6.0-HBase-1.0-server.jar:HBASE_HOME/lib/phoenix-4.6.0-HBase-1.0-client.jar

export PATH=$PATH:$JAVA_HOME/bin:$HBASE_HOME

4、重启RegionServer 服务

RegionServer假死状态

测试

在服务端Phoenix home目录下的bin 运行

./sqlline.py node1:2181

异常如下:

错误日志提示:

2016-01-13 14:20:27,197 WARN org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil: hbase.regionserver.global.memstore.upperLimit is deprecated by 
hbase.regionserver.global.memstore.size
2016-01-13 14:20:27,448 WARN com.cloudera.cmf.event.publish.EventStorePublisherWithRetry: Failed to publish event:
SimpleEvent{attributes={ROLE_TYPE=[REGIONSERVER], CATEGORY=[LOG_MESSAGE], ROLE=[hbase-REGIONSERVER-a1c374abf13fe24d8982a45aa379f538],
SEVERITY=[IMPORTANT], SERVICE=[hbase], HOST_IDS=[896038a6-2fe4-4e58-89ec-bae0f871ca0c], SERVICE_TYPE=[HBASE], LOG_LEVEL=[WARN],
HOSTS=[node3], EVENTCODE=[EV_LOG_EVENT]}, content=hbase.regionserver.global.memstore.upperLimit is deprecated by hbase.regionserver.global.memstore.size,
timestamp=1452666026857}
2016-01-13 14:20:27,722 INFO org.apache.hadoop.hbase.util.ServerCommandLine: env:CDH_FLUME_HOME=/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/flume-ng
2016-01-13 14:20:27,723 INFO org.apache.hadoop.hbase.util.ServerCommandLine: env:JAVA_HOME=/usr/java/default

错误信息

1、  RegionSever直接挂掉

参考地址:http://stackoverflow.com/questions/31849454/using-phoenix-with-cloudera-hbase-installed-from-repo

在phoenix 上配置HBase支持Phoenix二级索引

配置文件:在每一个RegionServer的hbase-site.xml里加入如下属性

<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.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
</property>

2、在每一个master的hbase-site.xml里加入如下属性

<property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.phoenix.hbase.index.balancer.IndexLoadBala ncer</value>
</property> <property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>

最新文章

  1. LINUX 查看当前系统的内存使用情况
  2. hibernate:Named query not known: findXXXX or XXXX is not mapped
  3. MyBatis入门学习(三)
  4. Android实现推送方式解决方案
  5. OAF_JDBC系列2 - 通过JDBC连接SQLSERVER数据库DriverManager.getConnection
  6. CSS background-position随笔
  7. isAssignableFrom与instanceof的区别
  8. SqlBulkCopy 类
  9. 基于Mesos运行Spark
  10. css如何li中选中后加上class属性js控制
  11. HTTP Cookie深入理解
  12. Fiddler捕获抓取 App端数据包
  13. andorid 开放工具集合
  14. 老李分享:jvm结构简介 2
  15. visual studio for mac在线安装网络错误
  16. Spring Security的核心拦截器
  17. [转载]Windows系统的错误报告保存在哪个文件夹里?
  18. C++内存管理-new,delete,new[],placement new的简单使用
  19. SkinTK编译使用
  20. 理解 CALayer ContentsCenter 属性

热门文章

  1. JFreeChart教程
  2. Qt5.2中使用ping命令实现Ip扫描功能
  3. python-面向对象中的特殊方法 ,反射,与单例模式
  4. 线性方程组迭代算法——Gauss-Seidel迭代算法的python实现
  5. 19-vim-分屏命令-01-末行命令扩展
  6. vue组件参数校验与非props特性
  7. leetcode-168周赛-1297-子串的最大出现次数
  8. hbase-2.0.4集群部署
  9. html根标签设置font-size为100px,使用rem,body没设置字体大小
  10. Boost Download