HBase的运行依赖于Zookeeper,Hadoop
HBase安装
1.解压文件
tar -zxvf hbase-1.3.1-bin.tar.gz
2.配置文件
1)hbase-env.sh 修改内容
export JAVA_HOME=/usr/local/jdk1.8.0_131
export HBASE_MANAGES_ZK=false
2)hbase-site.xml 修改内容
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:9000/HBase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/zookeeper-3.4.10/zkData</value>
</property>
</configuration>
3)修改conf/regionservers文件 配置regionserver列表
vim regionservers
hadoop1
...
4)将Hadoop配置文件拷贝到Hbase conf目录
cp core-site.xml /usr/local/hbase-2.0.3/conf/
cp hdfs-site.xml /usr/local/hbase-2.0.3/conf/
3.启动
1).启动方式
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
2).启动/停止服务
bin/start-hbase.sh
bin/stop-hbase.sh
4.HBase 页面查看结果
启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如:
http://hadoop1:16010
******************************************************************
常见错误
1.如果集群之间的节点时间不同步,会导致 regionserver 无法启动,抛出ClockOutOfSyncException 异常。
修复:
a.同步时间服
b.属性:hbase.master.maxclockskew 设置更大的值
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
2.hadopp 和Hbase 日志文件重复导致启动失败
running master, logging to /usr/local/hbase-2.0.3/bin/../logs/hbase-root-master-localhost.localdomain.out
SLF4J: Class path contains multiple SLF4J bindings.
修复:
删除Hbase lib下的sl4f的jar包
rm -rf slf4j-log4j12-1.7.25.jar
rm -rf slf4j-api-1.7.25.jar
3.本地单机部署hbase,想要使用独立zookeeper,不使用自带的
vim conf/hbase-env.sh
export HBASE_MANAGES_ZK=false
设置不使用自带zookeeper,这一步设置完按理说就可以使用独立的zookeeper程序了,但是总是报错:
Could not start ZK at requested port of 2181. ZK was started at port: 2182. Aborting as clients (e.g. shell) will not be able to find this ZK quorum.
如果hbase以standalone模式运行时,依然会去启动自带的zookeeper,export HBASE_MANAGES_ZK=false的设置就失败了,因此需要修改hbase.cluster.distributed属性为true
vim conf/hbase-site.xml
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
4. javaapi 连接本地hbase超时
hbase-site.xml增加配置
<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
5.异常
java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.
hbase-site.xml增加配置
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>