<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    Cassandra VS. HBase 全文zz

    摘取了一部分,全文請(qǐng)查看

    http://blog.sina.com.cn/s/blog_633f4ab20100r9nm.html

    背景

    “這是最好的時(shí)代,也是最壞的時(shí)代。” 

    每個(gè)時(shí)代的人都在這么形容自己所處的時(shí)代。在一次次IT浪潮下面,有人覺得當(dāng)下乏味無聊,有人卻能銳意進(jìn)取,找到突破。數(shù)據(jù)存儲(chǔ)這個(gè)話題自從有了計(jì)算機(jī)之后,就一直是一個(gè)有趣或者無聊的主題。上世紀(jì)七十年代,關(guān)系數(shù)據(jù)庫理論的出現(xiàn),造就了一批又一批傳奇,并推動(dòng)整個(gè)世界信息化到了一個(gè)新的高度。而進(jìn)入新千年以來,隨著SNS等應(yīng)用的出現(xiàn),傳統(tǒng)的SQL數(shù)據(jù)庫已經(jīng)越來越不適應(yīng)海量數(shù)據(jù)的處理了。于是,這幾年NoSQL數(shù)據(jù)庫的呼聲也越來越高。

    在NoSQL數(shù)據(jù)庫當(dāng)中,呼聲最高的是HBase和Cassandra兩個(gè)。雖然嚴(yán)格意義上來說,兩者服務(wù)的目的有所不同,側(cè)重點(diǎn)也不盡相同,但是作為當(dāng)前開源NoSQL數(shù)據(jù)庫的佼佼者,兩者經(jīng)常被用來做各種比較。

    去年十月,F(xiàn)acebook推出了他的新的Message系統(tǒng)。Facebook宣布他們采用HBase作為后臺(tái)存儲(chǔ)系統(tǒng)。這引起了一片喧嘩聲。因?yàn)镃assandra恰恰是Facebook開發(fā),并且于2008年開源。這讓很多人驚呼,是否是Cassandra已經(jīng)被Facebook放棄了?HBase在這場NoSQL數(shù)據(jù)庫的角力當(dāng)中取得了決定性的勝利?本文打算主要從技術(shù)角度分析,HBase和Cassandra的異同,并非要給出任何結(jié)論,只是共享自己研究的一些結(jié)果。

     

    選手簡介

    HBase

    HBase是一個(gè)開源的分布式存儲(chǔ)系統(tǒng)。他可以看作是Google的Bigtable的開源實(shí)現(xiàn)。如同Google的Bigtable使用Google File System一樣,HBase構(gòu)建于和Google File System類似的Hadoop HDFS之上。

    Cassandra

    Cassandra可以看作是Amazon Dynamo的開源實(shí)現(xiàn)。和Dynamo不同之處在于,Cassandra結(jié)合了Google Bigtable的ColumnFamily的數(shù)據(jù)模型。可以簡單地認(rèn)為,Cassandra是一個(gè)P2P的,高可靠性并具有豐富的數(shù)據(jù)模型的分布式文件系統(tǒng)。

    分布式文件系統(tǒng)的指標(biāo)

    根據(jù)UC Berkeley的教授Eric Brewer于2000年提出猜測(cè)- CAP定理,一個(gè)分布式計(jì)算機(jī)系統(tǒng),不可能同時(shí)滿足以下三個(gè)指標(biāo):

    Consistency 所有節(jié)點(diǎn)在同一時(shí)刻保持同一狀態(tài)Availability 某個(gè)節(jié)點(diǎn)失敗,不會(huì)影響系統(tǒng)的正常運(yùn)行Partition tolerance 系統(tǒng)可以因?yàn)榫W(wǎng)絡(luò)故障等原因被分裂成小的子系統(tǒng),而不影響系統(tǒng)的運(yùn)行

     

    Brewer教授推測(cè),任何一個(gè)系統(tǒng),同時(shí)只能滿足以上兩個(gè)指標(biāo)。

    在2002年,MIT的Seth Gilbert和Nancy Lynch發(fā)表正式論文論證了CAP定理。

     

    而HBase和Cassandra兩者都屬于分布式計(jì)算機(jī)系統(tǒng)。但是其設(shè)計(jì)的側(cè)重點(diǎn)則有所不同。HBase繼承于Bigtable的設(shè)計(jì),側(cè)重于CA。而Cassandra則繼承于Dynamo的設(shè)計(jì),側(cè)重于AP。

    。。。。。。。。。。。。。。。。。。。

    特性比較

    由于HBase和Cassandra的數(shù)據(jù)模型比較接近,所以這里就不再比較兩者之間數(shù)據(jù)模型的異同了。接下來主要比較雙方在數(shù)據(jù)一致性、多拷貝復(fù)制的特性。

    HBase

    HBase保證寫入的一致性。當(dāng)一份數(shù)據(jù)被要求復(fù)制N份的時(shí)候,只有N份數(shù)據(jù)都被真正復(fù)制到N臺(tái)服務(wù)器上之后,客戶端才會(huì)成功返回。如果在復(fù)制過程中出現(xiàn)失敗,所有的復(fù)制都將失敗。連接上任何一臺(tái)服務(wù)器的客戶端都無法看到被復(fù)制的數(shù)據(jù)。HBase提供行鎖,但是不提供多行鎖和事務(wù)。HBase基于HDFS,因此數(shù)據(jù)的多份復(fù)制功能和可靠性將由HDFS提供。HBase和MapReduce天然集成。

    Cassandra

    寫入的時(shí)候,有多種模式可以選擇。當(dāng)一份數(shù)據(jù)模式被要求復(fù)制N份的時(shí)候,可以立即返回,可以成功復(fù)制到一個(gè)服務(wù)器之后返回,可以等到全部復(fù)制到N份服務(wù)器之后返回,還可以設(shè)定一個(gè)復(fù)制到quorum份服務(wù)器之后返回。Quorum后面會(huì)有具體解釋。復(fù)制不會(huì)失敗。最終所有節(jié)點(diǎn)數(shù)據(jù)都將被寫入。而在未被完全寫入的時(shí)間間隙,連接到不同服務(wù)器的客戶端有可能讀到不同的數(shù)據(jù)。在集群里面,所有的服務(wù)器都是等價(jià)的。不存在任何一個(gè)單點(diǎn)故障。節(jié)點(diǎn)和節(jié)點(diǎn)之間通過Gossip協(xié)議互相通信。寫入順序按照timestamp排序,不提供行鎖。新版本的Cassandra已經(jīng)集成了MapReduce了。

    相對(duì)于配置Cassandra,配置HBase是一個(gè)艱辛、復(fù)雜充滿陷阱的工作。Facebook關(guān)于為何采取HBase,里面有一句,大意是,F(xiàn)acebook長期以來一直關(guān)注HBase的開發(fā)并且有一只專門的經(jīng)驗(yàn)豐富的HBase維護(hù)的team來負(fù)責(zé)HBase的安裝和維護(hù)。可以想象,F(xiàn)acebook內(nèi)部關(guān)于使用HBase和Cassandra有過激烈的斗爭,最終人數(shù)更多的HBase team占據(jù)了上風(fēng)。對(duì)于大公司來說,養(yǎng)一只相對(duì)龐大的類似DBA的team來維護(hù)HBase不算什么大的開銷,但是對(duì)于小公司,這實(shí)在不是一個(gè)可以負(fù)擔(dān)的起的開銷。

    另外HBase在高可靠性上有一個(gè)很大的缺陷,就是HBase依賴HDFS。HDFS是Google File System的復(fù)制品,NameNode是HDFS的單點(diǎn)故障點(diǎn)。而到目前為止,HDFS還沒有加入NameNode的自我恢復(fù)功能。不過我相信,F(xiàn)acebook在內(nèi)部一定有恢復(fù)NameNode的手段,只是沒有開源出來而已。

    相反,Cassandra的P2P和去中心化設(shè)計(jì),沒有可能出現(xiàn)單點(diǎn)故障。從設(shè)計(jì)上來看,Cassandra比HBase更加可靠。

    關(guān)于數(shù)據(jù)一致性,實(shí)際上,Cassandra也可以以犧牲響應(yīng)時(shí)間的代價(jià)來獲得和HBase一樣的一致性。而且,通過對(duì)Quorum的合適的設(shè)置,可以在響應(yīng)時(shí)間和數(shù)據(jù)一致性得到一個(gè)很好的折衷值。

    Cassandra優(yōu)缺點(diǎn)

    主要表現(xiàn)在:

    配置簡單,不需要多模塊協(xié)同操作。功能靈活性強(qiáng),數(shù)據(jù)一致性和性能之間,可以根據(jù)應(yīng)用不同而做不同的設(shè)置。 可靠性更強(qiáng),沒有單點(diǎn)故障。

    盡管如此,Cassandra就沒有弱點(diǎn)嗎?當(dāng)然不是,Cassandra有一個(gè)致命的弱點(diǎn)。

    這就是存儲(chǔ)大文件。雖然說,Cassandra的設(shè)計(jì)初衷就不是存儲(chǔ)大文件,但是Amazon的S3實(shí)際上就是基于Dynamo構(gòu)建的,總是會(huì)讓人想入非非地讓Cassandra去存儲(chǔ)超大文件。而和Cassandra不同,HBase基于HDFS,HDFS的設(shè)計(jì)初衷就是存儲(chǔ)超大規(guī)模文件并且提供最大吞吐量和最可靠的可訪問性。因此,從這一點(diǎn)來說,Cassandra由于背后不是一個(gè)類似HDFS的超大文件存儲(chǔ)的文件系統(tǒng),對(duì)于存儲(chǔ)那種巨大的(幾百T甚至P)的超大文件目前是無能為力的。而且就算由Client手工去分割,這實(shí)際上是非常不明智和消耗Client CPU的工作的。

    因此,如果我們要構(gòu)建一個(gè)類似Google的搜索引擎,最少,HDFS是我們所必不可少的。雖然目前HDFS的NameNode還是一個(gè)單點(diǎn)故障點(diǎn),但是相應(yīng)的Hack可以讓NameNode變得更皮實(shí)。基于HDFS的HBase相應(yīng)地,也更適合做搜索引擎的背后倒排索引數(shù)據(jù)庫。事實(shí)上,Lucene和HBase的結(jié)合,遠(yuǎn)比Lucene結(jié)合Cassandra的項(xiàng)目Lucandra要順暢和高效的多。(Lucandra要求Cassandra使用OrderPreservingPartitioner,這將可能導(dǎo)致Key的分布不均勻,而無法做負(fù)載均衡,產(chǎn)生訪問熱點(diǎn)機(jī)器)。

     

    所以我的結(jié)論是,在這個(gè)需求多樣化的年代,沒有贏者通吃的事情。而且我也越來越不相信在工程界存在一勞永逸和一成不變的解決方案。當(dāng)你僅僅是存儲(chǔ)海量增長的消息數(shù)據(jù),存儲(chǔ)海量增長的圖片,小視頻的時(shí)候,你要求數(shù)據(jù)不能丟失,你要求人工維護(hù)盡可能少,你要求能迅速通過添加機(jī)器擴(kuò)充存儲(chǔ),那么毫無疑問,Cassandra現(xiàn)在是占據(jù)上風(fēng)的。

    但是如果你希望構(gòu)建一個(gè)超大規(guī)模的搜索引擎,產(chǎn)生超大規(guī)模的倒排索引文件(當(dāng)然是邏輯上的文件,真實(shí)文件實(shí)際上被切分存儲(chǔ)于不同的節(jié)點(diǎn)上),那么目前HDFS+HBase是你的首選。

    就讓這個(gè)看起來永遠(yuǎn)正確的結(jié)論結(jié)尾吧,上帝的歸上帝,凱撒的歸凱撒。大家都有自己的地盤,野百合也會(huì)有春天的!

    posted on 2013-01-30 00:22 paulwong 閱讀(455) 評(píng)論(0)  編輯  收藏 所屬分類: 云計(jì)算HBASE

    主站蜘蛛池模板: 亚洲高清日韩精品第一区| 亚洲午夜成人精品无码色欲| 四虎最新永久免费视频| 最新国产成人亚洲精品影院| 免费a级毛片大学生免费观看| 成人爽a毛片免费| 亚洲www在线观看| 亚洲三区在线观看无套内射| 中文字幕乱码免费视频| 无遮挡a级毛片免费看| 久久精品国产亚洲AV无码娇色 | 国产高潮久久免费观看| 亚洲成人一级电影| 亚洲人成国产精品无码| 欧洲乱码伦视频免费| 国产免费AV片在线观看播放| 精品亚洲AV无码一区二区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久国产精品免费网站| 色偷偷尼玛图亚洲综合| 亚洲一卡2卡三卡4卡有限公司| 国产男女猛烈无遮挡免费视频| 99精品视频在线免费观看| 黄色一级毛片免费看| 亚洲人成777在线播放| 亚洲毛片αv无线播放一区| 日韩成人在线免费视频| 30岁的女人韩剧免费观看| selaoban在线视频免费精品| 亚洲日韩AV一区二区三区四区| 精品亚洲aⅴ在线观看| 国产精品亚洲不卡一区二区三区| 无码免费午夜福利片在线| 日韩免费观看一区| 产传媒61国产免费| 亚洲Av永久无码精品黑人| 亚洲一区免费在线观看| 亚洲天天在线日亚洲洲精| 中文字幕亚洲乱码熟女一区二区| 国产传媒在线观看视频免费观看| 成人黄色免费网址|