為什么在大數(shù)據(jù)處理中Cassandra與Spark如此受歡迎?
說(shuō)起Cassandra的用途時(shí),我們可以將其理解為一套理想的客戶系統(tǒng)實(shí)現(xiàn)方案——其能夠保證各類(lèi)應(yīng)用始終可用,包括產(chǎn)品目錄、物聯(lián)網(wǎng)、醫(yī)療系統(tǒng)以及移動(dòng)應(yīng)用。Cassandra于2010年成為Apache軟件基金會(huì)的頂級(jí)項(xiàng)目,而且至今仍擁有極高人氣。Cassandra專(zhuān)業(yè)知識(shí)能夠幫助我們?cè)谌瞬攀袌?chǎng)上獲得賞識(shí)。我們不禁要問(wèn)——為什么這一開(kāi)源項(xiàng)目能夠大受歡迎?
隨著現(xiàn)代云應(yīng)用對(duì)正常運(yùn)行時(shí)間及性能水平的要求逐步提高,已經(jīng)有越來(lái)越多用戶開(kāi)始將注意力集中在Apache Cassandra數(shù)據(jù)庫(kù)身上。
那么,為什么要選擇Apache Cassandra?這套分布式OLTP數(shù)據(jù)庫(kù)能夠帶來(lái)高可用性與線性可擴(kuò)展能力。在說(shuō)起Cassandra的用途時(shí),我們可以將其理解為一套理想的客戶系統(tǒng)實(shí)現(xiàn)方案——其能夠保證各類(lèi)應(yīng)用始終可用,包括產(chǎn)品目錄、物聯(lián)網(wǎng)、醫(yī)療系統(tǒng)以及移動(dòng)應(yīng)用。這類(lèi)項(xiàng)目一旦遭遇停機(jī),企業(yè)可能面臨嚴(yán)重的營(yíng)收損失甚至失去忠誠(chéng)的用戶。Netflix公司早在2008年就開(kāi)始使用這套開(kāi)源數(shù)據(jù)庫(kù),而其做出的大力推動(dòng)也真正讓Cassandra引起了公眾的重視。
Cassandra于2010年成為Apache軟件基金會(huì)的頂級(jí)項(xiàng)目,而且至今仍擁有極高人氣。Cassandra專(zhuān)業(yè)知識(shí)能夠幫助我們?cè)谌瞬攀袌?chǎng)上獲得賞識(shí)。我們不禁要問(wèn)——為什么這一開(kāi)源項(xiàng)目能夠大受歡迎?
Cassandra能夠利用Amazon發(fā)布的Dynamo論文中所提到的獨(dú)特設(shè)計(jì)成果,從而保證硬件與網(wǎng)絡(luò)出現(xiàn)大規(guī)模故障時(shí)繼續(xù)保證可用性。利用點(diǎn)對(duì)點(diǎn)模型,其消除了單點(diǎn)故障可能性,從而幫助我們?cè)跈C(jī)架故障甚至是網(wǎng)絡(luò)整體下線的情況下得以幸存。我們能夠在無(wú)需影響用戶體驗(yàn)的情況下,順利處理整體數(shù)據(jù)中心故障。只有能夠應(yīng)對(duì)故障的分布式系統(tǒng)才是一套擁有出色設(shè)計(jì)水平的分布式系統(tǒng),而在Cassandra的幫助下,我們能夠承受各類(lèi)意外狀況,并將應(yīng)對(duì)機(jī)制納入數(shù)據(jù)庫(kù)架構(gòu)及功能當(dāng)中。
但大家可能要問(wèn),“不過(guò),我之前只使用過(guò)關(guān)系型數(shù)據(jù)庫(kù),過(guò)渡過(guò)程是否非常艱難?”這個(gè)問(wèn)題無(wú)法一概而論。Cassandra使用的數(shù)據(jù)模型對(duì)于關(guān)系數(shù)據(jù)庫(kù)管理員來(lái)說(shuō)并不陌生,我們同樣使用表進(jìn)行數(shù)據(jù)建模,并通過(guò)CQL——Cassandra查詢語(yǔ)言——查詢數(shù)據(jù)庫(kù)。不過(guò)與SQL不同,Cassandra支持更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如嵌套與用戶定義類(lèi)型。例如,相較于為某張圖片創(chuàng)建獨(dú)立的存儲(chǔ)表,我們可以直接將該數(shù)據(jù)存儲(chǔ)在集合中以實(shí)現(xiàn)更為快速的查詢速度。這種作法在CQL當(dāng)中非常自然,而對(duì)應(yīng)的圖片表中則包含其名稱、URL以及喜愛(ài)該圖片的用戶信息。
在高性能系統(tǒng)當(dāng)中,毫秒級(jí)別的差異可能決定用戶的實(shí)際體驗(yàn)與去留。然而,資源成本高昂的JOIN操作限制了我們的向外擴(kuò)展通徹。通過(guò)對(duì)數(shù)據(jù)進(jìn)行非規(guī)范化處理,我們能夠盡可能降低請(qǐng)求數(shù)量,從而大幅降低磁盤(pán)空間成本并實(shí)現(xiàn)可預(yù)測(cè)的高性能應(yīng)用。
當(dāng)然,我們能夠存儲(chǔ)的絕不僅僅是圖片數(shù)據(jù)。Cassandra針對(duì)高寫(xiě)入吞吐量進(jìn)行了優(yōu)化,這意味著其能夠完美地處理大數(shù)據(jù)應(yīng)用。時(shí)間序列與物聯(lián)網(wǎng)用例的快速增長(zhǎng)要求我們不斷尋求新的方法以收集數(shù)據(jù)并改進(jìn)數(shù)據(jù)的應(yīng)用技術(shù)。
這就帶來(lái)了新的問(wèn)題:我們已經(jīng)能夠以現(xiàn)代化且具備成本效益的方式存儲(chǔ)數(shù)據(jù),但如何進(jìn)一步提升處理能力?換言之,在數(shù)據(jù)收集完成后,我們?cè)撊绾渭右赃\(yùn)用?我們?nèi)绾斡行Х治鰯?shù)百TB數(shù)據(jù)?我們又該如何以秒為單位實(shí)時(shí)利用信息進(jìn)行決策?Apache Spark正是問(wèn)題的答案。
Spark可謂大數(shù)據(jù)處理的下一場(chǎng)革命。Hadoop與Mapreduce屬于第一代革命性項(xiàng)目,它們讓我們得以立足于大數(shù)據(jù)層面實(shí)現(xiàn)數(shù)據(jù)收集。而Spark則能夠大幅提高性能并降低代碼計(jì)算的復(fù)雜性,從而實(shí)現(xiàn)前所未有的數(shù)據(jù)分析能力。在Spark的幫助下,我們可以完成大量批處理計(jì)算,針對(duì)數(shù)據(jù)流處理結(jié)果進(jìn)行反應(yīng)并通過(guò)機(jī)器學(xué)習(xí)機(jī)制做出明智決策,最終利用遍歷與遞歸理解復(fù)雜的信息。其目標(biāo)不光是為客戶提供更為快速可靠的應(yīng)用連接能力(這部分效果由Cassandra負(fù)責(zé)實(shí)現(xiàn)),同時(shí)也需要利用信息做出業(yè)務(wù)決策地更好地滿足客戶需求。
大家可以點(diǎn)擊此處查閱 Spark-Cassandra Connector方案說(shuō)明 (開(kāi)源),我們也強(qiáng)烈建議各位在DataStax Academy上查找免費(fèi)的自學(xué)教程。
希望大家能夠享受這段技術(shù)學(xué)習(xí)之旅!如果大家希望了解更多,也可參閱我們的OSCON教程,其中包含大量與Cassandra與Spark相關(guān)的內(nèi)容。
原文標(biāo)題: An introduction to data processing with Cassandra and Spark