1. 程式人生 > >HBase入門(一)

HBase入門(一)

1.HBase是依賴HDFS的,HBase的資料是存在RegionServer上的,然後RegionServer資料又存在於datanode.
2. HBase有兩個節點Master(主)和RegionServer(從)
3. HBase操作表的時候需要元資料,元資料存在zooKeeper上面.
4. 之前學習中,有一條資料,這條資訊的所有資料都先進到記憶體中,然後再把記憶體中的資料溢寫到磁盤裡面,但是HBase不是.這樣不安全,記憶體資料會丟失.

一. HBase儲存資料一個過程
HBase不支援事務的回滾和撤銷,所以
HBase會先把資料寫到本地Hlog中
然後把Hlog的資料儲存到HDFS中
用到的技術WAL(預寫式日誌).write-Ahead-log
如果寫入Hlog成功後,才會把資料放到記憶體中.
如果Hlog寫入失敗,不會把資料放到記憶體中.
記憶體中的閾值為64M,如果達到會把資料寫到region
( 一個RegionServer裡面存在多個region)
如果當前記憶體儲存的資料達到當前當前虛擬機器堆記憶體總大小40%,也會開始寫入.
如果最後regin存在要寫入的資料,整個過程才成功,否則,這個資料是寫入不成功的.
6.好處


HBase這樣儲存資料的好處是,當記憶體向region傳輸資料的時候,突然中斷,那麼region中就會存在髒資料,也就是讀取一半資料,並沒有意義,但是雖然中斷,但是Hlog中的資料依舊存在,當恢復以後,記憶體從Hlog重新讀取資料傳入到region中.並刪除掉之前的髒資料.
但是如果是資料向Hlog寫入過程突然中斷的話,依舊會造成資料丟失.
尚矽谷大資料
二.HBase的參考系統時Zookeeper
zookeeper
hbase的元資料儲存在Zookeeper中的
當用戶啟動HBase時候,啟動了HMaster,RegionServer
當HMaster啟動成功的時候,會從Zookeeper中拿RegionServer的region所有資料資訊.
當HMaster啟動成功的時候,會向Zookeeper寫入當前自己執行的狀態,為了高可用以及HMaster和RegionServer之間的通訊.
當HMaster初始化的時候,會從Zookeeper將所有資訊一次性載入到自己這裡.,當客戶端有對資料操作請求的時候,會先訪問HMaster,然後HMaster會把客戶端要訪問的RegionServer中的region的位置返回給客戶端,也就是元資料給客戶端.
客戶端拿到元資料後直接去操作region,讀和寫的過程都是直接操作region.
如果HMaster掛掉後,客戶端仍然可以操作region,但是由於HMaster掛掉了,可能會造成資料不一致的情況,造成資料損失,所以要及時監控HMaster的狀態.

三.HBase和RDBMS對比
RDBMS
結構:
資料庫以表的形式存在
支援FAT,NTFS,EXT檔案系統
使用Commit log儲存日誌
參考系統是座標系統
使用主鍵(PK)
支援分割槽
使用行,列單元格

功能:
支援向上擴充套件
使用SQL查詢
面向行,即每一行都是一個連續單元
資料總量依賴於伺服器配置
適合結構話資料(也就是有固定資料型別的資料)
傳統關係型資料庫一般都是中心化的
支援事務,支援Join,ACID

HBase
結構:
資料庫以region的形式存在
支援HDFS檔案系統
使用WAL儲存日誌
參考系統時Zookeeper
使用行鍵(row key)
支援分片
使用行、列、列族和單元格

功能:
支援向外擴充套件
使用API和MapReduce來訪問HBase表資料
面向列,即每一列都是一個連續的單元
資料總量不依賴具體某臺機器,而取決於機器數量
HBase不支援ACID(Atomicity,Consistency,Isolation,Durability)
適合 結構化資料和非結構化資料
一般都是分佈的
HBase不支援事務
不支援Join
在這裡插入圖片描述