Hbase插件之Phoenix
版本關(guān)系
若使用Phoenix,需下載與當(dāng)前使用MRS集群相對(duì)應(yīng)的Phoenix版本,具體請(qǐng)參見http://phoenix.apache.org。其對(duì)應(yīng)關(guān)系如表1所示:
|
MRS版本 |
Phoenix版本 |
備注 |
|---|---|---|
|
MRS 1.5.x及其之前版本 |
無(wú) |
MRS內(nèi)部提供 |
|
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之后的版本需要去官網(wǎng)下載第三方的phoenix包,然后進(jìn)行如下配置:
從官網(wǎng)(https://phoenix.apache.org/download.html)下載phoenix二進(jìn)制包上傳至集群的任一Master節(jié)點(diǎn),解壓后修改相應(yīng)權(quán)限并切換到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、進(jìn)入apache-phoenix-4.14.1-HBase-1.3-bin中,在該目錄中編輯如下腳本,例如,腳本名稱為“installPhoenixJar.sh”,則需執(zhí)行命令為:“sh installPhoenixJar.sh <PHOENIX_HBASE_VERSION> <MRS_VERSION> <IPs>”(IP為HBase安裝節(jié)點(diǎn)的IP,即所有Master和Core節(jié)點(diǎn)的IP,并以當(dāng)前集群實(shí)際IP為準(zhǔn))。若使用MRS 1.8.6版本的集群對(duì)接Phoenix,則可執(zhí)行命令為:“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版本的集群對(duì)接Phoenix,則可執(zhí)行命令為“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 運(yùn)行腳本: 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
說(shuō)明: 請(qǐng)使用txt文本格式復(fù)制導(dǎo)入如上腳本,以避免導(dǎo)入格式錯(cuò)誤問(wèn)題。 <PHOENIX_HBASE_VERSION>:當(dāng)前使用的phoenix版本。例如MRS 2.x之前可使用的phoenix版本為4.14.1-HBase-1.3,MRS 2.x及之后可使用5.0.0-HBase-2.0。 <MRS_VERSION>:當(dāng)前使用的MRS版本。 <IPs>:hbase的安裝節(jié)點(diǎn)ip,以逗號(hào)分隔,即當(dāng)前集群的Master節(jié)點(diǎn)和Core節(jié)點(diǎn)ip。 執(zhí)行腳本后,打印出“installing phoenix jars to hbase successfully...”字樣則表示phoenix已安裝成功。
登錄MRS Manager界面,重啟HBase服務(wù)。
配置phoenix客戶端參數(shù)(未開啟Kerberos認(rèn)證集群可跳過(guò)此步驟)。
配置phoenix連接時(shí)使用的認(rèn)證信息。進(jìn)入$PHOENIX_HOME/bin,編輯hbase-site.xml文件,需配置參數(shù)如表 1 Phoenix參數(shù)配置所示。
可配置參數(shù)。如下所示,
<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>
說(shuō)明: 其中參數(shù)“hbase.master.kerberos.principal”和“hbase.regionserver.kerberos.principal”為開啟Kerberos認(rèn)證的安全集群中hbase的kerberos用戶,可搜索客戶端中hbase-site.xml文件得到參數(shù)值。例如,客戶端安裝在master節(jié)點(diǎn)的/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客戶端的相關(guān)依賴信息如圖2所示。
圖2Phoenix依賴及zookeeper認(rèn)證
詳細(xì)配置。如下所示,
添加hbase client的lib包(eg,$HBASE_HOME/lib/*:) 添加相關(guān)認(rèn)證(eg,$HBASE_OPTS)
使用方法
Phoenix支持SQL的方式來(lái)操作HBase。以下簡(jiǎn)單介紹使用SQL語(yǔ)句建表/插入數(shù)據(jù)/查詢數(shù)據(jù)/刪表等操作,Phoenix同樣支持以JDBC的方式來(lái)操作HBase,具體請(qǐng)參見SQL查詢。
1、連接Phoenix
source /opt/client/bigdata_env kinit MRS集群用戶(MRS集群用戶可以是內(nèi)置用戶hbase,或者已加入hbase組中的其他用戶,未開啟Kerberos認(rèn)證集群略過(guò)該命令) cd $PHOENIX_HOME bin/sqlline.py zookeerIp:2181
說(shuō)明: 1.MRS 1.6.2及以下版本ZooKeeper端口號(hào)為24002,詳見MRS Manager的Zookeeper集群配置。 2.若使用phoenix的索引功能,需在HBase服務(wù)端(包括HMaster和RegionServer)添加如下配置(詳情請(qǐng)參見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、插入數(shù)據(jù):
UPSERT INTO TEST(id,name) VALUES ('1','jamee');
4、查詢數(shù)據(jù):
SELECT * FROM TEST;
5、刪表:
DROP TABLE TEST;
總結(jié)
以上是生活随笔為你收集整理的Hbase插件之Phoenix的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: js学习之地图生成
- 下一篇: 一本通网站练习目录及AC代码(基础篇己完