依赖
hbase 依赖 zookeeper、hdfs (不需要 yarn),所以要先启动 zookeeper、hdfs,然后启动 hbase
必须配置 hadoop 环境变量
hbase 依赖 hadoop 环境变量,所以必须配置
执行下面命令:
vim /etc/profile.d/bigdata_env.sh
在末尾,使用 o 命令,添加下面内容:
# 配置 HADOOP_HOME
export HADOOP_HOME=/program/hadoop-3.0.3
export PATH=${HADOOP_HOME}/bin:$PATH
export PATH=${HADOOP_HOME}/sbin:$PATH
执行esc -> :wq
使立即生效
source /etc/profile
测试
hadoop
会显示 hadoop 命令的信息,表示配置成功
可能需要部署 hadoop
如果 hbase 要将数据保存到 HDFS,就必须要部署 hadoop
如果 hbase 要将数据保存到 本地,就不需要部署 hadoop
推荐部署 zookeeper
hbase内置 zookeeper,但亲测,启动内置zookeeper失败,只能单独安装zookeeper,见 链接
zookeeper 启动
zookeeper-3.4.x 单机启动、停止服务、查看服务状态、jps
说明
登录 hadoop1 虚拟机,进行下面操作
上传 hbase
上传 hbase-2.1.9-bin.tar.gz 到 /program 目录
解压
进入 /program 目录
cd /program
解压命令:
tar --no-same-owner -zxvf hbase-2.1.9-bin.tar.gz
查看解压结果
进入 /program 目录
cd /program
查看命令:
ll
看到 hbase-2.1.9 文件夹,说明成功
修改 hbase-env.sh
hbase-env.sh 配置了 hbase 的环境
进入 hbase 目录
cd /program/hbase-2.1.9/conf/
设置 JAVA_HOME
指定 java 绝对路径
使用 vim 编辑该文件:
vim hbase-env.sh
找到 export JAVA_HOME ,如果该行前面有 # ,就去掉 #,改成
# 指定jdk
export JAVA_HOME=/program/jdk1.8.0_202
可通过下面命令显示 java 绝对路径:
echo $JAVA_HOME
禁用自带ZooKeeper
找到 export HBASE_MANAGES_ZK ,如果该行前面有 # ,就去掉 #,改成
export HBASE_MANAGES_ZK=false
注意:如果不禁止,在启动 hbase 服务时,会自动篡改 3台服务器 zkData/myid 的值,导致整个 zk 服务不可启动
注意2:还需要将下面的 hbase.cluster.distributed 设置为 true,否则仍然会启动自带的 zookeeper
修改 hbase-site.xml
进入 hbase 目录
cd /program/hbase-2.1.9/conf/
vim hbase-site.xml
vim hbase-site.xml
增加内容
<!-- hbase数据在hdfs中的路径。namenode所在服务器 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:8020/hbase</value>
<!-- 下面是保存到本地,此时不需要部署hadoop -->
<!-- <value>file:///program/hbase-2.1.9/data</value> -->
</property>
<!-- false单机模式(会启动自带的zookeeper),true是分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- zookeeper快照的存放位置 -->
<!--
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/program/zookeeper-3.4.14/zkData/</value>
</property>
-->
<!-- v2.1版分布式情况下,设置为false -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
解释:
增加
hbase.unsafe.stream.capability.enforce配置,否则启动报错,详见 链接增加
hbase.wal.provider配置,否则启动后可能会报错
详见 hbase-2.1.x 错误 Could not initialize class org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper
复制 htrace.jar
必须复制,否则启动报错,找不到类
cp /program/hbase-2.1.9/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar /program/hbase-2.1.9/lib/
删除冲突的jar包(可略)
hbase的 lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar 与 hadoop 的 jar包冲突,启动服务时显示警告信息
删除 hbase 的 jar包即可,执行下面命令
mv /program/hbase-2.1.9/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar /program/hbase-2.1.9/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar.bak
增加环境变量
将 hbase 目录加入到环境变量中
执行下面命令:
vim /etc/profile
在文件下面增加以下内容:
# 配置 HBASE_HOME
export HBASE_HOME=/program/hbase-2.1.9
export PATH=${HBASE_HOME}/bin:$PATH
立即生效
source /etc/profile.d/bigdata_env.sh