hbase 的架構分析
hbase 架構分析:
大:一個表可以有上億行,上百萬列。
面向列:面向列簇的儲存和許可權控制,列簇獨立檢索。
稀疏:對於空(null)的列,並不佔用儲存空間,因此,表可以設計的非常稀疏。
無模式(no Schema):每一行都有一個可以排序的主鍵和任意多的列,列可以根據需要動態增加,同一張表中不同的行可以有截然不同的列。
資料多版本:每個單元格中的資料可以有多個版本,預設情況下,版本號自動分配,版本號就是單元格插入時的時間戳。
資料型別單一:HBase中的資料都是位元組陣列,沒有型別。
HBase架構元件
Region Server:提供資料的讀寫服務,當客戶端訪問資料時,直接和Region Server通訊。
HBase Master:Region的分配,DDL操作(建立表,刪除表)。
Zookeeper:是HDFS的一部分,維護一個活躍的叢集狀態。
Hadoop DataNode儲存著Region Server管理的資料,所有HBase資料儲存在HDFS檔案系統中,
Region Server在HDFS DataNode中是可配置的,並使資料儲存靠近在它所需要的地方,就近服務,當往HBase寫資料時Local,但是當一個region被移動之後,HBase的資料就不是Local的,除非做了壓縮(compaction)操作。
NameNode維護物理資料塊的後設資料資訊。
HBase Table 透過rowkey range 的範圍被水平切分成多個Region,一個Region包含了所有的,在Region開始鍵和結束之內的行,Regions被分配到叢集的節點上,成為Region Servers,提供資料的讀寫服務,一個region server 可以服務1000個Region。
Region的分裂策略
egion中儲存的是一張表的資料,當region中的資料條數過多的時候,會直接影響查詢效率。當region過大的時候,region會拆分為兩個region,HMaster會將分裂的region分配到不同的region server上,這樣可以讓請求分散到不同的Region Server上,已達到負載均衡,這也是HBase的一個優點。
當region中最大的store大小超過某個閾值(hbase.hregion.max.filesize=10G)之後就會觸發切分,一個region等分為2個region。
但是在生產線上這種切分策略卻有相當大的弊端(切分策略對於大表和小表沒有明顯的區分):
閾值(hbase.hregion.max.filesize)設定較大對大表比較友好,但是小表就有可能不會觸發分裂,極端情況下可能就1個,形成熱點,這對業務來說並不是什麼好事。
如果設定較小則對小表友好,但一個大表就會在整個叢集產生大量的region,這對於叢集的管理、資源使用、failover來說都不是一件好事。
Compaction操作
指選取一些小的、相鄰的StoreFile將他們合併成一個更大的StoreFile,在這個過程中不會處理已經Deleted或Expired的Cell。一次 Minor Compaction 的結果是更少並且更大的StoreFile。
Zookeeper 協調器
??Zookeeper一般在分散式系統中的成員之間協調共享的狀態資訊,Region Server和活躍的HMaster透過會話連線到Zookeeper,Zookeeper維護短暫的階段,透過心跳機制用於活躍的會話。
有一個特殊的HBase目錄表叫做Meta表,它擁有Region在叢集中的位置資訊,Zookeeper儲存著Meta表的位置。
如下就是客戶端首次讀寫HBase 所發生的事情:
客戶端從Zookeeper的Meta表中獲取Region Server。
客戶端將查詢 META 伺服器,獲取它想訪問的相對應的Region Server 的行鍵,客戶端將這些資訊以及META表的位置資訊。
客戶端將從相應的Region Server獲取行。
META 表 叢集中所有Region的列表
META 表像是一個B樹
META 表結構為:
Key:region start key,region id
Values:Region Server
HBase Region 重新整理(Flush)
??當MemStore 積累到足夠的資料,則整個排序後的集合被寫到HDFS的新的HFile中,每個列簇使用多個HFiles,列簇包含真實的單元格,或者是鍵值對的例項,隨著KeyValue鍵值對在MemStores中編輯排序後,作為檔案重新整理到磁碟上。
??注意列簇是有數量限制的,每一個列族有一個MemStore,當MemStore滿了,則進行重新整理。它也會保持最後一次寫的序列號,這讓系統知道直到現在都有什麼已經被持久化了。
??最高的序列號作為一個meta field 儲存在HFile中,來顯示持久化在哪裡結束,在哪裡繼續。當一個region 啟動後,讀取序列號,最高的則作為新編輯的序列號。
https://blog.csdn.net/hujieliang123/article/details/123193751
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2915157/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HBase 與 Cassandra 架構對比分析的經驗分享架構
- Hbase架構和搭建架構
- 深入HBase架構原理架構
- HBase架構與基礎命令架構
- HBase 系統架構及資料結構架構資料結構
- 理解索引:HBase介紹和架構索引架構
- Hbase學習二:Hbase資料特點和架構特點架構
- 【架構分析】MESA (EGL/GLES)架構分析架構
- SaaS架構:流程架構分析架構
- HBase的架構設計為什麼這麼厲害!架構
- sqoop 架構分析OOP架構
- HBase學習之Hbase的邏輯結構和物理結構
- 架構師必備:HBase行鍵設計與應用架構
- LNMP架構下的程式模型分析LNMP架構模型
- MySQL基礎架構分析MySql架構
- HBase+Elasticsearch,百億級資料中心架構設計實踐Elasticsearch架構
- HBase Region合併分析
- 海量列式非關聯式資料庫HBase 架構,shell與API資料庫架構API
- 分散式搜尋引擎Elasticsearch的架構分析分散式Elasticsearch架構
- 如何構建面向使用者的資料分析架構架構
- MQ系列9:高可用架構分析MQ架構
- 美顏SDK架構技術分析架構
- MySQL高可用架構設計分析MySql架構
- tomcat架構分析及配置詳解Tomcat架構
- 今日頭條技術架構分析架構
- Flutter框架分析(一)--架構總覽Flutter框架架構
- thrift原始碼分析-架構設計原始碼架構
- FMEA在架構設計中的應用分析架構
- 基於React的PC網站前端架構分析React網站前端架構
- Hbase原理的介紹和使用場景分析
- HBase 的結構與表的對應關係
- 現代分散式系統架構的權衡分析分散式架構
- Android平臺架構的介紹和原始碼分析Android架構原始碼
- HongHu雲架構common-service程式碼結構分析架構
- HBase的表結構你設計得不對!
- 【恩墨學院】資料架構:中國電信的Oracle Sharding架構應用案例分析架構Oracle
- SaaS業務架構:業務能力分析架構
- Twitter推薦引擎架構設計分析架構