一、如何從菜鳥成長成spark大數據高手
第一階段:熟練掌握Scala語言
1,spark框架是采用scala語言寫的,精致優雅。想要成為spark高手,你就必須閱讀spark源碼,就必須掌握scala。?
2,雖然現在的spark可以使用多種語言開發,java,python,但是最快速和支持最好的API依然并將永遠是Scala的API,所以必須掌握scala來編寫復雜的和高性能的spark分布式程序。?
3尤其是熟練掌握Scala的trait,apply,函數式編程,泛型,逆變,與協變等。
第二階段:精通spark平臺本身提供給開發折的API
1,掌握spark中面向RDD的開發模式,掌握各種transformation和action函數的使用。?
2,掌握Spark中的款依賴和窄依賴,lineage機制。?
3,掌握RDD的計算流程,如Stage的劃分,spark應用程序提交給集群的基礎過程和Work節點基礎的工作原理。
第三階段:深入Spark內核
此階段主要是通過Spark框架的源碼研讀來深入Spark內核部分:?
1,通過源碼掌握Spark的任務提交,?
2,通過源碼掌握Spark的集群的任務調度,?
3,尤其要精通DAGScheduler,TaskScheduler和Worker節點內部的工作的每一步細節。
第四階段:掌握Spark上的核心框架的使用
Spark作為云計算大數據時代的集大成者,在實時流式處理,圖技術,機器學習,nosql查詢等方面具有明顯的優勢,我們使用Spark的時候大部分時間都是在使用其框架:?
sparksql,spark streaming等?
1,spark streaming是出色的實時流失處理框架,要掌握,DStream,transformation和checkpoint等。?
2,spark sql是離線統計分析工具,shark已經沒落。?
3,對于spark中的機器學習和Graphx等要掌握其原理和用法。
第五階段:做商業級的spark項目
通過一個完整的具有代表性的spark項目來貫穿spark的方方面面,包括項目的框架設計,用到的技術的剖析,開始實現,運維等,完善掌握其中的每一個階段和細節,以后你就可以從容的面對絕大多數spark項目。
第六階段:提供spark解決方案
1,徹底掌握spark框架源碼的每一個細節,?
2,根據步同的業務場景的需要提供spark在不同場景的解決方案,?
3,根據實際需要,在spark框架基礎上經行2次開發,打造自己的spark框架。
二、用Spark做數據分析是怎樣一種體驗
數據科學家為了回答一個問題或進行深入研究,會使用相關的技術分析數據。通常,他們的工作包含特殊的分析,所以他們使用交互式shell,以使得他們能在最短的時間內看到查詢結果和代碼片段。Spark的速度和簡單的API接口很好地符合這個目標,它的內建庫意味著很多算法可以隨時使用。
Spark通過若干組件支持不同的數據科學任務。Spark shell使得用Python或Scala進行交互式數據分析變得簡單。Spark SQL也有一個獨立的SQL shell,可以用SQL進行數據分析,也可以在Spark程序中或Spark shell中使用Spark SQL。MLlib庫支持機器學習和數據分析。而且,支持調用外部的MATLAB或R語言編寫的程序。Spark使得數據科學家可以用R或Pandas等工具處理包含大量數據的問題。
有時,經過初始的數據處理階段后,數據科學家的工作將被產品化,擴展,加固(容錯性),進而成為一個生產數據處理應用,作為商業應用的一個組件。例如,一個數據科學家的研究成果可能會產生一個產品推薦系統,集成到一個web應用上,用來向用戶生成產品建議。通常由另外的人員(如工程師)對數據科學家的工作進行產品化。
這個的話,先要了解下當下比較火的大數據,ITjob官網上有大數據和Spark的文章和帖子,如果覺得回答的不夠詳細,可以自己再去了解下。也可以去專業的貼吧和博客尋找下答案。
三、python的機器學習可以放到spark上面跑嗎
可以的。python編寫好的算法,或者擴展庫的,比如sklearn都可以在spark上跑。直接使用spark的mllib也是可以的,大部分算法都有。
四、如何學習Spark API
其實spark的核心就是RDD,只要你知道所有在RDD上的操作才會被運行在cluster上就好了。其他的和正常的編程沒啥區別。至于API,真要學也就是掃一下目錄看看都有啥class就行了,用的時候在深入。盡管Spark本身是用Scala寫的,但你可以用一些API使得你的工作容易些。如果你用過Python或者Scala的shells,那么你就已經在用這些語言的API了。你需要做的就是將你的程序保存為腳本而僅需很少的修改。
如果你在尋找構建更加健壯的程序,你可以使用Java API。即使你已經用Java完全實現了你的程序,你仍然可以在shell中勾畫出的你的想法以確保在將其部署到你的集群之前你的算法是正確的。Spark發行了一些庫:Spark SQL,Spark Streaming(建立在Spark上的實時計算框架),the MLlib machine learning library(機器學習庫)和GraphX。
你可以通過使用一些易用的API來構建復雜的應用并且實時部署它們。你甚至可以以混合和匹配技術來構建應用程序或者大數據管道,例如從機器學習的結果生成圖的應用。由 Hadoop平臺支持的 Apache Spark 提供了強大和靈活性。通過完全支持Spark棧的MapR分布,對程序員很容易地實時創建一個復雜的大數據應用是可能的,就像批處理數據等等。