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>