1. 程式人生 > 其它 >【HBase】

【HBase】

一、簡介

1、定義

分散式、可擴充套件、支援海量資料儲存的NoSQL資料庫

2、資料模型

2.1邏輯結構

2.2物理儲存結構

2.3資料模型介紹

Name Space:相當於資料庫,包含很多張表

Region:類似於表,定義表時只需要宣告列族,不需要宣告具體的列。【欄位可以動態、按需指定】

Row:每行資料按RowKey字典序儲存,且只能根據RowKey檢索

Column:由Column Family(列族)和Column Qualifier(列限定符,即列名,無需預先定義)進行限定,例如info:name,info:age。

Time Stamp:標識資料的不同版本

Cell:由{rowkey, column Family:column Qualifier, time Stamp} 唯一確定的單元/記錄?

3、HBase基本架構

架構角色

Region Server:Region的管理者,其實現類為HRegionServer,可以實現對資料的操作(get, put, delete)和對Region的操作(splitRegion、compactRegion)

Master:Region Server的管理者,實現類為HMaster,可以實現對錶的操作(create, delete, alter)和對Region Server的操作(分配regions、監控ser的狀態、負載均衡和故障轉移)

Zookeeper:Master的高可用、RegionServer的監控、元資料的入口以及叢集配置的維護

HDFS:底層資料儲存、HBase的高可用

二、HBase快速入門

1、安裝部署

zk和Hadoop的部署

HBase的解壓和配置檔案修改:hbase-env.sh、hbase-site.xml

定義regionservers,軟連線hadoop配置檔案到HBase:ln -s a b

遠端傳送同步叢集:xsync hbase/

啟動HBASE:bin/hbase-daemon.sh start master及regionserver

啟動方式2:bin/start-hbase.sh,檢視頁面:http://hadoop102:16010

對HMaster的HA高可用:

建立backup-masters檔案並配置高可用HMaster節點:echo hadoop103 > conf/backup-masters

整個conf目錄scp到其他節點:scp -r conf/ hadoop103:/opt/module/hbase/

2、Shell操作

進入命令列:bin/hbase shell

表的操作:create、put、scan、describe、count、delete、truncate清空表、get 'student','1001'指定行,'info:name'指定列族: 列、drop刪除表、

三、HBASE進階

1、架構原理

StoreFile:實際儲存的物理檔案,以HFile的形式儲存在HDFS上,資料有序

MemStore:寫快取,先儲存在MemStore中,排好序再刷寫到StoreFile

WAL:寫記憶體容易資料丟失,先寫在一個叫做Write-Ahead logfile的檔案中,然後再寫入MemStore中;系統出現故障的時候,資料可以通過這個日誌檔案重建。

2、寫資料的流程

通過zk獲取Region Server地址

(追加)到WAL,寫入對應的MemStore

向client傳送ack,等到刷寫時機後,將資料刷寫到HFile

3、MemStore Flush資料刷寫

某個Mem Store達到配置值時

memstore的總大小達到java_heapsize時

到達自動刷寫的時間,也會觸發memstore flush

4、讀流程

訪問zk,獲取hbase:meta表位於哪個Region Server

根據讀請求的namespace:table/rowkey獲取region並快取到meta cache

查詢目標資料併合並

5、StoreFile Compaction

6、Region Split

四、整合Phoenix

本文來自部落格園,作者:劉金輝,轉載請註明原文連結:https://www.cnblogs.com/liujinhui/p/15542385.html