日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

分布式系統(tǒng)概述(Hadoop與HBase的前生今世)

 昵稱10504424 2013-02-20

引子:

古代,人們用牛來拉重物。當(dāng)一頭牛拉不動一根圓木時(shí),他們不曾想過培育更大更壯的牛。

同樣:我們也不需要嘗試開發(fā)超級計(jì)算機(jī),而應(yīng)試著結(jié)合使用更多計(jì)算機(jī)系統(tǒng)。

—— Grace Hopper(計(jì)算機(jī)軟件第一夫人,計(jì)算機(jī)歷史上第一個(gè)BUG的發(fā)現(xiàn)者,也是史上最大BUG千年蟲的制造者)

這就是分布式。


再來看一組令人瞠目結(jié)舌的數(shù)據(jù):

2012年11月11日

支付寶總交易額191億元,訂單1億零580萬筆,生成15TB日志,訪問1931億次內(nèi)存數(shù)據(jù)塊,13億個(gè)物理讀……

從上面的資料中我們看到了:高性能!高并發(fā)!高一致性!高可用性!海量數(shù)據(jù)!

這就是海量數(shù)據(jù)處理。遠(yuǎn)遠(yuǎn)超出單臺計(jì)算機(jī)的能力范疇。

這就是分布式集群能力的體現(xiàn),更說明了采用分布式系統(tǒng)的必要性。


正文:

單臺設(shè)備的性能、資源、可擴(kuò)展性等限制 —— 分布式系統(tǒng)(Hadoop)

傳統(tǒng)關(guān)系型數(shù)據(jù)庫在面對海量數(shù)據(jù)時(shí)的乏力 —— 分布式數(shù)據(jù)庫(HBase)

關(guān)系型數(shù)據(jù)庫,顧名思義,善于處理數(shù)據(jù)模型間復(fù)雜的關(guān)系、邏輯、事務(wù)。

但在處理海量數(shù)據(jù)時(shí)速度、并發(fā)量、可擴(kuò)展性卻慘不忍睹。

當(dāng)然,我們可以通過巧妙的設(shè)計(jì)與二次開發(fā)來解決上述問題。

速度:分表(減少單表數(shù)據(jù)量)、緩存查詢、靜態(tài)預(yù)生成、提高硬件性能。

并發(fā)量:打破單機(jī)(或雙機(jī))模式,組建數(shù)據(jù)庫集群。

可擴(kuò)展性:復(fù)雜的數(shù)據(jù)遷移方案。

這個(gè)過程想必相當(dāng)痛苦,而且由于技術(shù)約束,造成的用戶體驗(yàn)也不夠好。

比如我們查銀行賬單、手機(jī)話費(fèi)的歷史記錄,總要先選擇指定的月份或時(shí)間范圍,然后點(diǎn)提交。

這就是分表帶來的用戶體驗(yàn)下降。


什么是Hadoop

而在原生的分布式系統(tǒng)中,整個(gè)集群的節(jié)點(diǎn)間共享計(jì)算、存儲、IO資源,完美的解決了性能、并發(fā)、數(shù)據(jù)存儲問題。

看一組關(guān)于Google的資料(約在2010年):

Google共有36個(gè)數(shù)據(jù)中心。其中美國有19個(gè)、歐洲12個(gè)、俄羅斯1個(gè)、南美1個(gè)和亞洲3個(gè)(北京-Google.cn<這個(gè)……>、香港-Google.com.hk和東京各1個(gè))。
數(shù)據(jù)中心以集裝箱為單位,每個(gè)數(shù)據(jù)中心有眾多集裝箱,每個(gè)集裝箱里面有1160臺服務(wù)器。

如何使這么多臺服務(wù)器協(xié)同工作?

Google的三大核心元素:
  1、Google文件系統(tǒng)(GFS)
  2、Google大表;Bigtable:是Google一種對于半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分布存儲與訪問的接口或服務(wù));由于Google的文件系統(tǒng)異常龐大,以至于甲骨文和IBM公司的商業(yè)數(shù)據(jù)庫在方面無用武之地。另外,商業(yè)數(shù)據(jù)庫都是按 CPU數(shù)量來收費(fèi),如果Google使用商業(yè)數(shù)據(jù)庫,可想而知,這是一筆天文數(shù)字。所以,Google量體裁衣地設(shè)計(jì)了符合自身的大表。
  3、Mapreduce 算法;它是Google開發(fā)的C++編程工具,用于大于1TB數(shù)據(jù)的大規(guī)模數(shù)據(jù)集并行運(yùn)算。MapReduce能夠找出一個(gè)詞語在Google搜索目錄中 出現(xiàn)的次數(shù);一系列網(wǎng)頁中特定詞語出現(xiàn)的頻率;鏈接到某個(gè)特定網(wǎng)站的所有網(wǎng)站數(shù)量等。

好用的東西,總能找到對應(yīng)的開源實(shí)現(xiàn),這就是Hadoop。



Hadoop的構(gòu)成


其中:

Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù)

Hive,可以使用類似SQL語言來訪問HBase,最終本質(zhì)是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計(jì)。


誰在用Hadoop

Amazon、Adobe、Ebay、Facebook、Twitter、Yahoo、IBM……

國內(nèi):淘寶和支付寶的數(shù)據(jù)倉庫、華為、百度的搜索日志分析,騰訊……

這里有更多的資料可查 http://wiki./hadoop/PoweredBy

Facebook實(shí)時(shí)消息存儲系統(tǒng)于2010年下半年遷移到了HBase。


HBase的前生今世

2006 年末 —— Google “BigTable: A Distributed Storage System for Structured Data”;

