1. 程式人生 > >Cassandra 和 Spark 數據處理一窺

Cassandra 和 Spark 數據處理一窺

網絡故障 查找 雲端 輕松 聯網 怎樣 net 可擴展 復雜度

技術分享圖片

  Apache Cassandra 數據庫近來引起了很多的興趣,這主要源於現代雲端軟件對於可用性及性能方面的要求。

  那麽,Apache Cassandra 是什麽?它是一種為高可用性及線性可擴展性優化的分布式的聯機交易處理 (OLTP) 數據庫。具體說到 Cassandra 的用途時,可以想想你希望貼近用戶的系統,比如說讓我們的用戶進行交互的系統、需要保證實時可用的程序等等,如:產品目錄,物聯網,醫療系統,以及移動應用。對這些程序而言,下線時間意味著利潤降低甚至導致其他更壞的結果。Netfilix 是這個在 2008 年開源的項目的早期使用者,他們對此項目的貢獻以及帶來的成功讓這個項目名聲大噪。

  Cassandra 於2010年成為了 Apache 軟件基金會的頂級項目,並從此之後就流行起來。現在,只要你有 Cassadra 的相關知識,找工作時就能輕松不少。想想看,NoSQL 語言和開源技術能達到企業級 SQL 技術的高度,真讓人覺得十分瘋狂而又不可思議的。這引出了一個問題。是什麽讓它如此的流行?

  因為采用了亞馬遜發表的 Dynamo 論文中率先提出的設計,Cassandra 有能力在大規模的硬件及網絡故障時保持實時在線。由於采用了點對點模式,在沒有單點故障的情況下,我們能幸免於機架故障甚至全網中斷。我們能在不影響用戶體驗的前提下處理數據中心故障。一個能考慮到故障的分布式系統才是一個沒有後顧之憂的分布式系統,因為老實說,故障是遲早會發生的。有了 Cassandra, 我們可以直面殘酷的生活並將之融入數據庫的結構和功能中。

  我們能猜到你現在在想什麽,“但我只有關系數據庫相關背景,難道這樣的轉變不會很困難嗎?”這問題的答案介於是和不是之間。使用 Cassandra 建立數據模型對有關系數據庫背景的開發者而言是輕車熟路。我們使用表格來建立數據模型,並使用 CQL ( Cassandra 查詢語言)來查詢數據庫。然而,與 SQL 不同的是,Cassandra 支持更加復雜的數據結構,例如嵌套和用戶自定義類型。舉個例子,當要儲存對一個小貓照片的點贊數目時,我們可以將整個數據儲存在一個包含照片本身的集合之中從而獲得更快的順序查找而不是建立一個獨立的表。這樣的表述在 CQL 中十分的自然。在我們照片表中,我們需要記錄名字,URL以及給此照片點贊過的人。

  

技術分享圖片

  在一個高性能系統中,毫秒級處理都能對用戶體驗和客戶維系產生影響。昂貴的 JOIN 操作制約了我們通過增加不可預見的網絡調用而擴容的能力。當我們將數據反範式化使其能通過盡可能少的請求就可獲取時,我們即可從磁盤空間成本的降低中獲益並獲得可預期的、高性能應用。我們將反範式化同 Cassandra 一同介紹是因為它提供了很有吸引力的的折衷方案。

  很明顯,我們不會局限於對於小貓照片的點贊數量。Canssandra 是一款為高並發寫入優化的方案。這使其成為需要時常吞吐數據的大數據應用的理想解決方案。實時應用和物聯網方面的應用正在穩步增長,無論是需求還是市場表現,我們也會不斷的利用我們收集到的數據來尋求改進技術應用的方式。

  這就引出了我們的下一步,我們已經提到了如何以一種現代的、性價比高的方式儲存數據,但我們應該如何獲得更多的動力呢?具體而言,當我們收集到了所需的數據,我們應該怎樣處理呢?如何才能有效的分析幾百 TB 的數據呢?如何才能實時的對我們所收集到的信息進行反饋,並在幾秒而不是幾小時的時間利作出決策呢?Apache Spark 將給我們答案。

  Spark 是大數據變革中的下一步。 Hadoop 和 MapReduce 都是革命性的產品,它們讓大數據界獲得了分析所有我們所取得的數據的機會。Spark 對性能的大幅提升及對代碼復雜度的大幅降低則將大數據分析提升到了另一個高度。通過 Spark,我們能大批量的處理計算,對流處理進行快速反應,通過機器學習作出決策,並通過圖遍歷來理解復雜的遞歸關系。這並非只是為你的客戶提供與快捷可靠的應用程序連接(Cassandra 已經提供了這樣的功能),這更是能洞悉 Canssandra 所儲存的數據,作出更加合理的商業決策並同時更好地滿足客戶需求。

?

Cassandra 和 Spark 數據處理一窺