hadoop之旅9-centerOS7 : hbase叢集環境搭建

爾以發表於2018-11-12

今天教大家如何在centerOS7上搭建hbase的叢集環境,首先給大家介紹一下hbase

hbase是什麼

HBase是建立在Hadoop檔案系統之上的分散式面向列的資料庫。它是一個開源專案,是橫向擴充套件的。 HBase是一個資料模型,類似於谷歌的大表設計,可以提供快速隨機訪問海量結構化資料。它利用了Hadoop的檔案系統(HDFS)提供的容錯能力。 它是Hadoop的生態系統,提供對資料的隨機實時讀/寫訪問,是Hadoop檔案系統的一部分。 人們可以直接或通過HBase的儲存HDFS資料。使用HBase在HDFS讀取消費/隨機訪問資料。 HBase在Hadoop的檔案系統之上,並提供了讀寫訪問

hadoop之旅9-centerOS7 : hbase叢集環境搭建

HBase 和 HDFS

HDFS HBase
HDFS是適於儲存大容量檔案的分散式檔案系統 HBase是建立在HDFS之上的資料庫。
HDFS不支援快速單獨記錄查詢 HBase提供在較大的錶快速查詢
它提供了高延遲批量處理;沒有批處理概念 它提供了數十億條記錄低延遲訪問單個行記錄(隨機存取)。
它提供的資料只能順序訪問 HBase內部使用雜湊表和提供隨機接入,並且其儲存索引,可將在HDFS檔案中的資料進行快速查詢。

hbase的資料模型

hadoop之旅9-centerOS7 : hbase叢集環境搭建

Row Key: 行鍵,Table的主鍵,Table中的記錄按照Row Key排序

Timestamp: 時間戳,每次資料操作對應的時間戳,可以看作是資料的version number

Column Family:列簇,Table在水平方向有一個或者多個Column Family組成,一個Column Family中可以由任意多個Column組成,即Column Family支援動態擴充套件,無需預先定義Column的數量以及型別,所有Column均以二進位制格式儲存,使用者需要自行進行型別轉換。

好了,說了這麼多大家可能光看概念也是雲裡霧裡,所以就直接帶大家搭建環境,做一些簡單的應用來體會hbase的用法了。

環境搭建

首先需要有hbase的軟體包,可以自行下載,我給大家提供的是hbase-1.3.1版本,點選下載

其次把下載的軟體放入centerOS7系統下的自己的目錄下,我的目錄是在/home/mmcc下。然後進入到該目錄解壓檔案

cd /home/mmcc
tar -zxvf hbase-1.3.1-bin.tar.gz
複製程式碼

然後開始配置hbase-env.sh檔案,進入hbase根目錄

vi /conf/hbase-env.sh  //編輯環境變數配置指令碼

export JAVA_HOME=/home/mmcc/jdk1.8  //配置java環境變數,把井號去掉換上自己的jdk路徑
export HBASE_MANAGES_ZK=true  //表示使用自帶的zookeeper
export HBASE_PID_DIR=/home/mmcc/hbase-1.3.1/hbase_tmp  //修改pid檔案的儲存路徑
複製程式碼

其次再配置hbse-site.xml檔案

vi /conf/hbase-site.xml

<property>
   <name>hbase.rootdir</name>                 //設定hbase在hdfs上根目錄
   <value>hdfs://master:9000/hbase</value>
</property>
<property>
   <name>hbase.cluster.distributed</name>   //是否開啟叢集
   <value>true</value>
</property>
<property>
   <name>hbase.zookeeper.quorum</name>     // 設定zookeeper叢集節點
   <value>master,slave1,slave2</value> 
</property>
<property>
   <name>hbase.tmp.dir</name>                //設定臨時檔案目錄
   <value>/home/mmcc/hbase-1.3.1/data/tmp</value>
</property> 
<property>                  //設定web管理介面埠
   <name>hbase.master.info.port</name>
   <value>60010</value>
</property>
複製程式碼

設定zookeeper叢集節點時,如果zookeeper單獨設定了埠 則加上master:port ,預設是master:2181,預設的可以不寫

然後配置hbase的叢集節點服務

vi /conf/regionservers

slave1
slave2
複製程式碼

把zookeeper的服務節點都配置進去

到這一步master節點的hbase的環境已經配置好了,但是這只是單機版,我們需要做到一個叢集,可以通過以下方式把hbase直接複製到不同的節點機上

scp -r /home/mmcc/hbase-1.3.1 slave1/slave1節點的ip:/home/mmcc  
scp -r /home/mmcc/hbase-1.3.1 slave2/slave2節點的ip:/home/mmcc
複製程式碼

/hbase-1.3.1目錄下的所有檔案複製到slave1節點上的/home/mmcc目錄下,由於我們是通過克隆的方式建立的虛擬機器,所以其實檔案目錄都是一樣的

然後將hbase的bin目錄配置到環境變數裡,每個節點都配置好

vi /etc/profile

HBASE_HOME=/home/mmcc/hbase-1.3.1
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$HBASE_HOME/bin:$PATH:.

source /etc/profile  //使環境變數生效

複製程式碼

啟動叢集

start-hbase.sh  //前提是已經啟動了hadoop叢集服務
複製程式碼

內部會啟動一個自帶的zookeeper叢集,同時啟動master和節點服務.啟動之後通過jps檢視一下當前的服務

hadoop之旅9-centerOS7 : hbase叢集環境搭建

可以發現,叢集已經啟動成功了。

現在我們是通過自帶的zookeeper作為協調服務的,所以啟動步驟如下

  1. 啟動hadoop叢集 start-all.sh
  2. 啟動hbase叢集 start-hbase.sh

停止步驟

  1. 停止hbase叢集 stop-hbase.sh
  2. 停止hadoop叢集 stop-all.sh

自定義zookeeper

首先在配置hbase-env.sh檔案時,把export HBASE_MANAGES_ZK=false設定為false,表示使用自定義的zookeeper的叢集。同時如果自己單獨配置了zookeeper叢集的埠,不是預設的2181。則在hbase-site.xml中配置zookeeper叢集時需要帶上埠

<property>
   <name>hbase.zookeeper.quorum</name>     // 設定zookeeper叢集節點
   <value>master:port,slave1:port,slave2:port</value> 
</property>
複製程式碼

使用自定義的zookeeper的叢集啟動順序

  1. 啟動hadoop叢集
  2. 啟動zk叢集(zookeeper)
  3. 啟動hbase叢集

停止步驟

  1. 停止hbase叢集
  2. 停止zk叢集(zookeeper)
  3. 停止hadoop叢集

關於zk叢集的搭建和使用在後面章節會講到

相關文章