當要分析的資料大到一臺電腦沒辦法處理(可能是檔案過大沒辦法載入單臺電腦的記憶體、或是單臺運算時間太長)的時候,通常有兩種解決方法。1.購買一臺昂貴的超級電腦(96核CPU, 1TB Memory…) 2.購買多臺較便宜的一般電腦來分工處理原本的工作。
- 第一種的解法,對于開發(fā)人員來說的好處是程式碼完全不用改直接丟上去跑。但對于企業(yè)來說為了少數工作花好幾百萬的經費購買超級電腦非常的不劃算,而且假設剛好你的資料量又超過1TB這時候原本的超級電腦就不能使用了,要再買更高級的超級電腦,也就是擴充性不佳
- 利用多臺電腦打造一個運算群集(背后可能是1000臺16核心48GB的電腦這樣的等級), 此時你要多少運算資源都可以動態(tài)的調整,比方說某一個工作要100核心以及2TB的Memory, Spark都可以很快的配置資源,并且這個運算叢集是可以給全公司的人來使用,平均分攤下來的成本較低。而且這樣的群集的已很容易地增加以及減少里面的電腦數量。
Spark官方網站提到Spark的好處有
速度快
Spark比起Hadoop在運算上快了許多,主要是把資料暫存在記憶體以及把資料處理的部份優(yōu)化(ex:減少shuffle)
容易使用
Spark提供Scala,Python,R,Java的API介面,讓開發(fā)者可以利用自己擅長的開發(fā)語言來開發(fā)。主流上是使用Scala, Python這兩種
廣泛應用
可以在Spark上面使用SQL、即時串流(Streaming)、Spark的機器學習套件(MLlib)、圖論(計算圖形中任兩點的最短路徑)的套件
下圖為Spark python語言API工具PySpark簡要學習指南:
