這裏搭建一個 3 節點的 HBase 集羣,其中三臺主機上均爲 Regin Server
。同時爲了保證高可用,除了在 hadoop001 上部署主 Master
服務外,還在 hadoop002 上部署備用的 Master
服務。Master 服務由 Zookeeper 集羣進行協調管理,若是主 Master
不可用,則備用 Master
會成爲新的主 Master
。java
HBase 的運行須要依賴 Hadoop 和 JDK(HBase 2.0+
對應 JDK 1.8+
) 。同時爲了保證高可用,這裏咱們不採用 HBase 內置的 Zookeeper 服務,而採用外置的 Zookeeper 集羣。相關搭建步驟能夠參閱:git
下載並解壓,這裏我下載的是 CDH 版本 HBase,下載地址爲:http://archive.cloudera.com/cdh5/cdh/5/github
# tar -zxvf hbase-1.2.0-cdh5.15.2.tar.gz
# vim /etc/profile
添加環境變量:shell
export HBASE_HOME=usr/app/hbase-1.2.0-cdh5.15.2 export PATH=$HBASE_HOME/bin:$PATH
使得配置的環境變量當即生效:vim
# source /etc/profile
進入 ${HBASE_HOME}/conf
目錄下,修改配置:服務器
# 配置JDK安裝位置 export JAVA_HOME=/usr/java/jdk1.8.0_201 # 不使用內置的zookeeper服務 export HBASE_MANAGES_ZK=false
<configuration> <property> <!-- 指定 hbase 以分佈式集羣的方式運行 --> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <!-- 指定 hbase 在 HDFS 上的存儲位置 --> <name>hbase.rootdir</name> <value>hdfs://hadoop001:8020/hbase</value> </property> <property> <!-- 指定 zookeeper 的地址--> <name>hbase.zookeeper.quorum</name> <value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value> </property> </configuration>
hadoop001 hadoop002 hadoop003
hadoop002
backup-masters
這個文件是不存在的,須要新建,主要用來指明備用的 master 節點,能夠是多個,這裏咱們以 1 個爲例。app
這裏有一個可選的配置:若是您在 Hadoop 集羣上進行了 HDFS 客戶端配置的更改,好比將副本系數 dfs.replication
設置成 5,則必須使用如下方法之一來使 HBase 知道,不然 HBase 將依舊使用默認的副本系數 3 來建立文件:分佈式
- Add a pointer to your
HADOOP_CONF_DIR
to theHBASE_CLASSPATH
environment variable in hbase-env.sh.- Add a copy of hdfs-site.xml (or hadoop-site.xml) or, better, symlinks, under ${HBASE_HOME}/conf, or
- if only a small set of HDFS client configurations, add them to hbase-site.xml.
以上是官方文檔的說明,這裏解釋一下:oop
第一種 :將 Hadoop 配置文件的位置信息添加到 hbase-env.sh
的 HBASE_CLASSPATH
屬性,示例以下:大數據
export HBASE_CLASSPATH=usr/app/hadoop-2.6.0-cdh5.15.2/etc/hadoop
第二種 :將 Hadoop 的 hdfs-site.xml
或 hadoop-site.xml
拷貝到 ${HBASE_HOME}/conf
目錄下,或者經過符號連接的方式。若是採用這種方式的話,建議將二者都拷貝或創建符號連接,示例以下:
# 拷貝 cp core-site.xml hdfs-site.xml /usr/app/hbase-1.2.0-cdh5.15.2/conf/ # 使用符號連接 ln -s /usr/app/hadoop-2.6.0-cdh5.15.2/etc/hadoop/core-site.xml ln -s /usr/app/hadoop-2.6.0-cdh5.15.2/etc/hadoop/hdfs-site.xml
注:
hadoop-site.xml
這個配置文件如今叫作core-site.xml
第三種 :若是你只有少許更改,那麼直接配置到 hbase-site.xml
中便可。
將 HBase 的安裝包分發到其餘服務器,分發後建議在這兩臺服務器上也配置一下 HBase 的環境變量。
scp -r /usr/app/hbase-1.2.0-cdh5.15.2/ hadoop002:usr/app/ scp -r /usr/app/hbase-1.2.0-cdh5.15.2/ hadoop003:usr/app/
分別到三臺服務器上啓動 ZooKeeper 服務:
zkServer.sh start
# 啓動dfs服務 start-dfs.sh # 啓動yarn服務 start-yarn.sh
進入 hadoop001 的 ${HBASE_HOME}/bin
,使用如下命令啓動 HBase 集羣。執行此命令後,會在 hadoop001 上啓動 Master
服務,在 hadoop002 上啓動備用 Master
服務,在 regionservers
文件中配置的全部節點啓動 region server
服務。
start-hbase.sh
訪問 HBase 的 Web-UI 界面,這裏我安裝的 HBase 版本爲 1.2,訪問端口爲 60010
,若是你安裝的是 2.0 以上的版本,則訪問端口號爲 16010
。能夠看到 Master
在 hadoop001 上,三個 Regin Servers
分別在 hadoop001,hadoop002,和 hadoop003 上,而且還有一個 Backup Matser
服務在 hadoop002 上。
hadoop002 上的 HBase 出於備用狀態:
更多大數據系列文章能夠參見 GitHub 開源項目: 大數據入門指南