一、前言

     暑期實驗室實習學姐告知學習HBase,便利用複習之餘的時間搭建HBase環境,先前不瞭解搞了個單機版的,學姐說實驗室開發不用單機2333[尷尬],於是又開始建立虛擬機器開始完全分散式叢集環境的搭建。搭建主要是各種百度,也遇到了一些bug,也來來回回刪增了很多虛擬機器[哭泣],在這裡主要是進行一個簡單的總結,要是能幫上大家就很開心啦~\(≧▽≦)/~

二、準備

  • Ubuntu16.04
  • VMware Workstation12 pro
  • jdk1.8
  • Hadoop-2.8.3
  • Zookeeper-3.4.12
  • HBase-2.0.0
  • SSH

三、搭建過程

3.1 三臺虛擬機器的搭建(Ubuntu)

  • master  192.168.199.140
  • slave1   192.168.199.137
  • slave2   192.168.199.138

      HBase如果電腦效能比較好,最好是master記憶體24GB,slave記憶體大於24GB。同時機子都為雙四核。但如果電腦效能不ok[我就是],一般的單核1-2GB,24-48GB的磁碟大小就行,只是計算會慢些。

      注:若電腦一般的,最好不要同時開三臺機,否則會emm各種宕機各種慢

3.2 叢集的構建

     在3.1構建虛擬機器的時候選擇NAT模式,虛擬機器安裝完畢重啟,構建叢集

  1. 檢視本機NAT的閘道器,子網掩碼等資訊
  2. 設定虛擬機器的靜態ip和閘道器等資訊
    sudo vi /etc/network/interfaces

    sudo vi /etc/resolvconf/resolv.conf.d/base

  3. 其餘兩臺虛擬機器相同操作,通過ifconfig檢視NAT自動生成的靜態ip地址                                                                         

  4. 通過ping檢查叢集是否建立成功(ping本機&ping虛擬機器&ping外網)                                                                                                                                 

  5. 配置虛擬機器的hosts和hostname       

    sudo vi /etc/hosts

           

    sudo vi /etc/hostname

        注:slave機hostname為slave1和slave2 ;同時slave機的host和master配置一樣                                                                          

        到此,虛擬機器叢集搭建完畢。

3.3 虛擬機器間免密登入(ssh)

     為方便之後虛擬機器間檔案的傳遞等互動操作,利用ssh完成虛擬機器間的免密登入

  1. apt-get install ssh完成ssh的安裝(server+client)
  2. ssh-keygen -t rsa完成虛擬機器ssh的生成
  3. 將slave1和slave2的公鑰id_rsa.pub通過scp傳到master中
  4. scp id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.slave1
    
    scp id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.slave2

    在master中將master自己的id_rsa.pub和slave傳過來的兩個公鑰增加到autorized_keys中                                        

    cat id_rsa.pub >> authorized_keys
    
    cat id_rsa.pub.slave1 >> authorized_keys
    
    cat id_rsa.pub.slave2 >> authorized_keys
  5. 使用scp將生成的authorized_keys傳到slave1和slave2中

scp authorized_keys [email protected]:~/.ssh/authorized_keys

scp authorized_keys [email protected]:~/.ssh/authorized_keys

     虛擬機器間實現免密登入   ssh  使用者名稱@虛擬機器ip  注:是使用者名稱@ip,而非主機名@主機ip

     虛擬機器間實現檔案互傳   scp 檔名 使用者名稱@主機名:儲存路徑

3.4 jdk的環境配置(三臺機子相同操作)

      jdk安裝配置java環境,hadoop一系列產品都需要有java的支援(用java寫的/需要用到java程式碼)

     為方便起見,所有的機子mkdir /data/install建立新資料夾並使用chown -R賦予該資料夾root的許可權,避免後續操作使用sudo。

hadoop等的搭建都依賴於jdk,所以需要先安裝jdk

    sudo mkdir -p /data/install 新建目錄
    sudo chown -R ciery:ciery /data  更改目錄許可權,賦予目錄所有許可權

      1. 下載好的tar包放在 /data/install/java 目錄並解壓:

     tar -xvf jdk-8u131-linux-i586.tar.gz

      2. 配置環境

     sudo vi /etc/profile

          source vi /etc/profile  使配置起效

     3. 檢查jdk是否配置成功

    

3.5 Hadoop的安裝

      下載壓縮包解壓在/data/install/apache中,主要是hadoop-2.8.3/etc/hadoop中的core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、slaves、hadoop-env.sh和yarn-env.sh的配置

  cd /data/install/apache/hadoop-2.8.3/etc/hadoop/

  1. core-site.xml                                         
  2. hdfs-site.xml                        
  3. yarn-site.xml                           
  4. mapred-site.xml (新建的)                                                                                                                                                      通過 cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml建立etc/hadoop/mapred-site.xml         
  5. slaves                                                        
  6. hadoop-env.sh和yarn-env.sh                                  
  7. slave兩臺機子相同,使用scp將hadoop-2.8.3資料夾直接傳到slave機的/data/install/apache/目錄下即可,同時記得分別對所有配置中的master改為slave1和slave2
  8. 測試,master中使用sbin/start-all.sh(或者分別使用sbin/start-dfs.sh和sbin/start-yarn.sh)注:保證slave兩臺機開啟狀態   三臺機分別使用jps測試節點狀態 master中有SecondaryNameNode和NameNode,slave中有DataNode即為成功

3.6 Zookeeper的安裝

      和Hadoop相同解壓操作,主要是修改/data/install/apache/zookeeper-3.4.12/conf/zoo.cfg和新建的data中的myid文件以及環境配置

     1. /data/install/apache/zookeeper-3.4.12新建data目錄並新建myid和修改conf下的zoo.cfg                                                                   cp zoo_sample.cfg zoo.cfg(記得刪掉原有的zoo_sample.cfg)

  注:data下使用vi myid新建文件,標號對應zoo.cfg中各機子對應的標號,文件中新增conf/zoo.cfg機子相應的標號,注意不要有空格;同時注意conf中要刪掉原有的zoo_sample.cfg

2. Zookeeper環境配置   sudo vi /etc/profile  配置結束 source /etc/profile

     3. 測試  bin/zkServer.sh start 開啟(三臺機子都進行開啟操作)  jps測試節點狀態,master和slave中都有QuorumPeerMain

          使用bin/zkServer.sh status 測試虛擬機器狀態

      注意測試的時候各節點bin/zkServer.sh start的順序,一般是master->slave1->slave2,這樣檢視status(bin/zkServer.sh status)會得到master的mode為leader,其餘為follower

3.7 HBase的安裝

 解壓操作和3.5、3.6同,主要配置/data/install/apache/hbase-2.0.2/conf/的hbase-env.sh、hbase-site.xml、regionservers

  1. hbase-site.xml              
  2. hbase-env.sh                                                            
  3. regionservers                                                          
  4. 測試(slave機子配置和master機一樣) 在master機中使用bin/start-hbase.sh啟動,使用jps檢視節點狀態,master中有HMaster,slave中有HRegionServer即為成功                                                                                                                                           

 測試時需要三臺機子都為開啟狀態且Hadoop為開啟狀態,使用jps進行程序狀態測試

 到此,HBase完全分散式叢集環境搭建完畢。

四、參考連結

五、總結

     萬事開頭難,多多百度,遇到bug不要慌,學會查詢bug的原因之後對症下藥。耐下性子,勿急躁。加油啦

.