Phoenix安裝配置

Phoenix安裝配置

1.簡介

Phoenix最早是saleforce的一個(gè)開源項(xiàng)目,后來成為Apache基金的頂級項(xiàng)目

Phoenix是構(gòu)建在HBase上的一個(gè)SQL層,能讓我們用標(biāo)準(zhǔn)的JDBC APIs而不是HBase客戶端APIs來創(chuàng)建表、插入數(shù)據(jù)和對HBase數(shù)據(jù)進(jìn)行查詢

因此Phoenix跟HBase是離不開的,Phoenix的安裝也是基于HBase的。在安裝Phoenix之前,請確保集群上已經(jīng)安裝了Hadoop集群跟HBase集群

本集群上已部署CHD5.5.1版本的Hadooop(2.6.0)和HBase(1.0.0)

各節(jié)點(diǎn)規(guī)劃如下:

192.168.20.100 node-20-100 hdfs-master1 nn1     jn1 hmaster1
192.168.20.101 node-20-101 hdfs-master2 nn2 zk1 jn2 hmaster2        Phoenix
192.168.20.102 node-20-102 hdfs-slave1  dn1 zk2 jn3 hregionserver1
192.168.20.103 node-20-103 hdfs-slave2  dn2 zk3 jn4 hregionserver2
192.168.20.104 node-20-104 hdfs-slave3  dn3 zk4 jn5 hregionserver3
192.168.20.105 node-20-105 hdfs-slave4  dn4 zk5     hregionserver4

注意:Cloudera官方并不支持Phoenix,也就是說從Phoenix官網(wǎng)下的預(yù)編譯的包在CDH安裝的HBase上根本不能運(yùn)行,Phoenix官網(wǎng)對此也沒有任何說明?。?!剛開始按照Phoenix官網(wǎng)給出的步驟安裝完P(guān)hoenix后運(yùn)行報(bào)錯,幸好有StackOverflow,才找到了原因,并且找到解決方案。鏈接如下:
http://stackoverflow.com/questions/31849454/using-phoenix-with-cloudera-hbase-installed-from-repo

解決方案:
需要自己從Phoenix官網(wǎng)下載跟HBase版本對應(yīng)的Phoenix版本(Phoenix 4.x版本均支持HBase 1.0.0)的源碼來編譯,得到編譯后的兩個(gè)相關(guān)jar包。具體安裝步驟如下

2.安裝配置

Phoenix最新版本是4.8,4.x均支持HBase 1.0.0,這里選用Phoenix 4.6.0版本

2.1下載并解壓

從Phoenix官網(wǎng)下載預(yù)編譯的phoenix-4.6.0-HBase-1.0-bin.tar.gz

Phoenix客戶端所在的節(jié)點(diǎn)最好安裝有ZooKeeper,方便后續(xù)操作

這里選擇192.168.20.101節(jié)點(diǎn)作為Phoenix客戶端

  • 切換到/opt目錄下:$ cd /opt
  • wget:$ wget 'http://archive.apache.org/dist/phoenix/phoenix-4.6.0-HBase-1.0/bin/phoenix-4.6.0-HBase-1.0-bin.tar.gz'
  • 解壓:$ tar -xzvf phoenix-4.6.0-HBase-1.0-bin.tar.gz
  • 建立軟鏈接:$ ln -s phoenix-4.6.0-HBase-1.0-bin phoenix

2.2編譯源碼

如果從Phoenix官網(wǎng)下載4.6.0的源碼來編譯,需要自己修改pom.xml文件,比較麻煩。Github上已經(jīng)有人把修改過pom.xml文件的源碼上傳了,鏈接如下:
https://github.com/chiastic-security/phoenix-for-cloudera/tree/4.6-HBase-1.0-cdh5.5

下載該鏈接的源碼,用maven進(jìn)行編譯

  • 進(jìn)入phoenix-for-cloudera-4.6-HBase-1.0-cdh5.5目錄
  • $ mvn package -DskipTests

編譯成功后顯示如下:

compile succeed

2.3替換

將編譯后``phoenix-for-cloudera-4.6-HBase-1.0-cdh5.5/phoenix-assembly/target目錄下的phoenix-4.6.0-cdh5.5.1-client.jarphoenix-4.6.0-cdh5.5.1-server.jar分別替換/opt/phoenix目錄下的phoenix-4.6.0-HBase-1.0-client.jarphoenix-4.6.0-HBase-1.0-server.jar`

2.4將相關(guān)jar拷貝到HBase的lib目錄下

拷貝phoenix-4.6.0-cdh5.5.1-server.jar到集群上每個(gè)HBase的lib目錄下

$ cp phoenix-4.6.0-cdh5.5.1-server.jar /usr/lib/hbase/lib
$ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-100:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
$ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-102:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
$ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-103:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
$ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-104:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar
$ scp phoenix-4.6.0-cdh5.5.1-server.jar node-20-105:/usr/lib/hbase/lib/phoenix-4.6.0-cdh5.5.1-server.jar

2.5配置Phoenix客戶端的CLASSPATH

phoenix-4.6.0-cdh5.5.1-client.jar添加到Phoenix客戶端的CLASSPATH中,這里是192.168.20.101節(jié)點(diǎn)

在/etc/profile.d目錄下新建phoenix.sh

export CLASSPATH=.:/opt/phoenix/phoenix-4.6.0-cdh5.5.1-client.jar
$ source phoenix.sh

2.6配置hbase-site.xml

  • Master的hbase-site.xml
<property>
  <name>hbase.regionserver.wal.codec</name>
  <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</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.rpc.timeout</name>
  <value>300000</value>
</property>
  • Region Server的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 usesseparate 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 RPCScheduler that uses separate queues for index and metadataupdates</description>
</property>
 
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
</property>
<property>
   <name>hbase.rpc.timeout</name>
  <value>300000</value>
</property>

至此,Phoenix安裝配置完畢

3.驗(yàn)證是否可用

3.1進(jìn)入CLI

切換到/opt/phoenix/bin目錄下

$ chmod 777 sqlline.py
$ chmod 777 psql.py

運(yùn)行

$ ./sqlline.py localhost

結(jié)果如下:

install success

說明Phoenix安裝成功

3.2在終端執(zhí)行SQL腳本

運(yùn)行

$ ./sqlline.py localhost ../examples/STOCK_SYMBOL.sql

報(bào)錯:

null.png

解決:

examples/STOCK_SYMBOL.sql里第一行-- creates stock table with single row刪掉

重新運(yùn)行:

null.png

3.3加載數(shù)據(jù)

運(yùn)行:

$ psql.py localhost ../examples/web_stat.sql ../examples/web_stat.csv ../examples/web_stat_queries.sql

結(jié)果:

result
FullStackPlan

歡迎關(guān)注公眾號: FullStackPlan 獲取更多干貨哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容