柚子快報(bào)激活碼778899分享:分布式數(shù)據(jù)庫HBase
柚子快報(bào)激活碼778899分享:分布式數(shù)據(jù)庫HBase
文章目錄
前言
一、HBase概述
1.1.1 什么是HBase
HBase是一個分布式的、面向列的開源數(shù)據(jù)庫HBase是Google BigTable的開源實(shí)現(xiàn)HBase不同于一般的關(guān)系數(shù)據(jù)庫, 適合非結(jié)構(gòu)化數(shù)據(jù)存儲HBase是一種分布式、可擴(kuò)展、支持海量數(shù)據(jù)存儲的 NoSQL數(shù)據(jù)庫。HBase是依賴Hadoop的。為什么HBase能存儲海量的數(shù)據(jù)?因?yàn)镠Base是在HDFS的基礎(chǔ)之上構(gòu)建的,HDFS是分布式文件系統(tǒng)。HBase在HDFS之上提供了高并發(fā)的隨機(jī)寫和支持實(shí)時(shí)查詢,這是HDFS不具備的。基于「列式存儲」,存儲數(shù)據(jù)的“結(jié)構(gòu)”可以地非常靈活。
1.1.2 BigTable
BigTable是Google設(shè)計(jì)的分布式數(shù)據(jù)存儲系統(tǒng),用來處理海量的數(shù)據(jù)的一種非關(guān)系型的數(shù)據(jù)庫。
適合大規(guī)模海量數(shù)據(jù),PB級數(shù)據(jù);分布式、并發(fā)數(shù)據(jù)處理,效率極高;易于擴(kuò)展,支持動態(tài)伸縮適用于廉價(jià)設(shè)備;不適用于傳統(tǒng)關(guān)系型數(shù)據(jù)的存儲;
1.1.4 什么是非結(jié)構(gòu)化數(shù)據(jù)存儲
結(jié)構(gòu)化數(shù)據(jù)
適合用二維表來展示的數(shù)據(jù)
非結(jié)構(gòu)化數(shù)據(jù)
非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整沒有預(yù)定義的數(shù)據(jù)模型不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)辦公文檔、文本、圖片、XML, HTML、各類報(bào)表、圖像和音頻/視頻信息
1.1.5 HBase在Hadoop生態(tài)中的地位
HBase是Apache基金會頂級項(xiàng)目 HBase基于HDFS進(jìn)行數(shù)據(jù)存儲 HBase可以存儲超大數(shù)據(jù)并適合用來進(jìn)行大數(shù)據(jù)的實(shí)時(shí)查詢
1.1.6 HBase與HDFS
HBase建立在Hadoop文件系統(tǒng)上, 利用了HDFS的容錯能力HBase提供對數(shù)據(jù)的隨機(jī)實(shí)時(shí)讀/寫訪問功能HBase內(nèi)部使用哈希表, 并存儲索引, 可以快速查找HDFS中數(shù)據(jù)
1.1.7 HBase使用場景
瞬間寫入量很大大量數(shù)據(jù)需要長期保存, 且數(shù)量會持續(xù)增長HBase不適合有join, 多級索引, 表關(guān)系復(fù)雜的數(shù)據(jù)模型適合場景(大型互聯(lián)網(wǎng)公司都用HBase)表數(shù)據(jù)量大(至少億級別以上) 寫入量大(每天千萬級別以上)?append型業(yè)務(wù)(比如日志,聊天記錄等)?讀取量相對少(讀取:寫入<=1/10)?讀取場景簡單、不經(jīng)常變化、無排序要求?無跨行跨表事務(wù)要求
不適合場景
HBase僅支持行級事務(wù)(銀行業(yè)務(wù)基本不用HBase)類似DW等全量讀取(hive), 不太適合 ?
1.2.4 HBase 與 傳統(tǒng)關(guān)系數(shù)據(jù)庫的區(qū)別
HBase關(guān)系型數(shù)據(jù)庫數(shù)據(jù)庫大小PB級別GB TB數(shù)據(jù)類型Bytes豐富的數(shù)據(jù)類型事務(wù)支持ACID只支持單個Row級別全面的ACID支持, 對Row和表索引只支持Row-key支持吞吐量百萬寫入/秒數(shù)千寫入/秒
二.HBase數(shù)據(jù)模型
?????? HBase的設(shè)計(jì)理念依據(jù)google的BigTable論文,論文中對于數(shù)據(jù)模型的首句介紹
Bigtable是一個稀疏的,分布式的,持久的多維排序的map。
?????? 之后對于映射的解釋如下:
該映射由行建,列建和時(shí)間戳索引;映射中的每個值都是一個未解釋的字節(jié)數(shù)組。
?????? 最終HBase關(guān)于數(shù)據(jù)模型和BigTable的對應(yīng)關(guān)系如下:
HBase使用與BigTable非常相似的數(shù)據(jù)模型。用戶將數(shù)據(jù)行存儲在帶標(biāo)簽的表中。數(shù)據(jù)行具有可排序的鍵和任意數(shù)量的列。該表存儲稀疏,因此如果用戶喜歡,同意表中的行可以具有瘋狂變化的列。
????? 最終理解Hbase數(shù)據(jù)模型的關(guān)鍵在于稀疏,分布式,多維,排序的映射,期中映射map值代非關(guān)系型數(shù)據(jù)庫的key-value結(jié)構(gòu)。
2.1、HBase邏輯結(jié)構(gòu)
邏輯結(jié)構(gòu)分析:
??? Region:相當(dāng)于表,數(shù)據(jù)量大的時(shí)候會進(jìn)行切片,相當(dāng)于數(shù)據(jù)庫的水平分表分庫。??? store:每個Store其實(shí)就是一個列族的數(shù)據(jù)(所以我們可以說HBase是基于列族存儲的)??? 列族(Column Family):在HBase里邊,先有列族,后有列;可以簡單理解為:列的屬性類別。??? 列(Column Qualifier,列修飾符):在HBase中用列修飾符(Column Qualifier)來標(biāo)識每個列。??? 行鍵(RowKey):定位一行數(shù)據(jù)的唯一值。
2.2.HBase物理存儲結(jié)構(gòu)
?????? 物理存儲結(jié)構(gòu)即為數(shù)據(jù)映射關(guān)系,而在概念試圖的空單元格,底層實(shí)際根本不存儲。
2.3數(shù)據(jù)模型
1. 表(Table) HBase采用表來組織數(shù)據(jù),表由行和列組成,列劃分為若干個列族。
2. 行(Row) 每個HBase表都由若干行組成,每個行由行鍵(Row Key)來標(biāo)識。訪問表中的行只有3種方式:通過單個行鍵訪問;通過一個行鍵的區(qū)間來訪問;全表掃描。
3. 列族(Colume) 一個HBase表被分組成許多“列族”的集合,它是基本的訪問控制單元。列族需要在表創(chuàng)建時(shí)就定義好,數(shù)量不能太多(HBase的一些缺陷使得列族數(shù)量只限于幾十個),而且不要頻繁修改。存儲在一個列族當(dāng)中的所有數(shù)據(jù),通常都屬于同一種數(shù)據(jù)類型,這通常意味著具有更高的壓縮率。
4. 列限定符 列族里的數(shù)據(jù)通過列限定符(或列)來定位。列限定符不用事先定義,也不需要在不同行之間保持一致。列限定符沒有數(shù)據(jù)類型,總被視為字節(jié)數(shù)組byte[]。
5. 單元格 在HBase表中,通過行、列族和列限定符確定一個“單元格”(Cell)。單元格中存儲的數(shù)據(jù)沒有數(shù)據(jù)類型,總被視為字節(jié)數(shù)組 byte[]。每個單元格中可以保存一個數(shù)據(jù)的多個版本,每個版本對應(yīng)一個不同的時(shí)間戳。
6. 時(shí)間戳 每個單元格都保存著同一份數(shù)據(jù)的多個版本,這些版本采用時(shí)間戳進(jìn)行索引。每次對一個單元格執(zhí)行操作(新建、修改、刪除)時(shí),HBase都會隱式地自動生成并存儲一個時(shí)間戳。
三.HBase架構(gòu)角色
(1) Master實(shí)現(xiàn)類為HMaster,負(fù)責(zé)監(jiān)控集群中所有的 RegionServer 實(shí)例。主要作用如下:“管理元數(shù)據(jù)表格 hbase:meta,接收用戶對表格創(chuàng)建修改刪除的命令并執(zhí)行
(2)監(jiān)控region 是否需要進(jìn)行負(fù)載均衡,故障轉(zhuǎn)移和region 的拆分。e通過啟動多個后臺線程監(jiān)控實(shí)現(xiàn)上述功能
??????? 周期性監(jiān)控region 分布在regionServer 上面是否均衡,由參數(shù) hbase.balancer.period 控周期時(shí)間,默認(rèn)5 分鐘。
定期檢查和清理hbase:meta中的數(shù)據(jù)。meta表內(nèi)容在進(jìn)階中介紹。
把master 需要執(zhí)行的任記錄到預(yù)寫日志W(wǎng)AL中,如果 master 宕機(jī),讓 backupMaster讀取日志繼續(xù)干。 (2) Region Server Region Server 實(shí)現(xiàn)類為 HRegionServer,主要作用如下:
負(fù)責(zé)數(shù)據(jù) cell 的處理,例如寫入數(shù)據(jù) put,查詢數(shù)據(jù) get 等拆分合并region 的實(shí)際執(zhí)行者,有 master 監(jiān)控,有regionServer 執(zhí)行。
(3)Zookeeper HBase 通過 7ookeeper 來做 master 的高可用、記錄 RegionServer 的部署信息、并且存儲有meta 表的位置信息。 HBase 對于數(shù)據(jù)的讀寫操作時(shí)直接訪問 Zookeeper 的,在2.3 版本出 Master Registry模式,客戶可以直接訪間 master。使月此功能,會加大對 master 的壓力,減輕對 Zokeeper的壓力。 (4) HDFS HDFS 為 Hbase 提供最終的底層數(shù)據(jù)存儲服務(wù),同時(shí)為 HBase 提供高容錯的支持。
擴(kuò)展知識
一.Dubboy框架(遠(yuǎn)程過程調(diào)用)
1.分布式系統(tǒng)中的相關(guān)概念
傳統(tǒng)項(xiàng)目和互聯(lián)網(wǎng)項(xiàng)目
大型互聯(lián)網(wǎng)項(xiàng)目的架構(gòu)目標(biāo)
集群和分布式
進(jìn)行集群的服務(wù)器-可以進(jìn)行負(fù)載均衡,實(shí)現(xiàn)了高性能、高可用的目標(biāo)
?同時(shí)進(jìn)行集群和分布式的服務(wù)器-除了集群實(shí)現(xiàn)的功能和目標(biāo),還可以實(shí)現(xiàn)可伸縮、高可擴(kuò)展的目標(biāo)
柚子快報(bào)激活碼778899分享:分布式數(shù)據(jù)庫HBase
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。