hbase、phoenix安装

201 阅读2分钟

hbase

说明

本文沿袭上篇,使用三台虚拟机模拟分布式,已经搭建好了hadoop环境。下载的hbase版本为2.4.11

配置

解压hbase压缩包到任意目录,以/export/server/hbase-2.4.11/为例。解压完毕后,进入conf目录。

  • 指定java目录及zk管理模式
vim hbase-env.sh

export JAVA_HOME=/export/server/jdk1.8.0_341/
# 使用hbase自带的管理,否则要下载zk
export HBASE_MANAGES_ZK=true
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
  • hbase核心配置
vim hbase-site.xml

<configuration>
    <!-- HBase数据在HDFS中的存放的路径 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://192.168.88.128:8020/hbase</value>
    </property>
    <!-- Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- ZooKeeper的地址 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>192.168.88.128</value>
    </property>
    <!-- ZooKeeper快照的存储位置 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/export/server/hbase-2.4.11/zookeeper</value>
    </property>
    <!--  V2.1版本,在分布式情况下, 设置为false -->
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>


</configuration>
  • 配置环境变量
vim /etc/profile

export HBASE_HOME=/export/server/hbase-2.4.11
export PATH=$PATH:$HBASE_HOME/bin:$HBASE_HOME/sbin

编译环境变量,source /etc/profile

  • 设置集群所在的网络地址
vim regionservers

192.168.88.128
192.168.88.129
192.168.88.130
  • 进入lib目录,复制关键jar包
cp client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar .
  • 将hbase及环境变量文件同步到其他两个节点,执行编译

启动

start-hbase.sh

启动后,控制台会输出写到日志文件的路径,如果启动有什么问题,可以通过日志文件排查

使用jps命令,如果启动成功,node1会多出三个进程,分别是HQuorumPeerHMasterHRegionServer。查看hdfs,发现根目录多出hbase目录。在浏览器输入node1所在服务器地址加上16010端口,可查看hbase管理界面,如192.168.88.128:16010,Region Servers也会显示相应的节点

image.png

问题记录

使用stop-hbase.sh关闭服务,发现关闭不了。查看日志,一直输出Waiting for dfs to exit safe mode...

hadoop处于安全模式,所以关闭不了。使用hadoop dfsadmin -safemode get查看状态,确定处于ON模式,之后使用命令hadoop dfsadmin -safemode leave关闭安全模式,再关闭hbase,就可以了

image.png

phoenix

说明

phoenix的版本要与hbase版本对应,如果对应不上,可能会有未知问题。本文使用版本为2.4.0。在进行配置之前,要先关闭hbase服务

配置

解压phoenix压缩包到任意目录,以/export/server/phoenix-2.4.0/为例。解压完毕后,进入hbase的conf目录。

  • 追加配置,以支持phoenix
vim hbase-site.xml

<!-- 支持HBase命名空间映射 -->
<property>
    <name>phoenix.schema.isNamespaceMappingEnabled</name>
    <value>true</value>
</property>
<!-- 支持索引预写日志编码 -->
<property>
    <name>hbase.regionserver.wal.codec</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>

  • 进入lib目录,复制关键jar包
cp ../../phoenix-2.4.0/phoenix-server-hbase-2.4-5.1.3.jar .
  • 覆盖phoenix配置文件
cp hbase-site.xml ../../phoenix-2.4.0/bin/
  • 将hbase-site.xml及新增jar包同步到其他两个节点

连接

首先启动hbase,然后进入phoenix的bin目录

./sqlline.py 172.168.88.128:2181

没有异常,且控制台显示sqlline version 1.9.0,说明启动成功。浏览器查看hbase管理界面,发现SYSTEM命名空间下多了几张数据表,下图是新增的部分表

image.png

问题记录

连接zookeeper,发现sqlline一直卡住,或者一连接regionServers全挂了

确保:

  1. hbase-site.xml文件中,有配置ZooKeeper存储位置,且phoenix可访问该位置
  2. hbase的lib目录有且仅有phoenix-server-hbase-2.4-5.1.3.jar这个jar包

启动hbase,报错java.lang.AbstractMethodError: org.apache.phoenix.trace.PhoenixMetricsSink.init(Lorg/apache/commons/configuration/SubsetConfiguration;)V

首次启动hbase时,hdfs还没有hbase目录,这个时候还不能添加phoenix的jar包,配置文件也不能添加与phoenix有关的配置项。

不同版本可能报的异常不一样,但是如果与phoenix有关,大概率是这个问题