1. 程式人生 > >大資料學習系列之—HBASE

大資料學習系列之—HBASE

  1. hadoop生態系統

zookeeper負責協調 hbase必須依賴zookeeper

flume 日誌工具

sqoop 負責 hdfs dbms 資料轉換 資料到關係型資料庫轉換 大資料學習群119599574

  1. hbase簡介

hadoop database

  • 是一個高可靠性、高效能、面向列、可伸縮、實時讀寫的分散式資料庫
  • 利用Hadoop HDFS作為其檔案儲存系統,利用Hadoop MapReduce 來處理Hbase中的海量資料,利用Zookeeper作為其分散式系統服務
  • 主要用來儲存非結構化和半結構化的鬆散資料(列存NoSql資料庫)

hbase資料模型

ROW KEY

  1. 決定一行資料
  2. 按照欄位順序排序
  3. Row key只能儲存64k的位元組資料

Column Family列族 &qualifier列

  • Hbase表中的每個列都歸屬於某個列族,列族必須作為表模式定義的一部分給出 如create 'test';
  • 列名以列族作為字首,每個“列族”都可以y9uo多個列成員column,如test:testfirst,新的列成員可以隨後按需、動態加入;
  • 許可權控制,儲存以及調優都是列族層面進行的
  • Hbase把同一列族裡面的資料儲存在同一目錄下,由幾個檔案儲存

Timestamp 時間戳

  • 在HBase每個cell儲存單元對同一份資料有多個版本,根據唯一的時間戳來區分每個版本之間的差異,不同版本的資料按照時間倒序排序,最新的資料版本排在最前面。
  • 時間戳的型別是 64位整型。
  • 時間戳可以由HBase(在資料寫入時自動)賦值,此時時間戳是精確到毫秒的當前系統時間。
  • 時間戳也可以由客戶顯式賦值,如果應用程式要避免資料版本衝突,就必須自己生成具有唯一性的時間戳。

cell 單元格

  1. 由行和列的座標交叉決定;
  2. 單元格是有版本的;
  3. 單元格的內容是未解析的位元組陣列;
  • 由{row key, column( =<family> +<qualifier>), version} 唯一確定的單元。
  • cell中的資料是沒有型別的,全部是位元組碼形式存貯。

HLog(wal log)

  • HLog檔案就是一個普通的Hadoop Sequence File,Sequence File 的Key是HLogKey物件,HLogKey中記錄了寫入資料的歸屬資訊,除了table和region名字外,同時還包括 sequence number和timestamp,timestamp是” 寫入時間”,sequence number的起始值為0,或者是最近一次存入檔案系統中sequence number。
  • HLog SequeceFile的Value是HBase的KeyValue物件,即對應HFile中的KeyValue。

HBase 架構

client

  1. 包含訪問HBase的介面並維護cache來加快對HBase的訪問

zookeeper

  1. 保證任何時候,叢集中只有一個master
  2. 儲存所有Region的定址入口
  3. 實時監控Region server的上線和下線資訊。並實時通知master
  4. 儲存Hbase的 schema 和table元資料

Master

  1. 為Region server 分配region
  2. 負責Region server的負載均衡
  3. 發現失效的Region server並重新分配騎上的region
  4. 管理使用者對table的增刪改操作

RegionServer

  1. Region server維護region,處理對這些region的IO請求
  2. Region server負責切分在執行過程中變得過大的region

Region

  1. Hbase自動把表水平劃分成多個區域(region),每個region會儲存一個表裡面某段連續的資料
  2. 每個表開始只有一個region,隨著資料不斷插入表,region不斷增大,當增大到一個閾值時,region就會分為兩個新的region(裂變)
  3. 當table中的行不斷增多,就會有越來越多的region。這樣一張完整的表儲存在多個regionServer上。 大資料學習群119599574

Memstore與storefile

  1. 一個region由多個store組成,一個store對應一個列族(cf)
  2. store包括位於記憶體中的memstore和位於磁碟的storefile寫操作先寫入memstore,當memstore中的資料達到某個閾值,hregionserver會啟動flashcacher程序寫入storefile,每次寫入形成單獨的一個storefile
  3. 當storefile檔案的數量增長到一定閾值後,系統會程序合併 (minor、major compaction),在合併過程中會進行版本合併和刪除工作major形成更大的storefile
  4. 當一個region所有storefile的大小和數量超過一定閾值後,會把當前的regjion分割為兩個,並由hmaster分配到相應的regionserver伺服器,達到負載均衡
  5. 客戶端檢索資料,現在memstore找,找不到再找storefile

HRegion

  1. Hregion是HBase中分散式儲存和負載均衡的最小單元。最小單元就表示不同的HRegion可以分佈在不通的HRegion server上
  2. HRegion 由一個或者多個Store組成,每個store儲存一個column family
  3. 每個Store又由一個memStore和0至多個StoreFile組成。 StoreFIle 以HFILe格式保存於HDFS上。