2007 02月 —— HBase的源代碼初稿;

2007 10月 —— 第一個(gè)版本,隨Hadoop 0.15.0 捆綁發(fā)布;

2010 05月 —— HBase從Hadoop子項(xiàng)目升級成Apache頂層項(xiàng)目;


什么是HBase

HBase是一個(gè)在Hadoop上開發(fā)的面向列(同類軟件還有Cassandra和HyperTable)的分布式數(shù)據(jù)庫。

利用HDFS作為其文件存儲系統(tǒng)

利用MapReduce來處理HBase中的海量數(shù)據(jù)

利用Zookeeper作為協(xié)同服務(wù),主要用于實(shí)時(shí)隨機(jī)讀/寫超大規(guī)模數(shù)據(jù)集

很多關(guān)系型數(shù)據(jù)庫為了應(yīng)對這種場景提供了復(fù)制(replication)和分區(qū)(partitioning)解決方案,讓數(shù)據(jù)庫能從單個(gè)節(jié)點(diǎn)上擴(kuò)展出去。

但是難以安裝和維護(hù),且需要犧牲一些重要的RDBMS(Relational DataBase Management System)特性,連接、復(fù)雜查詢、觸發(fā)器、視圖以及外鍵約束這些功能要么運(yùn)行開銷大,要么根本無法使用。

HBase從另一個(gè)方向來解決可伸縮性的問題。它自底向上的進(jìn)行構(gòu)建,能夠簡單的通過增加節(jié)點(diǎn)來達(dá)到線性擴(kuò)展。

HBase并不是關(guān)系型數(shù)據(jù)庫,它不支持SQL,但它能夠做RDBMS不能做的事;

在廉價(jià)硬件構(gòu)成的集群上管理超大規(guī)模的稀疏表。


HBase的特點(diǎn)

面向列:列的動態(tài)、無限擴(kuò)展 —— 內(nèi)容評論的擴(kuò)展,同類數(shù)據(jù)集中存儲便于壓縮

稀疏表:有數(shù)據(jù)時(shí)這個(gè)單元格才存在 —— 節(jié)省空間


HBase表格示意圖


Row Key: 行鍵,Table的主鍵,Table中的記錄按照Row Key排序

Timestamp: 時(shí)間戳,每次數(shù)據(jù)操作對應(yīng)的時(shí)間戳,可以看作是數(shù)據(jù)的version number

Column Family:列簇,Table在水平方向有一個(gè)或者多個(gè)Column Family組成,一個(gè)Column Family中可以由任意多個(gè)Column組成,即Column Family支持動態(tài)擴(kuò)展,無需預(yù)先定義Column的數(shù)量以及類型,所有Column均以二進(jìn)制格式存儲,用戶需要自行進(jìn)行類型轉(zhuǎn)換。


HBase的組件構(gòu)成

HMaster (HA),負(fù)責(zé)Table和Region的管理工作

1、建表、刪表、查看表格屬性;

2、管理RegionServer負(fù)載均衡,調(diào)整Region分布;

3、Region Split后,負(fù)責(zé)新Region的分配;

4、在RegionServer失效后,負(fù)責(zé)失效節(jié)點(diǎn)上的Regions遷移;

RegionServer(x N),主要負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)



HBase中表格的存儲

一張表存儲在[1-N)個(gè)HRegion中,每個(gè)HRegion保存某張表RowKey連續(xù)的一段記錄。


建表時(shí)可以預(yù)劃分HRegion——提高并行度,進(jìn)而提升讀寫速度

否則初始表存在單一HRegion中,隨著數(shù)據(jù)增大HRegion會分裂為多個(gè)HRegion

HBase中有兩張?zhí)厥獾腡able,-ROOT-和.META.

 .META.:記錄了用戶表的Region信息,.META.可以有多個(gè)regoin

 -ROOT-:記錄了.META.表的Region信息,-ROOT-只有一個(gè)region

 Zookeeper中記錄了-ROOT-表的location


首先 HBase Client端會連接Zookeeper Qurom

通過 Zookeeper組件Client 能獲知哪個(gè) RegionServer管理-ROOT- Region 。

那么Client就去訪問管理 -ROOT-的HRegionServer ,在META中記錄了 HBase中所有表信息,(你可以使用   scan '.META.' 命令列出你創(chuàng)建的所有表的詳細(xì)信息 ),從而獲取Region 分布的信息。一旦 Client獲取了這一行的位置信息,比如這一行屬于哪個(gè) Region,Client 將會緩存這個(gè)信息并直接訪問 HRegionServer。

久而久之Client 緩存的信息漸漸增多,即使不訪問 .META.表 也能知道去訪問哪個(gè) HRegionServer。

HBase讀數(shù)據(jù)

HBase讀取數(shù)據(jù)優(yōu)先讀取HMemcache中的內(nèi)容,如果未取到再去讀取Hstore中的數(shù)據(jù),提高數(shù)據(jù)讀取的性能。

HBase寫數(shù)據(jù)

HBase寫入數(shù)據(jù)會寫到HMemcache和Hlog中,HMemcache建立緩存,Hlog同步Hmemcache和Hstore的事務(wù)日志,發(fā)起Flush Cache時(shí),數(shù)據(jù)持久化到Hstore中,并清空HMemecache。


文本部分內(nèi)容與圖片引用于互聯(lián)網(wǎng),引用地址如下:

http://www./2011/01/understanding-hbase.html


Author:Pirate Leo

myBlog: http://blog.csdn.net/pirateleo/

myEmail: codeevoship@gmail.com

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多