在Hadoop集群之上安裝hbase
一、安裝准備
首先我們確保在ubuntu16.04上安裝了以下的產品,java1.8及其以上,ssh,hadoop集群,其次,我們需要從hbase的官網上下載並安裝這個產品。
二、開始安裝
這里我介紹兩種安裝方式,一種是在偽分布式hadoop集群上安裝hbase,另一種是在分布式hadoop集群上安裝hbase。
2.1、下載hbase
無論是任何安裝方式,首先我們需要下載hbase。在官網上點擊清華大學的鏡像來下載穩定版的hbase。


在下載之前,我們要明確自己想要下載的版本,如果沒有特殊的要求,我們直接下載穩定版的即可,如果有特殊的版本限制,我們可以選擇相應的版本,另外在我們選擇版本的時候還要考慮版本的關聯性和依賴性,因為hbase是建立在hadoop基礎之上的,而hadoop是建立在jdk之上的,因此我們選擇版本的時候要參考java和hadoop的版本,具體的參考標准我們可以查看官網。

在官網之中有着明確的支持、不支持、未測試的解釋權。


在這里,因為我們之前已經安裝了jdk1.8.x和hadoop3.0,從上圖看,我們的hadoop版本還不被最新的hbase版本支持,有兩種方法,第一種卸載並下載支持的版本,第二種因為是NT,沒有被測試,我們冒險安裝一下hbase,在這里為了試驗,我們選擇第二種。
2.2、在偽分布式hadoop集群上安裝hbase
我們將下載的安裝包解壓到我們需要的目錄,並且修改該文件夾的權限為相應的用戶和用戶組,之后我們修改文件夾為最標准的名稱,然后修改全局變量,並且對hbase內部的文件進行配置。

cd ~/Downloads sudo tar -zxvf hbase-1.2.6-bin.tar.gz -C ../ cd ../ sudo mv hbase-1.2.6 hbase sudo chown -R grid@hadoop hbase
cd ./hbase/conf

sudo gedit ~/.bashrc
在其中加入hbase的全局參數:

2.2.1、修改hbase-env.sh
sudo gedit hbase-env.sh
在這里,我們找到這一句話,並且將注釋去掉,這樣我們就可以使用hbase自帶的zookeeper了。有的教程中還將java_home配置了一下,這里我們要明白其中的本質,如果我們在全局變量文件(~/.bashrc)中已經配置過了,在這個地方我們可以不用配置,有的教程還配置了HBASE_CLASSPATH=/home/grid/hadoop中的某一個目錄,在我們新的版本之中是不需要的,因此,我們只打開這一句話。

2.2.2、修改hbase-site.xml
另外我們還需要進行一些細微的配置,首先修改hbase的根目錄,這里我們使用hdfs文件系統,將其放到主目錄之下,不用真的在hdfs創建這個文件,系統會幫助我們創建,在這里要特別特別的注意,如果使用hdfs,意味着我們需要連接到這個文件系統,因此我們需要使用自己的IP+Port,也就是自己命名的主機(localhost)和Port(在這里我們不能照搬照抄,一定要修改成自己主機上的,具體從hadoop的etc/hadoop/core-site.xml文件中找到),這點非常非常重要,不然就會顯示zookeeper不能正常啟動,找不到節點等等信息;

其次,我們修改hbase的臨時文件目錄,這樣可以確保重新加電自檢的時候能夠正確載入,在斷電的時候不會被清除。然后我們修改zookeeper的數據存放路徑,一般就在hbase下面創建一個目錄存放了,當然我們也不用自己創建,系統會幫我們創建的,最后,我們使得我們的偽分布式生效。至此,我們完成了一些基本的配置,接下來就是運行了。
<property> <name>hbase.rootdir</name> <value>hdfs://h1:9000/hbase</value> </property> <property> <name>hbase.tmp.dir</name> <value>/home/grid/hbase/tmp</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/grid/hbase/zookeeper</value> </property>
<property> <name>hbase.cluster.distributed</name> <value>true</value> </property>

在運行之前我們需要先運行hdfs,也就是start-dfs.sh。之后我們運行hbase,start-hbase.sh。
start-dfs.sh
start-hbase.sh
測試是否安裝成功:

接着我們使用hbase shell為我們創建程序,並工作,如果遇到問題,我們主要從這幾個地方查找問題,第一,我們安裝的版本是不是完全匹配,第二,我們的配置是不是完全正確,第三我們的hdfs進程和hbase進程是不是完全打開,第四,zookeeper是不是正常打開並且工作,一定要注意端口的設置,在這里我們並不使用yarn,我們只是借助hdfs來存放我們的數據庫而已,因為在我們的虛擬機上打開yarn一般資源就會被消耗干凈了,所以我們只是用MapReduce就好了。至此我們可以進行CRUD的操作了。
2.3、在hadoop集群上安裝hbase
在2.2的基礎上我們繼續進行配置使得可以實現我們的真正分布式hbase部署。因此請先看2.2的配置。
2.3.1、繼續配置hbase-site.xml
增加如下配置,意思為我們讓zookeeper為我們投票選舉出一個最適合做某個任務的機器,這里我們從這三台機器上投票,一定要記得這個機器的數目一定要為奇數,只有這樣我們才能得到最公平的投票。
<property> <name>hbase.zookeeper.quorum</name> <value>h1,h2,h3</value> </property>
我們最終的配置為:

2.3.2、修改regionservers文件

在其中加入h2,h3:

2.3.3、將配置好的文件分發到各個節點
到了這里我們並沒有完成所有的任務,還需要分發到其他的物理節點上,我們依舊使用ssh中的secure copy,scp命令來完成,當然我們需要打開三台虛擬機來完成這個操作。
scp -r ~/hbase grid@h2:~/
scp -r ~/hbase grid@h3:~/
之后我們還要進行配置,我想這個配置讀者應該能想到,那就是對於h2,h3兩台主機,在全局變量之中將hbase的變量注入到其中,實現無目錄啟動。也就是將如下的內容加入到slaves機器里面。然后我們source一下使得文件修改生效。

2.3.4、運行分布式hbase
我們打開三台虛擬節點,在h1上面,我們使用start-dfs.sh打開hdfs,之后我們使用start-hbase.sh打開hbase和zookeeper。這里的打開是全面的,就是主從機器都同時做各自的事情了。這里因為性能的限制,我打開了h1和h3來進行測試,主要的內容如下:
開啟:

運行:在運行的時候我們還可以通過web查看運行狀態:localhost:16010

關閉:

至此,我們已經在三個虛擬節點上安裝了hdfs、hbase、spark等產品,讓我們一起打開這些產品試一下:

三、總結
安裝一次新的產品對我的收獲是很大的,在這個過程中,我可以學到很多的新的東西,並且以前認為很簡單的東西真正在操作的時候總是出現各種的問題,仔細查找了才發現有的問題是不應該出現的低級錯誤,因此每一次的總結都是一次進步。
