zoukankan      html  css  js  c++  java
  • Hbase插件之Phoenix

    版本关系

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

    表1 MRS与Phoenix版本对应关系一览表

    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包,然后进行如下配置:

    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>”(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已安装成功。
    1. 登录MRS Manager界面,重启HBase服务。
    2. 配置phoenix客户端参数(未开启Kerberos认证集群可跳过此步骤)。
      1. 配置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所示。

    图2 Phoenix依赖及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;
  • 相关阅读:
    第10组 Alpha冲刺(4/6)
    第10组 Alpha冲刺(3/6)
    第10组 Alpha冲刺(2/6)
    第10组 Alpha冲刺(1/6)
    第10组 团队Git现场编程实战
    第10组 团队项目-需求分析报告
    团队项目-选题报告
    【软件工程】Alpha冲刺(4/6)
    【软件工程】Alpha冲刺(3/6)
    【软件工程】Alpha冲刺(2/6)
  • 原文地址:https://www.cnblogs.com/hackerer/p/13575936.html
Copyright © 2011-2022 走看看