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