原創|行業資訊|編輯:龔雪|2015-11-17 10:11:18.000|閱讀 1143 次
概述:Hbase是運行在Hadoop上的NoSQL數據庫,它是一個分布式的和可擴展的大數據倉庫,也就是說HBase能夠利用HDFS的分布式處理模式,并從Hadoop的MapReduce程序模型中獲益。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
HBase是一個分布式的、面向列的開源數據庫,該技術來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫。另一個不同的是HBase基于列的而不是基于行的模式。
HBase適合于非結構化數據存儲的數據庫。介于Map Entry 和 DB row之間的一種數據存儲方式。而RDBMS是一個遵循“Codd的十二條規律”的數據庫。主要區別如下:
數據類型: HBase只有簡單的字符串類型,它只保存字符串所有的類型都是交給用戶自己處理。關系型數據庫可以選擇類型
數據操作: HBase操作只有很簡單的插入、查詢等操作,表與表之間是分離的,沒有join
存儲模式: HBase基于列存儲,每個列族由幾個文件保存,不同列族的文件是分離的。傳統的關系數據庫是基于表格結構和行模式保存的
數據維護: HBase更新操作時,舊的版本仍然保留,實際上時插入了新數據。傳統關系數據庫是替換修改
可伸縮性: HBase能夠容易的增加或者減少硬件數量
組成部件說明:
Row Key:Table主鍵行鍵Table中記錄按照Row Key排序;
Timestamp:每次對數據操作對應的時間戳,也即數據的version number;
Column Family: 列簇,一個table在水平方向有一個或者多個列簇,列簇可由任意多個Column組成,列簇支持動態擴展,無須預定義數量及類型,二進制存儲,用戶需自行進行類型轉換。
組成部件說明
Client:
使用HBase RPC機制與HMaster和HRegionServer進行通信
Client與HMaster進行通信進行管理類操作
Client與HRegionServer進行數據讀寫類操作
Zookeeper:
Zookeeper Quorum存儲-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注冊到Zookeeper中,HMaster隨時感知各個HRegionServer的健康狀況
Zookeeper避免HMaster單點問題
HMaster:
HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master在運行
主要負責Table和Region的管理工作:
1 管理用戶對表的增刪改查操作
2 管理HRegionServer的負載均衡,調整Region分布
3 Region Split后,負責新Region的分布
4 在HRegionServer停機后,負責失效HRegionServer上Region遷移
HRegionServer:
HBase中最核心的模塊,主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據
在表結構設計時,HBase里有tall narrow和flat wide兩種設計模式,前者行多列少,整個表結構高且窄;后者行少列多,表結構平且寬;但是由于HBase只能在行的邊界做split,因此如果選擇flat wide的結構,那么在特殊行變的超級大(超過file或region的上限)時,那么這種行為會導致compaction,而這樣做是要把row讀內存的~~因此,強烈推薦使用tall narrow模式設計表結構,這樣結構更趨近于keyvalue,性能更好。
本文參考 轉載請注明轉載自慧都控件網
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn