Hbase是建立在Hadoop基礎上的數據倉庫,安裝前首先要確保Hadoop分佈式集羣已經建立完成,運行正常。 Habse也有主和從的概念,Hbase的程序要安裝在集羣所有機器上。
要運行集羣的Hbase,首先要配置好zookeeper。 如果你沒有配置好zookeeper,在啓動Hbase的時候就會看見從機上報錯 Exception in thread "regionserver60020" java.lang.NullPointerException
zookeeper是做分佈式系統的同步,命名,配置管理等用的。 這個Hbase本身也帶有一個zookeeper,這裏選擇自己先安裝zookeeper。 方法很簡單,只要在主機上裝就可以了,下載程序包,tar zxvf 解壓到一個目錄下,把這個目錄的owner換成你要運行hbase和zookeeper的用戶,一般也就是運行hadoop的用戶。 然後把它的bin添加到PATH裏。在conf目錄下配置一個zoo.cfg文件,對於一臺機器,很簡單:把zoo_sample.cfg拷過來。 然後把dataDir改一下就可以,記得把那個目錄的owner設爲運行zookeeper的用戶。
實際運行環境爲了安全要多幾個機器組成quorum,相互之間同步。方法看官網。
接下來Hbase的配置,下載程序包,同樣tar 解壓到目錄,把該目錄的owner換成運行hbase的人。 修改conf目錄下的hbase-env.sh,把參數HBASE_MANAGES_ZK設爲false。
修改hadoop的hdfs-site.xml 添加dfs.support.append屬性,值爲true,同樣把這個加在hbase-site.xml裏, 其他要在這個XML裏添加的屬性:
hbase.zookeeper.quorum zookeeper的主機名,如有多個用逗號隔開
hbase.rootrir 把你的數據庫放在HDFS的哪裏,比如hdfs://host1:8020/hbase
hbase.cluster.distributed 設爲true
hbase.tmp.dir 臨時目錄,記得要先在本機創建目錄(本地的不是hdfs的),設好owner
dfs.replication 副本的數目,如果不指定,hbase會用默認的3,不管你的hadoop怎麼設置。
然後,設置好NTP,habse對服務器時間同步有一定要求。
修改/etc/security/limits/conf 文件,對於運行hbase的user,nofile設爲32768 noproc設爲32000
regionservers,這個wenjian類似Hadoop的slave文件,把所有hbase從機都加進去。
在其他的從機上面,用scp吧hbase整個目錄拷貝到本機相同的位置,這樣配置文件就不用修改了,也不用tar 解壓程序包了。 不過其他的本機臨時目錄,limits.conf等還是要做一遍。
然後,假設hadoop啓動完成了。 在主機上,啓動zookeeper, zkServer.sh start
start-hbase.sh 看看各個機器上的logs目錄,沒有報錯就應該可以了
60010是主機上的web 界面端口, 60030 是叢機的WEb端口。
hbase shell 命令進入操作界面,可以嘗試創建表,詳見官網。
停止Habse: stop-hbase.sh 然後 zkServer.sh stop