對於完全分布式HBase,通過hbase-site.xml文檔來配置本機的HBase特性,通過hbase-env.sh來了解全局的HBase集群系統的特性。
2.配置/home/hadoop/hbase-1.0.3/conf/hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_71/
export HBASE_HEAPSIZE=1G
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_PID_DIR=${HBASE_HOME}/pids
export HBASE_MANAGES_ZK=false
Hbase依賴一個zookeeper集群所有的節點和客戶端都必須能夠訪問zookeeper。默認的情況下Hbase會管理一個zookeep集群。這個集群會隨着Hbase的啟動而啟動。當然,你也可以自己管理一個zookeeper集群,但需要配置Hbase。你需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK 來切換。這個值默認是true的,作用是讓Hbase啟動的時候同時也啟動zookeeper.
讓Hbase使用一個現有的不被Hbase托管的Zookeep集群,需要設置 conf/hbase-env.sh文件中的HBASE_MANAGES_ZK 屬性為 false

hbase.rootdir:這個目 錄是region server的共享目錄,用來持久化Hbase。URL需要是'完全正確'的,還要包含文件系統的scheme。例如,要表示hdfs中的 '/hbase'目錄,namenode 運行在node1的49002端口。則需要設置為hdfs://node1:49002/hbase。默認情況下Hbase是寫到/tmp的。不改這個配 置,數據會在重啟的時候丟失。默認: file:///tmp/hbase-${user.name}/hbase
hbase.cluster.distributed:Hbase的運行模式。false是單機模式,true是分布式模式。若為false,Hbase和Zookeeper會運行在同一個JVM里面。
默認: false
在hbase-site.xml配置zookeeper:
當Hbase管理zookeeper的時候,你可以通過修改zoo.cfg來配置zookeeper,
一個更加簡單的方法是在 conf/hbase-site.xml里面修改zookeeper的配置。Zookeeer的配置是作為property寫在 hbase-site.xml里面的。
對於zookeepr的配置,你至少要在 hbase-site.xml中列出zookeepr的ensemble servers,具體的字段是 hbase.zookeeper.quorum. 該這個字段的默認值是 localhost,這個值對於分布式應用顯然是不可以的. (遠程連接無法使用)。
hbase.zookeeper.property.clientPort:ZooKeeper的zoo.conf中的配置。 客戶端連接的端口。
hbase.zookeeper.quorum:Zookeeper 集群的地址列表,用逗號分割。例 如:"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".默認是 localhost,是給偽分布式用的。要修改才能在完全分布式的情況下使用。如果在hbase-env.sh設置了HBASE_MANAGES_ZK, 這些ZooKeeper節點就會和Hbase一起啟動。
默認: localhost
運行一個zookeeper也是可以的,但是在生產環境中,你最好部署3,5,7個節點。部署的越多,可靠性就 越高,當然只能部署奇數個,偶數個是不可以的。你需要給每個zookeeper 1G左右的內存,如果可能的話,最好有獨立的磁盤。 (獨立磁盤可以確保zookeeper是高性能的。).如果你的集群負載很重,不要把Zookeeper和RegionServer運行在同一台機器上 面。就像DataNodes 和 TaskTrackers一樣
hbase.zookeeper.property.dataDir:ZooKeeper的zoo.conf中的配置。 快照的存儲位置
按照zookeeper配置zoo.cfg中的dataLogDir=/home/hadoop/zookeeper-3.4.6/datalog路徑配置即可
把ZooKeeper保存數據的目錄地址改掉。默認值是 /tmp ,這里在重啟的時候會被操作系統刪掉,可以把它修改到 /home/hadoop/zookeeper (這個路徑hadoop用戶擁有操作權限)