Apache Hadoop是一個成熟的開發框架,其連接著龐大的生態系統,并且得到了Cloudera、Hortonwork、Yahoo這些卓越機構的支持與貢獻,并且為各個組織提供了許多工具來管理不同大小規則的數據。
在過去,Hadoop中運用MapReduce進行批處理的特性足以滿足許多組織的處理需求。然而,隨著信息化時代的發展,越來越多組織亟需使用更加快速的數據處理。這些需求來自各個領域的驅動,其中包括最近發展的流媒體技術、物聯網、實時分析處理,這些也僅僅只是其中一部分。他們需要一套新的數據處理模型。在今天,能夠滿足上文提到的需求而引起了業界人士濃厚興趣與廣泛的支持的一項重要的新技術,就是Apache Spark。從能源產業到金融行業,Spark憑借其高效性與多功能性已經成為當今大數據處理棧中的關鍵部分。
Spark是一個比MapReduce更加靈活的開源且通用的計算框架。Spark憑借其高速的內存計算,在函數式編程中與Hadoop相比更具生產力。例如,如圖1所示,在邏輯回歸算法性能測試中,Spark內存計算下的運行比Hadoop MapReduce快了幾個數量級的速度。
圖1:邏輯回歸算法性能測試。圖片來源:Apache Spark,使用已經過授權。
其中Spark的一些特性包括:
它利用分布式內存進行計算。
它支持完整的用有向無環圖(DAG)來展示數據的并行計算。
它可以提高開發人員的經驗。
它提供了線性可伸縮性與數據本地化。
它具有容錯機制。
Spark為各種不同的用戶提供著便利:信息技術開發人員可以受益于Spark支持各種流行的開發語言,例如Java、Python、R語言;而數據科學家可以在Spark支持的機器學習(ML)庫中獲得研究便利。
在Spark中還有一個龐大且不斷增長的 第三方包列表,將各式各樣的工具、環境、框架、語言整合到一起,從而擴展Spark的復雜性以及能力。
Spark用例可以部署在不同的生產場景中,其中包括在一個大型技術公司中運用Spark通過使用機器學習來進行個性化搜索;在一個金融系統中僅需數小時便可以處理數以百萬計的股票分析,要知道相同的工作量下此前使用Hadoop MapReduce起碼得耗費一周的時間;在學術環境中進行基因科學研究;在視頻系統中,Spark與Spark Streaming被用于處理流媒體及其分析;以及衛生保健領域中Spark被用于進行疾病的預測建模。
如此看來似乎各式各樣不同的問題都能通過Spark成功地被解決,但是最重要的是我們仍需要不斷去優化Spark的架構,以處理任何所提及到的用例。正如Spark擁有強大的特性,簡而言之,這也意味著它的復雜性。因此,為了獲得最佳性能的Spark,它需要成為一個更廣泛的Hadoop基礎數據管理平臺的重要組成部分。此外,為了能在實時或者預測分析中得到更大收益,那么優化整個數據供應鏈也是至關重要的。