HBase學習入門之HBase體系結構

      網友投稿 725 2022-05-28

      HBase體系結構借鑒了BigTable論文,是典型的Master-Slave模型。系統中有一個管理集群的Master節點以及大量實際服務用戶讀寫的RegionServer節點。除此之外,HBase中所有數據最終都存儲在HDFS系統中,這與BigTable實際數據存儲在GFS中相對應;系統中還有一個ZooKeeper節點,協助Master對集群進行管理。

      1. HBase客戶端

      HBase客戶端(Client)提供了Shell命令行接口、原生Java API編程接口、Thrift/REST API編程接口以及MapReduce編程接口。HBase客戶端支持所有常見的DML操作以及DDL操作,即數據的增刪改查和表的日常維護等。其中Thrift/REST API主要用于支持非Java的上層業務需求,MapReduce接口主要用于批量數據導入以及批量數據讀取。

      HBase客戶端訪問數據行之前,首先需要通過元數據表定位目標數據所在RegionServer,之后才會發送請求到該RegionServer。同時這些元數據會被緩存在客戶端本地,以方便之后的請求訪問。如果集群RegionServer發生宕機或者執行了負載均衡等,從而導致數據分片發生遷移,客戶端需要重新請求最新的元數據并緩存在本地。

      2. ZooKeeper

      ZooKeeper(ZK)也是Apache Hadoop的一個頂級項目,基于Google的Chubby開源實現,主要用于協調管理分布式應用程序。在HBase系統中,ZooKeeper扮演著非常重要的角色。

      實現Master高可用:通常情況下系統中只有一個Master工作,一旦ActiveMaster由于異常宕機,ZooKeeper會檢測到該宕機事件,并通過一定機制選舉出新的Master,保證系統正常運轉。

      管理系統核心元數據:比如,管理當前系統中正常工作的RegionServer集合,保存系統元數據表hbase:meta所在的RegionServer地址等。

      參與RegionServer宕機恢復:ZooKeeper通過心跳可以感知到RegionServer是否宕機,并在宕機后通知Master進行宕機處理。

      HBase學習入門之HBase體系結構

      實現分布式表鎖:HBase中對一張表進行各種管理操作(比如alter操作)需要先加表鎖,防止其他用戶對同一張表進行管理操作,造成表狀態不一致。和其他RDBMS表不同,HBase中的表通常都是分布式存儲,ZooKeeper可以通過特定機制實現分布式表鎖。

      3. Master

      Master主要負責HBase系統的各種管理工作:

      處理用戶的各種管理請求,包括建表、修改表、權限操作、切分表、合并數據分片以及Compaction等。

      管理集群中所有RegionServer,包括RegionServer中Region的負載均衡、RegionServer的宕機恢復以及Region的遷移等。

      清理過期日志以及文件,Master會每隔一段時間檢查HDFS中HLog是否過期、HFile是否已經被刪除,并在過期之后將其刪除。

      4. RegionServer

      RegionServer主要用來響應用戶的IO請求,是HBase中最核心的模塊,由WAL(HLog)、BlockCache以及多個Region構成。

      WAL(HLog):HLog在HBase中有兩個核心作用——其一,用于實現數據的高可靠性,HBase數據隨機寫入時,并非直接寫入HFile數據文件,而是先寫入緩存,再異步刷新落盤。為了防止緩存數據丟失,數據寫入緩存之前需要首先順序寫入HLog,這樣,即使緩存數據丟失,仍然可以通過HLog日志恢復;其二,用于實現HBase集群間主從復制,通過回放主集群推送過來的HLog日志實現主從復制。

      BlockCache:HBase系統中的讀緩存。客戶端從磁盤讀取數據之后通常會將數據緩存到系統內存中,后續訪問同一行數據可以直接從內存中獲取而不需要訪問磁盤。對于帶有大量熱點讀的業務請求來說,緩存機制會帶來極大的性能提升。BlockCache緩存對象是一系列Block塊,一個Block默認為64K,由物理上相鄰的多個KV數據組成。BlockCache同時利用了空間局部性和時間局部性原理,前者表示最近將讀取的KV數據很可能與當前讀取到的KV數據在地址上是鄰近的,緩存單位是Block(塊)而不是單個KV就可以實現空間局部性;后者表示一個KV數據正在被訪問,那么近期它還可能再次被訪問。當前BlockCache主要有兩種實現——LRUBlockCache和BucketCache,前者實現相對簡單,而后者在GC優化方面有明顯的提升。

      Region:數據表的一個分片,當數據表大小超過一定閾值就會“水平切分”,分裂為兩個Region。Region是集群負載均衡的基本單位。通常一張表的Region會分布在整個集群的多臺RegionServer上,一個RegionServer上會管理多個Region,當然,這些Region一般來自不同的數據表。一個Region由一個或者多個Store構成,Store的個數取決于表中列簇(columnfamily)的個數,多少個列簇就有多少個Store。HBase中,每個列簇的數據都集中存放在一起形成一個存儲單元Store,因此建議將具有相同IO特性的數據設置在同一個列簇中。每個Store由一個MemStore和一個或多個HFile組成。MemStore稱為寫緩存,用戶寫入數據時首先會寫到MemStore,當MemStore寫滿之后(緩存數據超過閾值,默認128M)系統會異步地將數據f lush成一個HFile文件。顯然,隨著數據不斷寫入,HFile文件會越來越多,當HFile文件數超過一定閾值之后系統將會執行Compact操作,將這些小文件通過一定策略合并成一個或多個大文件。

      5. HDFS

      HBase底層依賴HDFS組件存儲實際數據,包括用戶數據文件、HLog日志文件等最終都會寫入HDFS落盤。HDFS是Hadoop生態圈內最成熟的組件之一,數據默認三副本存儲策略可以有效保證數據的高可靠性。HBase內部封裝了一個名為DFSClient的HDFS客戶端組件,負責對HDFS的實際數據進行讀寫訪問。

      HBase 大數據

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:kafka性能調優解密(二)-- Producer端
      下一篇:鯤鵬云服務器源碼安裝php7
      相關文章
      久久精品国产亚洲AV未满十八| 亚洲国语精品自产拍在线观看| 亚洲成亚洲乱码一二三四区软件| 亚洲乱码国产一区网址| 久久精品亚洲日本波多野结衣| 99亚洲男女激情在线观看| 亚洲成a人无码亚洲成www牛牛| 亚洲精品无码久久久久秋霞| 亚洲日韩一区二区三区| 在线亚洲午夜片AV大片| 亚洲影院天堂中文av色| 亚洲夂夂婷婷色拍WW47| 亚洲精品精华液一区二区| 亚洲精品国产av成拍色拍| 亚洲成aⅴ人片久青草影院按摩| 亚洲国产精品嫩草影院| 亚洲国产成人AV网站| 亚洲av区一区二区三| 亚洲一区二区精品视频| 亚洲自偷自偷在线制服 | 亚洲色欲或者高潮影院| 久久亚洲春色中文字幕久久久| 久久精品九九亚洲精品| 亚洲成人福利网站| 亚洲 欧洲 视频 伦小说| 亚洲精品欧美综合四区| 国产亚洲精品美女| 亚洲精品WWW久久久久久| 伊人久久精品亚洲午夜| 亚洲av中文无码乱人伦在线r▽ | 久久久久亚洲精品无码系列| 久久精品国产精品亚洲艾| 久久亚洲精品人成综合网 | 国产成人精品亚洲精品| 亚洲色精品vr一区二区三区| 亚洲AV日韩AV永久无码下载| 亚洲香蕉免费有线视频| 国产成人亚洲合集青青草原精品| 亚洲色成人网站WWW永久四虎| 免费在线观看亚洲| 国产亚洲精AA在线观看SEE|