Hbase插件之Phoenix
版本關系
若使用Phoenix,需下載與當前使用MRS集群相對應的Phoenix版本,具體請參見http://phoenix.apache.org。其對應關系如表1所示:
|
MRS版本 |
Phoenix版本 |
備注 |
|---|---|---|
|
MRS 1.5.x及其之前版本 |
無 |
MRS內部提供 |
|
MRS 1.6.x/MRS 1.7.x/MRS 1.8.x |
x.xx.x-HBase-1.3 |
例如,4.14.1-HBase-1.3 |
|
MRS 2.0 |
x.xx.x-HBase-2.0 |
例如,5.0.0-HBase-2.0 |
配置方式
MRS1.6之后的版本需要去官網下載第三方的phoenix包,然后進行如下配置:
從官網(https://phoenix.apache.org/download.html)下載phoenix二進制包上傳至集群的任一Master節點,解壓后修改相應權限并切換到omm用戶下(例如,apache-phoenix-4.14.1-HBase-1.3-bin.tar.gz)。
tar –xvf apache-phoenix-4.14.1-HBase-1.3-bin.tar.gz chown omm:wheel apache-phoenix-4.14.1-HBase-1.3-bin -R su - omm
2、進入apache-phoenix-4.14.1-HBase-1.3-bin中,在該目錄中編輯如下腳本,例如,腳本名稱為“installPhoenixJar.sh”,則需執行命令為:“sh installPhoenixJar.sh <PHOENIX_HBASE_VERSION> <MRS_VERSION> <IPs>”(IP為HBase安裝節點的IP,即所有Master和Core節點的IP,并以當前集群實際IP為準)。若使用MRS 1.8.6版本的集群對接Phoenix,則可執行命令為:“sh installPhoenixJar.sh 4.14.1-HBase-1.3 1.8.6 xx.xx.xx.xx,xx.xx.xx.xx,xx.xx.xx.xx,xx.xx.xx.xx”,若使用MRS 2.0.1版本的集群對接Phoenix,則可執行命令為“sh installPhoenixJar.sh 5.0.0-HBase-2.0 2.0.1 xx.xx.xx.xx,xx.xx.xx.xx,xx.xx.xx.xx,xx.xx.xx.xx”,腳本如下所示:
#!/bin/bash
PHOENIX_HBASE_VERSION=$1
shift
MRS_VERSION=$1
shift
IPs=$1
shift
check_cmd_result() {
echo "executing command: $*"
str="$@"
if [ ${#str} -eq 7 ]; then
echo "please check input args, such as, sh installPhoenixJar.sh 5.0.0-HBase-2.0 2.0.1 xx.xx.xx.xx,xx.xx.xx.xx,xx.xx.xx.xx"
exit 1
fi
if ! eval $*
then
echo "Failed to execute: $*"
exit 1
fi
}
check_cmd_result [ -n "$PHOENIX_HBASE_VERSION" ]
check_cmd_result [ -n "$MRS_VERSION" ]
check_cmd_result [ -n "$IPs" ]
if [ ${MRS_VERSION}X = "1.8.5"X ]; then
MRS_VERSION="1.8.3"
fi
if [[ ${MRS_VERSION} =~ "1.6" ]]; then
WORKDIR="FusionInsight"
elif [[ ${MRS_VERSION} =~ "1.7" ]]; then
WORKDIR="MRS"
else
WORKDIR="MRS_${MRS_VERSION}/install"
fi
check_cmd_result HBASE_LIBDIR=$(ls -d /opt/Bigdata/${WORKDIR}/FusionInsight-HBase-*/hbase/lib)
# copy jars to local node.
check_cmd_result cp phoenix-${PHOENIX_HBASE_VERSION}-server.jar ${HBASE_LIBDIR}
check_cmd_result cp phoenix-core-${PHOENIX_HBASE_VERSION}.jar ${HBASE_LIBDIR}
check_cmd_result chmod 700 ${HBASE_LIBDIR}/phoenix-${PHOENIX_HBASE_VERSION}-server.jar
check_cmd_result chmod 700 ${HBASE_LIBDIR}/phoenix-core-${PHOENIX_HBASE_VERSION}.jar
check_cmd_result chown omm:wheel ${HBASE_LIBDIR}/phoenix-${PHOENIX_HBASE_VERSION}-server.jar
check_cmd_result chown omm:wheel ${HBASE_LIBDIR}/phoenix-core-${PHOENIX_HBASE_VERSION}.jar
if [[ "$MRS_VERSION" =~ "2." ]]; then
check_cmd_result rm -rf ${HBASE_LIBDIR}/htrace-core-3.1.0-incubating.jar
check_cmd_result rm -rf /opt/client/HBase/hbase/lib/joda-time-2.1.jar
check_cmd_result ln -s /opt/share/htrace-core-3.1.0-incubating/htrace-core-3.1.0-incubating.jar
${HBASE_LIBDIR}/htrace-core-3.1.0-incubating.jar
check_cmd_result ln -s /opt/share/joda-time-2.1/joda-time-2.1.jar /opt/client/HBase/hbase/lib/joda-time-2.1.jar
fi
# copy jars to other nodes.
localIp=$(hostname -i)
ipArr=($(echo "$IPs" | sed "s|\,| |g"))
for ip in ${ipArr[@]}
do
if [ "$ip"X = "$localIp"X ]; then
echo "skip copying jar to local node."
continue
fi
check_cmd_result scp ${HBASE_LIBDIR}/phoenix-${PHOENIX_HBASE_VERSION}-server.jar ${ip}:${HBASE_LIBDIR} 2>/dev/null
check_cmd_result scp ${HBASE_LIBDIR}/phoenix-core-${PHOENIX_HBASE_VERSION}.jar ${ip}:${HBASE_LIBDIR} 2>/dev/null
if [[ "$MRS_VERSION" =~ "2." ]]; then
check_cmd_result ssh $ip "rm -rf ${HBASE_LIBDIR}/htrace-core-3.1.0-incubating.jar" 2>/dev/null
check_cmd_result ssh $ip "rm -rf /opt/client/HBase/hbase/lib/joda-time-2.1.jar" 2>/dev/null
check_cmd_result ssh $ip "ln -s /opt/share/htrace-core-3.1.0-incubating/htrace-core-3.1.0-incubating.jar
${HBASE_LIBDIR}/htrace-core-3.1.0-incubating.jar" 2>/dev/null
check_cmd_result ssh $ip "ln -s /opt/share/joda-time-2.1/joda-time-2.1.jar /opt/client/HBase/hbase/lib/joda-time-2.1.jar" 2>/dev/null
fi
done
echo "installing phoenix jars to hbase successfully..."
華為hbase目錄: /opt/huawei/Bigdata/FusionInsight_HD_6.5.0/install/FusionInsight-HBase-1.3.1/hbase/lib ./sqlline.py 192.168.52.173,192.168.52.174:24002 運行腳本: sh installPhoenixJar.sh 4.14.2-HBase-1.3 1.6 192.168.52.172,192.168.52.173,192.168.52.174 [root@192-168-52-171 client]# grep "kerberos.principal" /opt/client/HBase/hbase/conf/hbase-site.xml -A1
說明: 請使用txt文本格式復制導入如上腳本,以避免導入格式錯誤問題。 <PHOENIX_HBASE_VERSION>:當前使用的phoenix版本。例如MRS 2.x之前可使用的phoenix版本為4.14.1-HBase-1.3,MRS 2.x及之后可使用5.0.0-HBase-2.0。 <MRS_VERSION>:當前使用的MRS版本。 <IPs>:hbase的安裝節點ip,以逗號分隔,即當前集群的Master節點和Core節點ip。 執行腳本后,打印出“installing phoenix jars to hbase successfully...”字樣則表示phoenix已安裝成功。
登錄MRS Manager界面,重啟HBase服務。
配置phoenix客戶端參數(未開啟Kerberos認證集群可跳過此步驟)。
配置phoenix連接時使用的認證信息。進入$PHOENIX_HOME/bin,編輯hbase-site.xml文件,需配置參數如表 1 Phoenix參數配置所示。
可配置參數。如下所示,
<property> <name>hbase.regionserver.kerberos.principal</name> <value>hbase/hadoop.hadoop.com@HADOOP.COM</value> </property> <property> <name>hbase.master.kerberos.principal</name> <value>hbase/hadoop.hadoop.com@HADOOP.COM</value> </property> <property> <name>hbase.security.authentication</name> <value>kerberos</value> </property>
說明: 其中參數“hbase.master.kerberos.principal”和“hbase.regionserver.kerberos.principal”為開啟Kerberos認證的安全集群中hbase的kerberos用戶,可搜索客戶端中hbase-site.xml文件得到參數值。例如,客戶端安裝在master節點的/opt/client下,則可使用命令“grep "kerberos.principal" /opt/client/HBase/hbase/conf/hbase-site.xml -A1”獲取,如圖1所示。 圖1 獲取hbase的principal
修改Phoenix路徑的bin目錄下的sqlline.py腳本(例如:apache-phoenix-4.14.1-HBase-1.3-bin/bin/sqlline.py),添加hbase客戶端的相關依賴信息如圖2所示。
圖2Phoenix依賴及zookeeper認證
詳細配置。如下所示,
添加hbase client的lib包(eg,$HBASE_HOME/lib/*:) 添加相關認證(eg,$HBASE_OPTS)
使用方法
Phoenix支持SQL的方式來操作HBase。以下簡單介紹使用SQL語句建表/插入數據/查詢數據/刪表等操作,Phoenix同樣支持以JDBC的方式來操作HBase,具體請參見SQL查詢。
1、連接Phoenix
source /opt/client/bigdata_env kinit MRS集群用戶(MRS集群用戶可以是內置用戶hbase,或者已加入hbase組中的其他用戶,未開啟Kerberos認證集群略過該命令) cd $PHOENIX_HOME bin/sqlline.py zookeerIp:2181
說明: 1.MRS 1.6.2及以下版本ZooKeeper端口號為24002,詳見MRS Manager的Zookeeper集群配置。 2.若使用phoenix的索引功能,需在HBase服務端(包括HMaster和RegionServer)添加如下配置(詳情請參見https://phoenix.apache.org/secondary_indexing.html): <property> <name>hbase.regionserver.wal.codec</name> <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value> </property>
2、建表:
CREATE TABLE TEST (id VARCHAR PRIMARY KEY, name VARCHAR);
3、插入數據:
UPSERT INTO TEST(id,name) VALUES ('1','jamee');
4、查詢數據:
SELECT * FROM TEST;
5、刪表:
DROP TABLE TEST;
總結
以上是生活随笔為你收集整理的Hbase插件之Phoenix的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js学习之地图生成
- 下一篇: vsftpd.conf 详解与实例配置