Spark和Hadoop,孰優孰劣?
Spark 已經取代 Hadoop 成為最活躍的開源大數據項目。但是,在選擇大數據框架時,企業不能因此就厚此薄彼。近日,著名大數據專家 Bernard Marr 在一篇 文章 中分析了Spark和Hadoop的異同。
Hadoop和Spark均是大數據框架,都提供了一些執行常見大數據任務的工具。但確切地說,它們所執行的任務并不相同,彼此也并不排斥。雖然 在特定的情況下,Spark據稱要比Hadoop快100倍,但它本身沒有一個分布式存儲系統。而分布式存儲是如今許多大數據項目的基礎。它可以將PB級 的數據集存儲在幾乎無限數量的普通計算機的硬盤上,并提供了良好的可擴展性,只需要隨著數據集的增大增加硬盤。因此,Spark需要一個第三方的分布式存 儲。也正是因為這個原因,許多大數據項目都將Spark安裝在Hadoop之上。這樣,Spark的高級分析應用程序就可以使用存儲在HDFS中的數據 了。
與Hadoop相比,Spark真正的優勢在于速度。Spark的大部分操作都是在內存中,而Hadoop的MapReduce系統會在每次操作 之后將所有數據寫回到物理存儲介質上。這是為了確保在出現問題時能夠完全恢復,但Spark的彈性分布式數據存儲也能實現這一點。
另外,在高級數據處理(如實時流處理和機器學習)方面,Spark的功能要勝過Hadoop。在Bernard看來,這一點連同其速度優勢是Spark越 來越受歡迎的真正原因。實時處理意味著可以在數據捕獲的瞬間將其提交給分析型應用程序,并立即獲得反饋。在各種各樣的大數據應用程序中,這種處理的用途越 來越多,比如,零售商使用的推薦引擎、制造業中的工業機械性能監控。Spark平臺的速度和流數據處理能力也非常適合機器學習算法。這類算法可以自我學習 和改進,直到找到問題的理想解決方案。這種技術是最先進制造系統(如預測零件何時損壞)和無人駕駛汽車的核心。Spark有自己的機器學習庫 MLib ,而Hadoop系統則需要借助第三方機器學習庫,如 Apache Mahout 。
實際上,雖然Spark和Hadoop存在一些功能上的重疊,但它們都不是商業產品,并不存在真正的競爭關系,而通過為這類免費系統提供技術支持 贏利的公司往往同時提供兩種服務。例如,Cloudera就既提供Spark服務也提供Hadoop服務,并會根據客戶的需要提供最合適的建議。
Bernard認為,雖然Spark發展迅速,但它尚處于起步階段,安全和技術支持基礎設施方還不發達。在他看來,Spark在開源社區活躍度的上升,表明企業用戶正在尋找已存儲數據的創新用法。