1. 程式人生 > >HBase知識體系及偽分佈安裝

HBase知識體系及偽分佈安裝

HBase簡介

HBase – Hadoop Database,是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBase技術可在廉

價PC Server上搭建起大規模結構化儲存叢集。HBase利用Hadoop HDFS作為其檔案儲存系統,利用Hadoop的

MapReduce來處理HBase中的海量資料,利用Zookeeper作為協調工具。

1.HBase(NoSQL)的資料模型

1.1 表(table),是儲存管理資料的。

1.2 行鍵(row key),類似於MySQL中的主鍵。

    行鍵是HBase表天然自帶的。

1.3 列族(column family),列的集合。

    HBase中列族是需要在定義表時指定的,列是在插入記錄時動態增加的。

    HBase表中的資料,每個列族單獨一個檔案。

1.4 時間戳(timestamp),列(也稱作標籤、修飾符)的一個屬性。

    行鍵和列確定的單元格,可以儲存多個數據,每個資料含有時間戳屬性,資料具有版本特性。   

    如果不指定時間戳或者版本,預設取最新的資料。

1.5 儲存的資料都是位元組陣列。

1.6 表中的資料是按照行鍵的順序物理儲存的。

2.HBase的物理模型

2.1 HBase是適合海量資料(如20PB)的秒級簡單查詢的資料庫。

2.2 HBase表中的記錄,按照行鍵進行拆分, 拆分成一個個的region。

    許多個region儲存在region server(單獨的物理機器)中的。

    這樣,對錶的操作轉化為對多臺region server的並行查詢。


3.HBase的體系結構

3.1 HBase是主從式結構,HMaster、HRegionServer

架構體系

HBase中有兩張特殊的Table,-ROOT-和.META.

 .META.:記錄了使用者表的Region資訊,.META.可以有多個regoin

 -ROOT-:記錄了.META.表的Region資訊,-ROOT-只有一個region

 Zookeeper中記錄了-ROOT-表的location

使用者請求時會首先查詢-ROOT-,然後找到.META.,再定位到使用者表的region。

Client  包含訪問hbase 的介面,client 維護著一些cache 來加快對hbase 的訪問,比如regione 的位置資訊

Zookeeper

 保證任何時候,叢集中只有一個running master

 存貯所有Region 的定址入口

 實時監控Region Server 的狀態,將Region server 的上線和下線資訊,實時通知給Master

 儲存Hbase 的schema,包括有哪些table,每個table 有哪些column family

Master 可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master執行

為Region server 分配region

負責region server 的負載均衡

發現失效的region server 並重新分配其上的region

4.HBase的偽分佈

4.1 在hadoop0上解壓縮、重新命名、設定環境變數HBASE_HOME

4.2 修改檔案$HBASE_HOME/conf/hbase-env.sh,修改內容如下

    export JAVA_HOME=/usr/local/jdk

    export HBASE_MANAGES_ZK=true

4.3 修改檔案hbase-site.xml,修改內容如下

    <property>
      <name>hbase.rootdir</name>
      <value>hdfs://hadoop0:9000/hbase</value>
    </property>
    <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
    </property>
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>hadoop0</value>
    </property>
    <property>
      <name>dfs.replication</name>
      <value>1</value>
    </property>

4.4 (可選)修改regionservers,具體操作見ppt

4.5 啟動,執行命令start-hbase.sh

    注意:啟動hbase之前要先啟動hadoop,確保hadoop可寫入資料。