搭建Zookeeper與Hbase過程及遇到的問題總結

個人經驗是最好放在hadoop一塊,這樣能夠作個全盤拷貝與管理。好比以前安裝的hadoop在/usr/hadoop目錄下,那就把這2個組件放在一塊,好比統一放在:/usr/hadoop/...或 /home/hadoop/...這樣之後再有組件也能夠放在這裏,方便了後續集羣的從新部署。爲了避開混淆,能夠不使用hadoop,如使用:hdfs,bigdata, cloud,and so on. java

1.安裝zookeeper,自沒必要說,須要說明的是配置問題。 shell

 (1)在conf目錄下,將 zoo_sample.cfg 更名爲 zoo.cfg,修改成以下內容: apache

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/home/hdfs/zookeeper
# the port at which the clients will connect
clientPort=2181
initLimit=5
syncLimit=2
dataLogDir=/home/hdfs/zookeeper/logs
server.1=192.168.1.70:2888:3888
server.2=192.168.1.71:2888:3888
server.3=192.168.1.72:2888:3888
server.4=192.168.1.73:2888:3888
(2)建立myid文件與logs目錄 


1) myid文件是在zookeeper_home下直接新建一個myid文件,並在裏面寫入編號。編號的肯定是根據zoo.cfg裏 本身ip對應的 server.X  app

2)logs目錄也是本身手動建立的。 oop

2.安裝hbase 測試

解壓安裝後,修改conf 裏的配置文件: spa

(1) hbase-env.sh 命令行

export JAVA_HOME=/usr/java/jdk1.7.0_17/
export HBASE_CLASSPATH=/usr/hadoop/conf
export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
#export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
export HBASE_MANAGES_ZK=false

export HBASE_PID_DIR=/home/hdfs/pids  #目錄應該爲hadoop:hadoop全部,以避免發生權限問題


要注意的是:   HBASE_MANAGES_ZK 和 HBASE_PID_DIR code

(2)hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://Master.Hadoop:9000/hbase</value>
	</property>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>
	<property>
		<name>hbase.master</name>
		<value>192.168.1.70:60000</value>
	</property>
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>192.168.1.71,192.168.1.72,192.168.1.73</value>
	</property>
	<!-- End of properties that are directly mapped from ZooKeeper's zoo.cfg -->
</configuration>

(3)regionservers server

在regionservers添加slaves的ip:

192.168.1.71
192.168.1.72
192.168.1.73

3.啓動/測試

啓動順序:hadoop-->zookeeper-->hbase

關閉順序:hbase-->zookeeper-->hadoop

1)啓動zookeeper

zookeeper的啓動須要分別在每一個計算機的節點上手動啓動。進入zookeeper/bin目錄: 

[... bin]$ ./zkServer.sh start
[... bin]$ jps
#啓動成功應該含有:QuorumPeerMain 進程

查看狀態:(已所有手動啓動集羣中的zookeeper)
[... bin]$ ./zkServer.sh status
......
#會顯示 Model:follower/leader 

關閉zookeeper
[... bin]$ ./zkServer.sh stop

2)啓動hbase

在hbase的bin下進行操做:(注意順序)

[... bin]$ ./hbase-daemon.sh start master //啓動Master
[... bin]$ ./start-hbase.sh
[... bin]$ ./hbase shell //shell命令行接口,進入後可以使用list顯示tables
……

[... bin]$ ./hbase-daemon.sh stop master //啓動Master
[... bin]$ ./stop-hbase.sh

能夠經過:http://192.168.1.70:60010/master-status 查看hbase容許狀態,也可經過其判斷是否成功啓動。

4.錯誤解決及排除

(1)zookeeper遇到的問題:

1)Error contactiong service. It is probably not runnin

查看zookeeper狀態時出現:Error contactiong service. It is probably not running

先使用jps查看是否有QuorumPeerMain;

再查看2181端口是否開啓:   netstat -an | grep 2181 

若是這2項都沒有問題,緣由多是你只是單機啓動,集羣中其餘計算機並無啓動zookeeper,把集羣中其餘的啓動後再使用此命令。並且此命令功能太過單一,反饋信息也不許確。 


(2)Hbase遇到的問題

ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times

問題發生在list 查看錶時,經過查看 logs/ 下的日子信息:

stopping hbasecat: /tmp/hbase-mango-master.pid: No such file or directory  

發現是HBASE_PID_DIR 沒有配置,使用的是默認配置,可是默認配置會在下次啓動後自動清除,因此須要手動配置並建立相應的文件。(參考:hbase-env.sh)  

(3)hadoop遇到的問題

All directories in dfs.data.dir are invalid

這個問題之前沒有遇到過,並且在以前節點啓動正常,但此次不知道是何緣由。

經過:hadoop dfsadmin -report 發現一個節點沒有啓動,經過查看此節點的logs信息,發現是文件權限引發的:Invalid directory in dfs.data.dir: Incorrect permission for /hadoop/hadoop-data, expected: rwxr-xr-x, while actual: rwxrwxr-x 

更改權限,文件解決:chmod g-w /hadoop/hadoop-data/    (其餘節點權限和之前同樣卻沒有出現這問題,好奇怪~~)

Ps:最有效、快速定位錯誤的方法是看logs,千萬不要忽視了哦! 

相關文章
相關標籤/搜索