安裝、部署hadoop和hbase的文章網上已經很多了,這裡說下自己安裝、部署時遇到的 一些問題。 1、 hadoop-env.sh的檔案裡添加: export HADOOP_CLASSPATH=$HBASE_HOME/hbase-0.20.3.jar:$HBASE_HOME/conf: $HBASE_HOME/lib/zookeeper-3.2.2.jar 注意紅色部分,網上的文檔沒提到,但不加的話利用Mapreduce提取Hbase資料時會說找不 到zookeeper相關類,還是加上省事! (這裡多說一點,個人覺得在 hadoop的檔案裡直接這樣制定HADOOP_CLASSPATH不是很好,會導緻其他在shell裡指定export HADOOP_CLASSPATH=...的無效,估計是沖突了。其他各式各樣的Mapreduce程式依賴的jar包總不能全部寫到hadoop- env.sh裡吧?是以,感覺把hbase和zookeeper兩個jar包直接放到hadoop的lib下更好點!) 2、 啟動Hbase時老啟動不了,都是些連結的問題,這個時候要查檢視機器的hosts設定是否正确。還有hbase的配置檔案,如hbase- site.xml、regionservers等檔案裡的機器最好寫域名,寫ip它不認,不知道是不是版本問題。 3、 hbase-site.xml的配置: <property> <name> hbase.rootdir</name> <value> hdfs://join191.hbase.xxx.net:9100/hbase</value> <description> </description> </property> <property> <name> hbase.master</name> <value> join191.hbase.xxx.net:60000</value> <description>The port master should bind to.</description> </property> <property> <name>hbase.cluster.distributed</name> <value>false</value> <description> </description> </property> <property> <name>hbase.zookeeper.quorum</name> <value> join191.hbase.xxx.net</value> <description></description> </property> 其中hbase.rootdir的hdfs://join191.hbase.xxx.net:9100 與 hadoop(core-site.xml)中的fs.default.name對應,當然,hadoop的配置裡可以用ip,hbase裡得用域名。保 證格式路徑一樣就行。 Hbase.master在hbase- default.xml裡是叫Hbase.master.port的,去掉port,把域名和端口寫一起也可以。 如果是分布式的話,把上面的hbase.cluster.distributed設定為true, 并在hbase-env.sh裡的設定export HBASE_MANAGES_ZK=true。 另外如果是把利用Mapreduce跑hbase程 序的工程打成jar包的話,個人偏向于把hbase-site.xml打進包裡(線上的配置),這樣省的node節點報一些zookeeper報一些錯誤 (因為這些光是在hbase裡配置還不行,因為是利用hadoop的Mapreduce程式運作,hadoop需要知道hbase的這個配置。當然,把這 個配置指定到hadoop的classpath或放到hadoop的conf下應該也行,不過沒試過)。