Hadoop2.7.2高可用(HA)環境下Hbase高可用(HA)環境的搭建
轉載請註明出處:http://blog.csdn.net/qq_23181841/article/details/75095370
(在Ubuntu14.04下以root用戶進行配置)
- 下載hbase-1.2.4-bin.tar.gz,並解壓
#tar -zxvf hbase-1.2.4-bin.tar.gz -C /home/
- 修改conf/hbase-site.xml文件
#vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://nameserver/hbase</value>
</property>
<property>
<name>hbase.master</name>
<value>60000</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hbase-1.2.4/hbase-tmp</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>60030</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slaver1:2181,slaver2:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/zookeeperData</value>
</property>
<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
</property>
</configuration>
- hbase-site.xml 配置參數解析
1. hbase.rootdir
這個目錄是 RegionServer 的共享目錄,用來持久化 HBase。特別注意的是 hbase.rootdir 裏面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 裏面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必須一致。
(HA環境下,dfs.nameservices 是由zookeeper來決定的)
2. hbase.cluster.distributed
HBase 的運行模式。爲 false 表示單機模式,爲 true 表示分佈式模式。若爲 false,HBase 和 ZooKeeper 會運行在同一個 JVM 中
3. hbase.master
- 如果只設置單個 Hmaster,那麼 hbase.master 屬性參數需要設置爲 master5:60000 (主機名:60000)
- 如果要設置多個 Hmaster,那麼我們只需要提供端口 60000,因爲選擇真正的 master 的事情會有 zookeeper 去處理
4. hbase.tmp.dir
本地文件系統的臨時文件夾。可以修改到一個更爲持久的目錄上。(/tmp會在重啓時清除)
5. hbase.zookeeper.quorum
對於 ZooKeeper 的配置。至少要在 hbase.zookeeper.quorum 參數中列出全部的 ZooKeeper 的主機,用逗號隔開。該屬性值的默認值爲 localhost,這個值顯然不能用於分佈式應用中。
6. hbase.zookeeper.property.dataDir
這個參數用戶設置 ZooKeeper 快照的存儲位置,默認值爲 /tmp,顯然在重啓的時候會清空。因爲筆者的 ZooKeeper 是獨立安裝的,所以這裏路徑是指向了 $ZOOKEEPER_HOME/conf/zoo.cfg 中 dataDir 所設定的位置。
7. hbase.zookeeper.property.clientPort
表示客戶端連接 ZooKeeper 的端口。
8. zookeeper.session.timeout
ZooKeeper 會話超時。Hbase 把這個值傳遞改 zk 集羣,向它推薦一個會話的最大超時時間
9. hbase.regionserver.restart.on.zk.expire
當 regionserver 遇到 ZooKeeper session expired , regionserver 將選擇 restart 而不是 abort。
- 修改hbase-env.sh
#vim hbase-env.sh
export JAVA_HOME=/home/jdk1.7.0_80
export HBASE_CLASSPATH= /home/hbase-1.2.4
export HBASE_HEAPSIZE=4000
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_MANAGES_ZK=false
參數註解:
-
-
- 其中JAVA_HOME 和 HBASE_CLASSPATH 根據實際情況進行配置
- HBASE_HEAPSIZE 的大小根據你的集羣配置,默認是 1000
- HBASE_LOG_DIR 是 HBase 日誌存放位置
- HBASE_MANAGES_ZK=false 含義爲 hbase 不託管 zookeeper 的啓動與關閉,因爲筆者的 ZooKeeper 是獨立安裝的
- 配置 regionservers
#vim regionservers
master
slaver1
slaver2
- 替換Hadoop的jar包
由於 HBase 依賴於 Hadoop,因此在安裝包的 lib 文件夾下包含了一個 Hadoop 的核心 jar 文件。在分佈式模式下,HBase 使用的 Hadoop 版本必須和運行中的 Hadoop 集羣的 jar 文件版本一致。將運行的分佈式 Hadoop 版本的 jar 文件替換 HBase 的 lib 目錄下的 Hadoop 的 jar 文件,以避免版本不匹配問題。確認替換了集羣中所有節點的
HBase 安裝目錄下 lib 目錄的 jar 文件。Hadoop 版本不匹配問題有不同的表現,但看起來 HBase 像掛掉了。
cp ${HADOOP_HOME}/share/hadoop/common/hadoop-auth-2.7.2.jar ${HBASE_HOME}/lib/
複製hadoop的core-site.xml和hdfs-site.xml到${HBASEHOME}/conf中,否則在啓動時,Regionserver會啓動失敗,報錯java.lang.IllegalArgumentException: java.net.UnknownHostException: nameserver
#cp /home/hadoop-2.7.2/etc/hadoop/core-site.xml /home/hbase-1.2.4/conf/
#cp /home/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /home/hbase-1.2.4/conf/
- 啓動Hbase
(1)在其中一臺機器上:
#start-hbase.sh
有這兩個進程,表明Hbase啓動成功
(2)在另外一臺機器上再啓動一個HMaster:
#hbase-demon.sh start master
通過Web訪問:
http://192.168.10.180:60010/master-status
http://192.168.10.179:60010/master-status