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