HBase——簡介及數據模型(一)

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

下一節:HBase——架構設計(二)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章