MRS HBase对接phoenix指导

举报
kevin_chen 发表于 2020/10/15 20:07:41 2020/10/15
【摘要】 引言若使用Phoenix,需下载与当前使用MRS集群相对应的Phoenix版本,具体请参见http://phoenix.apache.org。其对应关系如表3-16所示: 表1-1 MRS与Phoenix版本对应关系一览表MRS版本Phoenix版本备注MRS 1.5.x及其之前版本无MRS内部提供MRS 1.6.x/MRS 1.7.x/MRS...

引言

若使用Phoenix,需下载与当前使用MRS集群相对应的Phoenix版本,具体请参见http://phoenix.apache.org。其对应关系如3-16所示:

                         表1-1 MRSPhoenix版本对应关系一览表

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.x

x.xx.x-HBase-2.0

例如,5.0.0-HBase-2.0

 

配置方式

MRS1.6之后的版本需要去官网下载第三方的phoenix包,然后进行如下配置:

1.         从官网(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>(IPHBase安装节点的IP,即所有MasterCore节点的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..."



l  请使用txt文本格式复制导入如上脚本,以避免导入格式错误问题。

l  <PHOENIX_HBASE_VERSION>:当前使用的phoenix版本。例如MRS 2.x之前可使用的phoenix版本为4.14.1-HBase-1.3MRS 2.x及之后可使用5.0.0-HBase-2.0

l  <MRS_VERSION>:当前使用的MRS版本。

l  <IPs>hbase的安装节点ip,以逗号分隔,即当前集群的Master节点和Core节点ip

l  执行脚本后,打印出“installing phoenix jars to hbase successfully...”字样则表示phoenix已安装成功。

3.         登录MRS Manager界面,重启HBase服务。

4.         配置phoenix客户端参数(未开启Kerberos认证集群可跳过此步骤)

a.         配置phoenix连接时使用的认证信息。进入$PHOENIX_HOME/bin,编辑hbase-site.xml文件,需配置参数如3-17所示。

表1-2 Phoenix参数配置

参数

描述

默认值

hbase.regionserver.kerberos.principal

当前集群regionserverprincipal

未设置

hbase.master.kerberos.principal

当前集群hmasterprincipal

未设置

hbase.security.authentication

初始化Phoenix连接时所采用的认证方式

kerberos

 

可配置参数。如下所示,

<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认证的安全集群中hbasekerberos用户,可搜索客户端中hbase-site.xml文件得到参数值。例如,客户端安装在master节点的/opt/client下,则可使用命令“grep "kerberos.principal" /opt/client/HBase/hbase/conf/hbase-site.xml -A1”获取,如3-10所示。

图1-2 获取hbaseprincipal

image.png

 

b.         修改Phoenix路径的bin目录下的sqlline.py脚本(例如:apache-phoenix-4.14.1-HBase-1.3-bin/bin/sqlline.py),添加hbase客户端的相关依赖信息如3-11所示。

图1-3 Phoenix依赖及zookeeper认证

image.png

 

详细配置。如下所示,

添加hbase clientlib(eg$HBASE_HOME/lib/*:)
添加相关认证(eg$HBASE_OPTS

使用方法

Phoenix支持SQL的方式来操作HBase。以下简单介绍使用SQL语句建表/插入数据/查询数据/删表等操作,Phoenix同样支持以JDBC的方式来操作HBase,具体请参见3.5.1 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 ManagerZookeeper集群配置。

2.若使用phoenix的索引功能,需在HBase服务端(包括HMasterRegionServer)添加如下配置(详情请参见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.         插入数据:

INSERT INTO TEST(id,name) VALUES ('1','jamee');


4.         查询数据:

SELECT * FROM TEST;


5.         删表:

DROP TABLE TEST;




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200