1. 程式人生 > >HBase 系列(四)—— HBase 叢集環境配置

HBase 系列(四)—— HBase 叢集環境配置

一、叢集規劃

這裡搭建一個 3 節點的 HBase 叢集,其中三臺主機上均為 Regin Server。同時為了保證高可用,除了在 hadoop001 上部署主 Master 服務外,還在 hadoop002 上部署備用的 Master 服務。Master 服務由 Zookeeper 叢集進行協調管理,如果主 Master 不可用,則備用 Master 會成為新的主 Master

二、前置條件

HBase 的執行需要依賴 Hadoop 和 JDK(HBase 2.0+ 對應 JDK 1.8+) 。同時為了保證高可用,這裡我們不採用 HBase 內建的 Zookeeper 服務,而採用外接的 Zookeeper 叢集。相關搭建步驟可以參閱:

  • Linux 環境下 JDK 安裝
  • Zookeeper 單機環境和叢集環境搭建
  • Hadoop 叢集環境搭建

三、叢集搭建

3.1 下載並解壓

下載並解壓,這裡我下載的是 CDH 版本 HBase,下載地址為:http://archive.cloudera.com/cdh5/cdh/5/

# tar -zxvf hbase-1.2.0-cdh5.15.2.tar.gz

3.2 配置環境變數

# vim /etc/profile

新增環境變數:

export HBASE_HOME=usr/app/hbase-1.2.0-cdh5.15.2
export PATH=$HBASE_HOME/bin:$PATH

使得配置的環境變數立即生效:

# source /etc/profile

3.3 叢集配置

進入 ${HBASE_HOME}/conf 目錄下,修改配置:

1. hbase-env.sh

# 配置JDK安裝位置
export JAVA_HOME=/usr/java/jdk1.8.0_201
# 不使用內建的zookeeper服務
export HBASE_MANAGES_ZK=false

2. hbase-site.xml

<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>

3. regionservers

hadoop001
hadoop002
hadoop003

4. backup-masters

hadoop002

backup-masters 這個檔案是不存在的,需要新建,主要用來指明備用的 master 節點,可以是多個,這裡我們以 1 個為例。

3.4 HDFS客戶端配置

這裡有一個可選的配置:如果您在 Hadoop 叢集上進行了 HDFS 客戶端配置的更改,比如將副本系數 dfs.replication 設定成 5,則必須使用以下方法之一來使 HBase 知道,否則 HBase 將依舊使用預設的副本系數 3 來建立檔案:

  1. Add a pointer to your HADOOP_CONF_DIR to the HBASE_CLASSPATH environment variable in hbase-env.sh.
  2. Add a copy of hdfs-site.xml (or hadoop-site.xml) or, better, symlinks, under ${HBASE_HOME}/conf, or
  3. if only a small set of HDFS client configurations, add them to hbase-site.xml.

以上是官方文件的說明,這裡解釋一下:

第一種 :將 Hadoop 配置檔案的位置資訊新增到 hbase-env.shHBASE_CLASSPATH 屬性,示例如下:

export HBASE_CLASSPATH=usr/app/hadoop-2.6.0-cdh5.15.2/etc/hadoop

第二種 :將 Hadoop 的 hdfs-site.xmlhadoop-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 中即可。

3.5 安裝包分發

將 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/

四、啟動叢集

4.1 啟動ZooKeeper叢集

分別到三臺伺服器上啟動 ZooKeeper 服務:

 zkServer.sh start

4.2 啟動Hadoop叢集

# 啟動dfs服務
start-dfs.sh
# 啟動yarn服務
start-yarn.sh

4.3 啟動HBase叢集

進入 hadoop001 的 ${HBASE_HOME}/bin,使用以下命令啟動 HBase 叢集。執行此命令後,會在 hadoop001 上啟動 Master 服務,在 hadoop002 上啟動備用 Master 服務,在 regionservers 檔案中配置的所有節點啟動 region server 服務。

start-hbase.sh

4.5 檢視服務

訪問 HBase 的 Web-UI 介面,這裡我安裝的 HBase 版本為 1.2,訪問埠為 60010,如果你安裝的是 2.0 以上的版本,則訪問埠號為 16010。可以看到 Master 在 hadoop001 上,三個 Regin Servers 分別在 hadoop001,hadoop002,和 hadoop003 上,並且還有一個 Backup Matser 服務在 hadoop002 上。


hadoop002 上的 HBase 出於備用狀態:


更多大資料系列文章可以參見 GitHub 開源專案: 大資料入門指南