Hbase 01_初学必知
Hbase
-Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮、實時讀寫的分布式數據庫
?
-利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper作為其分布式協同服務
?
-主要用來存儲非結構化和半結構化的松散數據(列存 NoSQL 數據庫)
?
HBase 數據模型
?
ROW ?KEY
·決定一行數據
·按照字典順序排序的。
·Row key只能存儲64k的字節數據
?
Column Family列族 & qualifier列
·HBase表中的每個列都歸屬于某個列族,列族必須作為表模式(schema)定義的一部分預先給出。如 create ‘test’, ‘course’;
·列名以列族作為前綴,每個“列族”都可以有多個列成員(column);如course:math, course:english, 新的列族成員(列)可以隨后按需、動態加入;
·權限控制、存儲以及調優都是在列族層面進行的;
·HBase把同一列族里面的數據存儲在同一目錄下,由幾個文件保存。
?
Timestamp時間戳
·在HBase每個cell存儲單元對同一份數據有多個版本,根據唯一的時間戳來區分每個版本之間的差異,不同版本的數據按照時間倒序排序,最新的數據版本排在最前面。
·時間戳的類型是 64位整型。
·時間戳可以由HBase(在數據寫入時自動)賦值,此時時間戳是精確到毫秒的當前系統時間。
·時間戳也可以由客戶顯式賦值,如果應用程序要避免數據版本沖突,就必須自己生成具有唯一性的時間戳。
?
Cell單元格
·由行和列的坐標交叉決定;
·單元格是有版本的;
·單元格的內容是未解析的字節數組;
-由{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
·包含訪問HBase的接口并維護cache來加快對HBase的訪問
?
Zookeeper
·保證任何時候,集群中只有一個活躍master
·存貯所有Region的尋址入口。
·實時監控Region server的上線和下線信息。并實時通知Master
·存儲HBase的schema和table元數據
?
Master
·為Region server分配region
·負責Region server的負載均衡
·發現失效的Region server并重新分配其上的region
·管理用戶對table的增刪改操作
?
RegionServer
·Region server維護region,處理對這些region的IO請求
·Region server負責切分在運行過程中變得過大的region
?
Region
·HBase自動把表水平劃分成多個區域(region),每個region會保存一個表里面某段連續的數據
·每個表一開始只有一個region,隨著數據不斷插入表,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region(裂變)
·當table中的行不斷增多,就會有越來越多的region。這樣一張完整的表被保存在多個Regionserver 上。
?
Memstore 與 storefile
·一個region由多個store組成,一個store對應一個CF(列族)
·store包括位于內存中的memstore和位于磁盤的storefile寫操作先寫入memstore,當memstore中的數據達到某個閾值,hregionserver會啟動flashcache進程寫入storefile,每次寫入形成單獨的一個storefile
·當storefile文件的數量增長到一定閾值后,系統會進行合并(minor、major compaction),在合并過程中會進行版本合并和刪除工作(majar),形成更大的storefile
·當一個region所有storefile的大小和數量超過一定閾值后,會把當前的region分割為兩個,并由hmaster分配到相應的regionserver服務器,實現負載均衡
·客戶端檢索數據,先在memstore找,找不到再找storefile
?
·HRegion是HBase中分布式存儲和負載均衡的最小單元。最小單元就表示不同的HRegion可以分布在不同的 HRegion server上。
·HRegion由一個或者多個Store組成,每個store保存一個columns family。
·每個Strore又由一個memStore和0至多個StoreFile組成。如圖:StoreFile以HFile格式保存在HDFS上。
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Hbase 01_初学必知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive 01_初学必知
- 下一篇: 异常处理——namenode启动成功但是