Twitter將采用Spark分析大數(shù)據(jù)
Spark是一個基于內(nèi)存計算的開源的集群計算系統(tǒng)(點此下載),目的是讓數(shù)據(jù)分析更加快速。Spark非常小巧玲瓏,由加州伯克利大學AMP實驗室的Matei為主的小團隊所開發(fā)。使用的語言是Scala,項目的core部分的代碼只有63個Scala文件,非常短小精悍。與Hadoop不同的是,Spark和Scala緊密集成,Scala像管理本地collective對象那樣管理分布式數(shù)據(jù)集。
Edwin認為:”MapReduce或hadoop任務都是批處理,所以啟動一項Hadoop任務,或等待結(jié)果返回都需要等待很長時間,這一點很難改變,因為Hadoop天生就是一個批處理系統(tǒng),你無法在上面運行互動分析。不過Hadoop對于分析海量數(shù)據(jù)還是很有用的。”
Spark開發(fā)之初是為了兩個能被內(nèi)存計算提速的應用:互動算法(常見于機器學習中,例如Google的PR)和互動數(shù)據(jù)挖掘(Hive on Spark)。在這兩個應用中,Spark的速度是Hadoop MapReduce的30倍!這是因為運行Spark系統(tǒng)時,服務器可以把中間數(shù)據(jù)存儲在RAM內(nèi)存中,而無需經(jīng)常從頭加載。這意味著分析結(jié)果的返回速度大大加快,足以勝任互動分析工作。(見下圖)
在Spark的出生地——加州伯克利大學的AMP實驗室,研究人員用Spark分析垃圾郵件過濾、自然語言處理以及交通路況預測等任務。Spark還被用來給Conviva、Klout和Quantifind等公司的數(shù)據(jù)分析服務提速。無疑,Spark處理分布式數(shù)據(jù)集的框架不僅是有效的,而且是高效的(通過簡潔的Scala腳本)。Spark和Scala目前都還尚處于開發(fā)中。盡管如此,隨著加入更多的關鍵互聯(lián)網(wǎng)特性,它越來越從有趣的開源軟件過渡為基礎的web技術。