HBase 高可用集群整合 Phoenix 配置
接上文:HBase 高可用集群配置
命令行参考:https://blog.csdn.net/ubuntu64fan/article/details/80832903
整合 phoenix 虽然简单,但是有坑。按照官网(http://phoenix.apache.org/installation.html )进行操作在新版本上基本不会成功!
首先确保你的 hbase ha 搭建完全正常(查看各节点日志 “$HBASE_HOME/logs/*.log” 文件里没有任何 ERROR)。好了,接下来做整合。
我采用 apache hbase-2.4.2 + phoenix-hbase-2.4-5.1.1-bin.tar.gz,下载(http://phoenix.apache.org/download.html)链接:
http://www.apache.org/dyn/closer.lua/phoenix/phoenix-5.1.1/phoenix-hbase-2.4-5.1.1-bin.tar.gz
将 phoenix-hbase-2.4-5.1.1-bin.tar.gz 解压到全部HBase的节点上,然后把下面2个 jar 复制到 $HBASE_HOME/lib 目录下(每个hbase节点都要这么做):
phoenix-server-hbase-2.4-5.1.1.jar
htrace-core-3.1.0-incubating.jar
其中 htrace-core-3.1.0-incubating.jar 我是从maven repo 下载的(这个巨坑,phoenix 居然没有携带):
将下面的配置段加入到全部HBase节点的hbase-site.xml 中:
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
接着,选中其中某台作为 phoenix 客户端(命令行和jdbc),仅作为 phoenix 客户端的机器需要配置如下环境变量(/etc/profile.d/phoenix-clienv.sh 名字任意):
export JAVA_HOME=/usr/local/java/jdk1.8.0_271
export JRE_HOME=$JAVA_HOME/jre
export ZK_HOME=/usr/local/apache/apache-zookeeper-3.5.9-bin
export PHOENIX_HOME=/opt/hacl/phoenix-hbase-2.4-5.1.1-bin
export PHOENIX_OPTS="-Djava.library.path=/opt/hacl/hadoop-3.3.0/lib/native"
export HBASE_CLIENT_HOME=/opt/hacl/hbase-2.4.2-client
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$PHOENIX_HOME:$PHOENIX_HOME/phoenix-client-hbase-2.4-5.1.1.jar:$HBASE_CLIENT_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PHOENIX_HOME/bin:$ZK_HOME/bin
就是要把 phoenix-client-hbase-2.4-5.1.1.jar 配置到 JAVA 的 CLASSPATH 里。然后把 $HBASE_HOME/conf/hbase-site.xml 复制到 $PHOENIX_HOME/bin/ 目录下,覆盖原有的文件。
接下来重启 HBase 集群。然后运行phoenix命令行客户端接入HBase:
cd $PHOENIX_HOME
bin/sqlline.py flink01,flink02,flink03
如下输出:
[root@flink01 phoenix-hbase-2.4-5.1.1-bin]# bin/sqlline.py flink01.pepstack.com
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect -p driver org.apache.phoenix.jdbc.PhoenixDriver -p user "none" -p password "none" "jdbc:phoenix:flink01.pepstack.com"
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hacl/phoenix-hbase-2.4-5.1.1-bin/phoenix-client-hbase-2.4-5.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hacl/hadoop-3.3.0/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Connecting to jdbc:phoenix:flink01.pepstack.com
Connected to: Phoenix (version 5.1)
Driver: PhoenixEmbeddedDriver (version 5.1)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
sqlline version 1.9.0
0: jdbc:phoenix:flink01.pepstack.com> !table
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+---------