Hadoop生態系統
非關係型數據庫知識面擴展
- Cassandra hbase mongodb
- Couchdb,文件存儲數據庫
- Neo4j非關係型圖數據庫
HBase簡介
- Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮、實時讀寫的分佈式數據庫
- 利用Hadoop HDFS作爲其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper作爲其分佈式協同服務
- 主要用來存儲非結構化和半結構化的鬆散數據(列存NoSQL數據庫)
HBase數據模型
ROW KEY
- 決定一行數據
- 按字典順序排序的
- Row Key只能存儲64k的字節數據
Row Key 的設計一般加時間戳
Column Family列族 & qualifier列
- HBase表中的每個列都歸屬於某個列族,列族必須作爲表模式(schema)定義的一部分預先給出。如create
‘test’,‘course’;
列名以列族作爲前綴,每個’列族’都可以有多個列成員(column);如course:math,course:english,新的列族成員(列)可以隨後按需、動態加入; - 權限控制、存儲以及調優都是在列族層面進行的;
- HBase把同一列族裏面的數據存儲在同一目錄下,由幾個文件保存
Timestamp時間戳 - 在HBase每個cell存儲單元對同一份數據有多個版本,根據唯一的時間戳來區分每個版本之間的差異,不同版本的數據按照時間倒序排序,最新的數據版本排在最前面。
- 時間戳的類型是64位整型
- 時間戳可以由HBase(在數據寫入時自動)賦值,此時時間戳是精確到毫秒的當前系統時間。
- 時間戳也可以由客戶顯示賦值,如果應用程序要避免數據版本衝突,就必須自己生成具有唯一性的時間戳。
Cell單元格
- 由行和列的座標交叉決定;
- 單元格是有版本的;
- 單元格的內容是未解析的字節數組;
由{row key , column(=+,version)}唯一確定的單元。
cell中的數據是沒有類型的,全部是字節碼形式存貯。
HLog(WAL log)
- HLog文件就是一個普通的Hadoop SequenceFile,Sequence File的Key是HLogKey對象,HLogKey中記錄了寫入數據的歸屬信息,除了table和region名字外,同時還包括sequence number和timestamp,timestamp是“寫入時間”,sequence number的起始值爲0,或者是最近一次存入文件系統中sequence number
- HLog SequenceFile的Value是HBase的Key Value對象,即對應Hfile中的Key Value