1. 程式人生 > >HBase簡介和分散式叢集的搭建

HBase簡介和分散式叢集的搭建

1,HBase是什麼?

1,概念

HBase是一個高可靠性、高效能、可伸縮、分散式、基於列儲存的非關係型(NoSQL)資料庫。

  • 列式儲存和行式儲存?
    在這裡插入圖片描述
  • 非關係型資料庫與關係型資料庫?
    在這裡插入圖片描述

2,與Google Bigtable的不同之處

服務 Google Bigtables HBase
檔案儲存系統 Google Bigtable:GFS HBase:HDFS
海量資料計算框架 Google Bigtable:MapReduce HBase:MapReduce
應用程式協調服務 Google Bigtable:Chubby HBase:ZooKeeper

3, 何時採用 HBase?

  • (1)需適應不同種類資料格式和資料來源,不能預先嚴格定義模式
  • (2)需處理大規模資料
  • (3)不強調資料之間的關係,需儲存半結構化和非結構化資料
  • (4)資料非常稀疏,有大量為 NULL 的字串
  • (5)想要更好的進行擴充套件

4,HBase 叢集結構

在這裡插入圖片描述
在這裡插入圖片描述

HBase 分散式叢集搭建

1,前期裝備

  • (1)同步網路時間

      cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   #修改時區
      ntpdate cn.pool.ntp.org    #同步網路時間
      date   #檢查時間是否修改成功
    

2,HBase1.3.1 分散式叢集搭建

  • 2,上傳並解壓
    將 HBase 安裝包上傳到 Linux 伺服器
    解壓命令:tar -zxvf hbase-1.3.1-bin.tar.gz

  • 3,修改配置檔案

    • hbase-env.sh
      1,修改JDK安裝路徑
      export JAVA_HOME=/home/shiny/Desktop/software/jdk1.8.0_73在這裡插入圖片描述
      2,不引用HBase自帶的ZooKeeper,使用自己安裝的在這裡插入圖片描述

    • hbase-site.xml
      1,指定 HBase 在 HDFS 上儲存的路徑

        <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop01:9000/hbase</value>
        </property>
      

      2,指定 HBase 是分散式的

        <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
        </property>
      

      3,指定 ZooKeeper 節點,多個用“,”分割

        	<property>
        	<name>hbase.zookeeper.quorum</name>
        	<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        	</property>
      

      4,ZooKeeper配置檔案zoo.cfg中的dataDir。ZooKeeper儲存資料庫快照的位置

        <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/shiny/zkdata</value>
        </property>
      
  • 4,分發到其它節點

      scp -r hbase-1.3.1/ [email protected]:$PWD
      scp -r hbase-1.3.1/ [email protected]:$PWD
    
  • 5,配置環境變數
    1,編輯.bash_profile檔案

      vim /home/theone/.bash_profile
    

    2,新增環境變數:

      export HBASE_HOME=/home/theone/Desktop/software/hbase-1.3.1/
      export PATH=$PATH:$HBASE_HOME/bin
    

    3,立即執行檔案

      source /home/theone/.bash_profile
    
  • 6,啟動 HBase 叢集
    1,啟動hadoop叢集,(在主節點上執行命令)

      start-dfs.sh
      start-yarn.sh
    

    2,啟動 ZooKeeper 叢集,(在所有節點上執行命令)

      zkServer.sh start
    

    3,啟動 HBase 叢集,(在哪個節點啟動哪個節點就是主節點)

      start-hbase.sh
    

    啟動頁面有警告資訊:

    解決方案:
    1,將 JDK 修改為 1.7 版本
    2,修改 HBase 的配置檔案hbase-env.sh

    關閉 HBase 叢集,命令:stop-hbase.sh
    修改配置檔案hbase-env.sh,將以下兩行配置註釋掉(每個節點)在這裡插入圖片描述
    再次啟動 HBase 叢集,警告資訊消失

  • 7,驗證 HBase 叢集
    檢查程序,命令:jps
    在這裡插入圖片描述
    登入Web UI 頁面:主節點:16010
    在這裡插入圖片描述

  • 8,單步啟動

3,常見異常

HRegionServer 程序啟動後立即退出
多臺伺服器之間 HBase 預設的容忍時間差為 30s

原因:由於HBase 叢集伺服器時間不同步