顛覆大數據分析之第二章結束語
本章討論了一些業務場景,以及它們在BDAS框架中的實現。同時還介紹了什麼是BDAS框架,並重點介紹了Spark, Shark,以及Mesos。Spark在那些涉及到優化的場景中非常有用——比如說Ooyala希望基於約束條件來動態地選擇最優的CDN,以便提升視頻的用戶體驗。必須注意的是,正如第一章所說的,眾所周知,約束及變量過多的優化問題是很難在Hadoop MR中解決的。隨機法要更適合Hadoop。不過你應當時刻牢記一點,Hadoop很難解決優化問題指的是它很難高效地實現規模化。
諸如MPI這些傳統的並行編程工具或者Spark這類的新範式則非常適用於這類優化的問題,它們能夠高效地進行擴展。另有數位研究人員也同時指出,Hadoop並不擅長迭代式機器學習算法,包括發明了Spark的伯克利的研究人員,以及GraphLab的研究人員,還有加州大學聖巴巴拉分校的MapScale團隊。Satish Narayana Srirama教授在他的論文中就這個問題進行了深入的討論(Srirama等2012)。最主要的原因就是它缺少長期存活的MR以及內存編程的支持。每一次MR迭代都要啟動新的MR作業,並將數據從HDFS中拷貝到內存裏,然後進行迭代,再將數據寫回到HDFS,檢查迭代是否終止…每次迭代都重複這些會帶來顯著的開銷。
MPI提供了一個叫做All-Reduce的結構,它使得值可以在集群節點間累加和廣播。Hadoop上唯一的一個解決了一類優化問題的高效實現來自於Vowpal Wabbit的團隊,他們提供了基於Hadoop的All-Reduce結構的一個實現(Agarwal等2013)。
對於另一類稍微不同的場景Shark則非常有用:它可以不用進行預計算就能執行大規模的低延遲即席查詢。Ooyala在視頻數據上進行的這類查詢就非常明顯,比如某個國家的移動用戶的熱門內容或者其它的動態趨勢的查詢。
Mesos是一個可以管理集群資源的資源管理器,這個集群可能會運行著多種框架,包括Hadoop, Spark, 或者Storm。在數據倉庫環境中這個非常有用,比如說,Hadoop可以用於ETL而Spark可以用來運行機器學習算法。
最後更新:2017-05-22 18:01:52