目前,Spark作為一種高效的分布式計算系統,其價值已經在國內業界獲得了廣泛的認可和尊重。2013年中期,隨著業務高速發展,越來越多的移動設備側數據被各個不同的業務平臺收集。那么這些數據除了提供不同業務所需要的業務指標,是否還蘊藏著更多的價值?為了更好地挖掘數據潛在價值,很多企業決定建造自己的數據中心,將各業務平臺的數據匯集到一起,對覆蓋設備的相關數據進行加工、分析和挖掘,從而探索數據的價值。 中培偉業《大數據Hadoop與Spark架構應用實戰》授課專家鐘老師指出,隨著Spark價值的日益彰顯,目前國內專業領域已經出現了全面擁抱Spark的局面。
進入2014年,公司的業務有了長足的發展,對比數據中心平臺建立時,每日處理的數據量亦翻了幾番。每日的排名計算所花的時間越來越長,而基于Hive的即時計算只能支持日尺度的計算,如果到周這個尺度,計算所花的時間已經很難忍受,到月這個尺度則基本上沒辦法完成計算?;谠赟park上的認知和積累,是時候將整個數據中心遷移到Spark上了。
國內的很多同行已經開始采用Spark來建造自己的大數據平臺,而Spark也變成了在ASF中最為活躍的項目之一。另外,越來越多的大數據相關的產品也逐漸在和Spark相融合或者在向Spark遷移。Spark無疑將會變為一個相比Hadoop MapReduce更好的生態系統,這無疑讓那些擁抱Spark的人更多了一份動力。
當然,由于我國互聯網領域對Spark的研究和應用還處于初級階段,再加上Spark本身存在很多不足,因此在應用Spark時難免會出現一些問題和困難。
任何新技術的引入都會歷經陌生到熟悉,從最初新技術帶來的驚喜,到后來遇到困難時的一籌莫展和惆悵,再到問題解決后的愉悅,大數據新貴Spark同樣不能免俗。鐘老師指出,目前,Spark在運行時常常會出現以下兩個方面的問題:
問題一:支撐大規模數據集運行時,會遇到org.apache.spark.SparkException: Error communicating with MapOutputTracke。
這個錯誤的顯示往往比較隱晦,從錯誤日志看,是Spark集群partition了,但如果觀察物理機器的運行情況,會發現磁盤I/O非常高。進一步分析會發現原因是Spark在處理大數據集時的shuffle過程中生成了太多的臨時文件,造成了操作系統磁盤I/O負載過大。找到原因后,解決起來就很簡單了,設置spark.shuffle.consolidateFiles為true。這個參數在默認的設置中是false的,對于linux的ext4文件系統,建議大家還是默認設置為true吧。Spark官方文檔的描述也建議ext4文件系統設置為true來提高性能。
問題二:運行時報Fetch failure錯。
在大數據集上,運行Spark程序,在很多情況下會遇到Fetch failure的錯。由于Spark本身設計是容錯的,大部分的Fetch failure會經過重試后通過,因此整個Spark任務會正常跑完,不過由于重試的影響,執行時間會顯著增長。造成Fetch failure的根本原因則不盡相同。
查看Spark的運行日志,從而找到造成Fetch failure的根本原因。其中大部分的問題都可以通過合理的參數配置以及對程序進行優化來解決。2014年Spark Summit China上陳超的那個專題,對于如何對Spark性能進行優化,有非常好的建議。
當然,在使用Spark過程中還遇到過其他不同的問題,不過由于Spark本身是開源的,通過源代碼的閱讀,以及借助開源社區的幫助,大部分問題都可以順利解決。
Spark在2014年取得了長足的發展,圍繞Spark的大數據生態系統也逐漸的完善。Spark 1.3引入了一個新的DataFrame API,這個新的DataFrame API將會使得Spark對于數據的處理更加友好。同樣出自于AMPLab的分布式緩存系統Tachyon因為其與Spark的良好集成也逐漸引起了人們的注意。鑒于在業務場景中,很多基礎數據是需要被多個不同的Spark任務重復使用,下一步,我們將會在架構中引入Tachyon來作為緩存層。另外,隨著SSD的日益普及,我們后續的計劃是在集群中每臺機器都引入SSD存儲,配置Spark的shuffle的輸出到SSD,利用SSD的高速隨機讀寫能力,進一步提高大數據處理效率。
在機器學習方面,H2O機器學習引擎也和Spark有了良好的集成從而產生了Sparkling-water。相信利用Sparking-water,作為一家創業公司,我們也可以利用深度學習的力量來進一步挖掘數據的價值。
最后,鐘老師總結道,相信隨著Spark生態的日益完善,會有越來越多的企業將自己的數據處理遷移到Spark上來。而伴隨著越來越多的大數據工程師熟悉和了解Spark,國內的Spark社區也會越來越活躍,Spark作為一個開源的平臺,相信也會有越來越多的華人變成Spark相關項目的Contributor,Spark也會變得越來越成熟和強大。