26Hbase介紹及其數(shù)據(jù)模型和架構(gòu)(hbase學(xué)習(xí)1)

Hbase介紹

Hadoop生態(tài)系統(tǒng)

spark已經(jīng)替代mahout

hbase簡介:

非關(guān)系型數(shù)據(jù)庫知識面擴(kuò)展
cassandra、hbase、mongodb(文檔型數(shù)據(jù)庫)、redis
couchdb,文件存儲數(shù)據(jù)庫
Neo4j非關(guān)系型圖數(shù)據(jù)庫

Hbase

  • Hadoop Database,是一個(gè)高可靠性、高性能、面向列(面向列的KV數(shù)據(jù)庫)、可伸縮(動態(tài)擴(kuò)展機(jī)器。不需要停服務(wù))、實(shí)時(shí)讀寫的分布式數(shù)據(jù)庫
  • 利用Hadoop HDFS作為其文件存儲系統(tǒng),利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù),利用Zookeeper作為其分布式協(xié)同服務(wù)
  • 主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)(列存 NoSQL 數(shù)據(jù)庫)
    官網(wǎng)簡介http://hbase.apache.org/

Use Apache HBase? when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.

hbase數(shù)據(jù)模型

hbase中一行數(shù)據(jù)row key類似于主鍵。cf(column family列族:一堆列的集合)time stamp 時(shí)間戳:控制版本

ROW KEY
決定一行數(shù)據(jù)
按照字典順序排序的。
Row key只能存儲64k的字節(jié)數(shù)據(jù)(一般存10到100個(gè)字節(jié))

Column Family列族 & qualifier列
HBase表中的每個(gè)列都?xì)w屬于某個(gè)列族,列族必須作為表模式(schema)定義的一部分預(yù)先給出。如 create ‘test’, ‘course’;
列名以列族作為前綴,每個(gè)“列族”都可以有多個(gè)列成員(column);如course:math, course:english, 新的列族成員(列)可以隨后按需、動態(tài)加入;
權(quán)限控制、存儲以及調(diào)優(yōu)都是在列族層面進(jìn)行的;
HBase把同一列族里面的數(shù)據(jù)存儲在同一目錄下,由幾個(gè)文件保存。

Timestamp時(shí)間戳
在HBase每個(gè)cell存儲單元對同一份數(shù)據(jù)有多個(gè)版本,根據(jù)唯一的時(shí)間戳來區(qū)分每個(gè)版本之間的差異,不同版本的數(shù)據(jù)按照時(shí)間倒序排序,最新的數(shù)據(jù)版本排在最前面。
時(shí)間戳的類型是 64位整型。
時(shí)間戳可以由HBase(在數(shù)據(jù)寫入時(shí)自動)賦值,此時(shí)時(shí)間戳是精確到毫秒的當(dāng)前系統(tǒng)時(shí)間。
時(shí)間戳也可以由客戶顯式賦值,如果應(yīng)用程序要避免數(shù)據(jù)版本沖突,就必須自己生成具有唯一性的時(shí)間戳。

Cell單元格
由行和列的坐標(biāo)交叉決定;
單元格是有版本的;
單元格的內(nèi)容是未解析的字節(jié)數(shù)組;
由{row key, column( =<family> +<qualifier>), version} 唯一確定的單元。
cell中的數(shù)據(jù)是沒有類型的,全部是字節(jié)數(shù)組形式存貯。(整數(shù)1和字符串1的字節(jié)數(shù)組值不一樣,所以存值要注意)

HLog(WAL log)(write ahead log預(yù)寫日志wal)
HLog文件就是一個(gè)普通的Hadoop Sequence File,Sequence File 的Key是HLogKey對象,HLogKey中記錄了寫入數(shù)據(jù)的歸屬信息,除了table和region名字外,同時(shí)還包括 sequence number和timestamp,timestamp是” 寫入時(shí)間”,sequence number的起始值為0,或者是最近一次存入文件系統(tǒng)中sequence number。
HLog SequeceFile的Value是HBase的KeyValue對象,即對應(yīng)HFile中的KeyValue。

hbase中文指南
http://abloz.com/hbase/book.html

hbase架構(gòu)

zookeeper:分布式協(xié)助服務(wù),不單單做高可用。從上圖可以看出,zk相當(dāng)于數(shù)據(jù)中心。client和hmaster都和zk做通信
圖上下面(hadoop)存儲數(shù)據(jù)。上面為hbase。

Client
包含訪問HBase的接口并維護(hù)cache(客戶端緩存)來加快對HBase的訪問

Zookeeper
保證任何時(shí)候,集群中只有一個(gè)活躍master(HA功能)
存貯所有Region的尋址入口。(只存入口信息)
實(shí)時(shí)監(jiān)控Region server的上線和下線信息。并實(shí)時(shí)通知Master
存儲HBase的schema和table元數(shù)據(jù)

Master
為Region server分配region(就是分配表)
負(fù)責(zé)Region server的負(fù)載均衡
發(fā)現(xiàn)失效的Region server并重新分配其上的region
管理用戶對table的增刪改操作

RegionServer
Region server維護(hù)region,處理對這些region的IO請求
Region server負(fù)責(zé)切分在運(yùn)行過程中變得過大的region

Region
HBase自動把表水平劃分成多個(gè)區(qū)域(region),每個(gè)region會保存一個(gè)表里面某段連續(xù)的數(shù)據(jù)
每個(gè)表一開始只有一個(gè)region,隨著數(shù)據(jù)不斷插入表,region不斷增大,當(dāng)增大到一個(gè)閾值的時(shí)候,region就會等分會兩個(gè)新的region(裂變)(按照rowkey等分)
當(dāng)table中的行不斷增多,就會有越來越多的region。這樣一張完整的表被保存在多個(gè)Regionserver 上。
一張表對應(yīng)至少一個(gè)region。

Memstore 與 storefile
一個(gè)region由多個(gè)store組成,一個(gè)store對應(yīng)一個(gè)CF(列族)
store包括位于內(nèi)存中的memstore和位于磁盤的storefile寫操作先寫入memstore,當(dāng)memstore中的數(shù)據(jù)達(dá)到某個(gè)閾值,hregionserver會啟動flashcache進(jìn)程寫入storefile,每次寫入形成單獨(dú)的一個(gè)storefile
當(dāng)storefile文件的數(shù)量增長到一定閾值后,系統(tǒng)會進(jìn)行合并(minor(小范圍合并3到10個(gè))、major compaction(當(dāng)前region所有合并)),在合并過程中會進(jìn)行版本合并和刪除工作(majar),形成更大的storefile
當(dāng)一個(gè)region所有storefile的大小和數(shù)量超過一定閾值后,會把當(dāng)前的region分割為兩個(gè),并由hmaster分配到相應(yīng)的regionserver服務(wù)器,實(shí)現(xiàn)負(fù)載均衡
客戶端檢索數(shù)據(jù),先在memstore找,找不到再找storefile

HRegion是HBase中分布式存儲和負(fù)載均衡的最小單元。最小單元就表示不同的HRegion可以分布在不同的 HRegion server上。
HRegion由一個(gè)或者多個(gè)Store組成,每個(gè)store保存一個(gè)columns family。
每個(gè)Strore又由一個(gè)memStore和0至多個(gè)StoreFile組成。如圖:StoreFile以HFile格式保存在HDFS上。



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容