資料庫是儲存資料的,在我們工作中是必需要接觸到的。接下來說說hadoop中用到的資料庫。
HBase:
一、說明是HBase?
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統。利用HBase技術可在便宜PC Server上搭建起大規模結構化存儲叢集。HBase利用Hadoop HDFS作為其檔案存儲系統,利用Hadoop MapReduce來處理HBase中的海量資料,利用Zookeeper作為協調工具。
例如以下圖,是hbase的資料模型
1、邏輯資料模型
2、實體資料模型
3、HBASE中的每一張表,就是所謂的BigTable。稀疏表。
RowKey 和 ColumnKey 是二進制值byte[],按字典順序排序。
Timestamp 是一個 64 位整數;
value 是一個未解釋的位元組數組byte[]。
表中的不同行能夠擁有不同數量的成員。即支援“動态模式“模型
字元串、整數、二進制串甚至串行化的結構都能夠作為行鍵
表依照行鍵的“逐位元組排序”順序對行進行有序化處理
表内資料很‘稀疏’,不同的行的列的數全然目能夠大不同樣
能夠僅僅對一行上“鎖”
對行的寫操作是始終是“原子”的
列必須用‘族’(family)來定義
随意一列有例如以下形式
“族:标簽”
當中。族和标簽都可為随意形式的串
實體上将同“族”資料存儲在一起
資料可通過時間戳區分版本号
表是存放資料的。
表由行和列組成
4、資料模型
Row Key: 行鍵,Table的主鍵。Table中的記錄依照Row Key排序
Timestamp: 時間戳,每次資料操作相應的時間戳,能夠看作是資料的version number
Column Family:列簇,Table在水準方向有一個或者多個Column Family組成。一個Column Family中能夠有随意多個Column組成。即Column Family支援動态擴充,無需預先定義Column的數量以及類型。全部Column均以二進制格式存儲。使用者須要自行進行類型轉換。
5、實體存儲
Table 在行的方向上切割為多個HRegion,一個region由[startkey,endkey)表示。每一個HRegion分散在不同的RegionServer中
6、架構體系
Client 包括訪問hbase 的接口。client 維護着一些cache 來加快對hbase 的訪問,比方regione 的位置資訊
Zookeeper
保證不論什麼時候,叢集中僅僅有一個running master
存貯全部Region 的尋址入口
實時監控Region Server 的狀态,将Region server 的上線和下線資訊,實時通知給Master
存儲Hbase 的schema,包含有哪些table。每一個table 有哪些column family
Master 能夠啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master執行
為Region server 配置設定region
負責region server 的負載均衡
發現失效的region server 并又一次配置設定其上的region
架構體系
Region Server
維護Master 配置設定給它的region,處理對這些region 的IO 請求
負責切分在執行過程中變得過大的region
能夠看出,client 訪問hbase 上資料的過程并不須要master 參與,尋址訪問zookeeper 和region server,資料讀寫訪問regioneserver。
HRegionServer主要負責響應使用者I/O請求,向HDFS檔案系統中讀寫資料,是HBase中最核心的子產品。
HBase中有兩張特殊的Table。-ROOT-和.META.
.META.:記錄了使用者表的Region資訊。.META.能夠有多個regoin
-ROOT-:記錄了.META.表的Region資訊,-ROOT-僅僅有一個region
Zookeeper中記錄了-ROOT-表的location
Client訪問使用者資料之前須要首先訪問zookeeper,然後訪問-ROOT-表,接着訪問.META.表,最後才幹找到使用者資料的位置去訪問