資源描述:
《Cassandra簡(jiǎn)介》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、一、Cassandra橫空出世近10年來(lái),互聯(lián)網(wǎng)得到了空前的發(fā)展,數(shù)據(jù)量翻了數(shù)百倍;同時(shí)互聯(lián)網(wǎng)內(nèi)容的創(chuàng)作方式也由傳統(tǒng)的中心化逐步轉(zhuǎn)向用戶創(chuàng)作。網(wǎng)絡(luò)應(yīng)用的用戶量數(shù)以億記,需要處理的數(shù)據(jù)打到T級(jí)甚至是P級(jí),傳統(tǒng)的基于關(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用難以應(yīng)付超高的訪問(wèn)壓力和超大的數(shù)據(jù)量。許多深有遠(yuǎn)見(jiàn)的網(wǎng)絡(luò)公司分別研發(fā)了各自的分布式存儲(chǔ)系統(tǒng)以應(yīng)對(duì)互聯(lián)網(wǎng)的發(fā)展;其中的先驅(qū)和代表是Google的Bigtable、GFS和Amazon的Dynamo;它們分別達(dá)到了互聯(lián)網(wǎng)應(yīng)用7×24的高可用性(HighAvailability)和水平可擴(kuò)展(HighScalablity)要求,并成為Google和Amazon云計(jì)算
2、的可靠基石。Cassandra就是基于GoogleBigtable的數(shù)據(jù)模型和Dynamo的數(shù)據(jù)分布思想的開源實(shí)現(xiàn)。Cassandra最初是由Facebook開發(fā)的,后來(lái)開源,貢獻(xiàn)給Apache,目前由apache開發(fā)和維護(hù)。二、Cassandra理論基礎(chǔ)Cassandra的基因來(lái)自于Bigtable和Dynamo,而Bigtable和Dynamo都是基于著名的EricBrewer的CAP理論設(shè)計(jì)的。Brewer的CAP理論認(rèn)為,在一個(gè)共享數(shù)據(jù)系統(tǒng)(數(shù)據(jù)分布式存儲(chǔ))里,最多只能獲得數(shù)據(jù)一致性(C-consistency)、數(shù)據(jù)可用性(A-availability)、分區(qū)容忍性(P-pa
3、rtitiontolerance)中的兩個(gè)特性。一致性(C)指的是當(dāng)一個(gè)寫操作完成后,后續(xù)的讀操作都能夠讀到更新后的數(shù)據(jù)??捎眯裕ˋ)指的是當(dāng)某些存儲(chǔ)節(jié)點(diǎn)失效時(shí),客戶端發(fā)起的讀寫請(qǐng)求仍然能夠獲取正確的響應(yīng),讀寫操作仍然有效。分區(qū)容忍性(P)指的是存儲(chǔ)節(jié)點(diǎn)之間的網(wǎng)絡(luò)連接斷開后,存儲(chǔ)系統(tǒng)仍然能夠進(jìn)行正常的讀寫操作,即系統(tǒng)對(duì)節(jié)點(diǎn)連接斷開是能夠容忍的。以oracleRAC為例,假如有兩個(gè)RAC節(jié)點(diǎn)。Oracle作為業(yè)界牛b的關(guān)系型數(shù)據(jù)庫(kù),必然具有強(qiáng)一致性(C),因此它不可能同時(shí)具有可用性和分區(qū)容忍性,當(dāng)其中一個(gè)rac節(jié)點(diǎn)失效了,整個(gè)rac集群的寫入操作將不可用(否則會(huì)發(fā)生數(shù)據(jù)不一致,這是ora
4、cle不能容忍的),同樣rac節(jié)點(diǎn)之間的網(wǎng)絡(luò)阻斷了,整個(gè)集群的寫入操作也是不可用的,因此oraclerac為了保證其ACID(強(qiáng)一致性)犧牲了一定的可用性和分區(qū)容忍性。而互聯(lián)網(wǎng)龐大的數(shù)據(jù)量和極高的峰值訪問(wèn)壓力使得以增加內(nèi)存、CPU等節(jié)點(diǎn)性能的垂直伸縮方案走入死胡同,使用大量廉價(jià)的機(jī)器組建水平可擴(kuò)展集群成為絕大多數(shù)互聯(lián)網(wǎng)公司的必然選擇;廉價(jià)的機(jī)器失效是正常的,大規(guī)模的集群,節(jié)點(diǎn)之間的網(wǎng)絡(luò)臨時(shí)阻斷也是常見(jiàn)的,因此在衡量一致性、可用性和分區(qū)容忍性時(shí),往往傾向先滿足后兩者,再用其他方法滿足最終的一致性。在衡量CAP時(shí),bigtable選擇了CA,用gfs來(lái)彌補(bǔ)P;dynamo選擇了AP,C弱化
5、為最終一致性(通過(guò)Quorum或者read-your-write機(jī)制)。Cassandra吸取了bigtable和dynamo二者的優(yōu)良基因。在數(shù)據(jù)模型上采用了Bigtable的基于列集(ColumnFamily)的模型;在數(shù)據(jù)的分布式存儲(chǔ)上,采用了dynamo的模式,采用一致性哈希將數(shù)據(jù)散列在節(jié)點(diǎn)環(huán)上,節(jié)點(diǎn)數(shù)據(jù)的復(fù)制采用隱式傳送(HintedHandoff)的方式,節(jié)點(diǎn)成員和節(jié)點(diǎn)錯(cuò)誤探測(cè)采用稱為Gossip的協(xié)議。正是這樣,Cassandra獲得了高可用、高伸縮(水平擴(kuò)展)特性,并提供了客戶端可控的分級(jí)一致性,使得其可應(yīng)用場(chǎng)景更加豐富。三、Cassandra安裝、啟動(dòng)與配置安裝、啟動(dòng)
6、與停止:Cassandra是用java開發(fā)的,因此安裝啟動(dòng)非常簡(jiǎn)單,只要你有jvm(1.6版本以上)即可。1.從官方網(wǎng)站下載Cassandra最新版本(0.7);2.解壓,執(zhí)行$CASSANDRA_HOME/bin/cassandra-f-ppid;-f參數(shù)表示強(qiáng)制讓cassandra進(jìn)程在前臺(tái)執(zhí)行,可實(shí)時(shí)觀察到cassandra的控制臺(tái)輸出;-p表示讓cassandra啟動(dòng)后將進(jìn)程標(biāo)志(pid)寫入到指定的文件中(方便殺進(jìn)程);3.$CASSANDRA_HOME/bin/cassandra-f-ppid4.加載keyspaces配置;從0.7版本開始,cassandra啟動(dòng)時(shí)不會(huì)加載
7、配置文件($CASSANDRA_HOME/conf/cassandra.yaml)里keyspaces定義,需要手工加載,加載命令為:5.$CASSANDRA_HOME/bin/schematoollocalhost9160import6.用cli客戶端連接Cassandra服務(wù)器;Cassandra提供了控制臺(tái)命令行客戶端程序($CASSANDRA_HOME/bin/cassandra-cli),可通過(guò)該程序訪問(wèn)cassandra服務(wù)器,進(jìn)行