?

基于Spark的大數據計算模型

2016-08-19 18:49王磊時亞文
電腦知識與技術 2016年20期
關鍵詞:機器學習

王磊++時亞文

摘要:作為第三代機器學習工具,spark被視為替換Hadoop的下一代數據處理解決方案.包括了迭代計算、批處理計算、內存計算、流式計算、數據查詢分析計算及圖計算,提供了強大的內存計算引擎.Spark有望成為下一代大數據熱門框架.研究分析了Spark組件生態圈和Lambda架構.最后介紹了Spark應用于機器學習領域.

關鍵詞:機器學習;spark;Hadoop

中圖分類號:TP301 文獻標識碼:A 文章編號:1009-3044(2016)20-0007-02

Abstract:As the third generation of machine learning tools, spark is considered as the next generation of data processing solution to replace Hadoop, including the iterative calculation, batch calculation, memory computing, flow calculation, data query analysis and graph calculation. It provides a powerful memory computing engine.Spark, which is the next generation of big data popular framework.

Key words:Machine learning; spark; Hadoop

大數據通常分為批量數據流及實時數據流。兩種流類型都有各自解決方案,前者通常采用MPI、OpenMP及Hadoop等并行模型進行集群計算,后者采用流數據模型進行處理,如

Storm、S4及Spark Streaming。IBM研究院Sun[1]等認為MapReduce計算模型在倒排索引、kNN分類等批量處理的數據挖掘或統計機器學習算法中有較好效果,K-Means、高斯混合、PageRank、LDA等需要多次迭代的算法用MapReduce模型也有較好效果,缺陷是MapReduce計算模型在大量數據同步的算法如SVM中效果不佳,因此Spark集群計算平臺應運而生。

1 Spark模型介紹[2]

Spark是UC Berkeley AMP lab開發的開源集群計算平臺,是以內存計算為基礎的集群計算框架。Hadoop模型中的MapReduce模式的缺陷是運行速度慢,比較適合離線的任務分解,運行程序時需要復制額外的信息,序列化和磁盤I/0所帶來的時間空間開銷代價也比較大,Spark模型基于內存計算而且執行作業是基于構建的Stage有向無環圖,Spark模型運行速度快的主要原因是算子融合和有向無環圖,Spark模型設計和內核處理模式較適合進行大規模信息處理。Spark組件生態圈如圖1。

2 Spark在RDD中的編程模型[3,5]

RDD(Resilient Distributed Datasets)彈性分布式數據集是分布式內存的一個抽象概念,RDD設計了一種高度受限的共享內存模型,通過在其他彈性分布式數據集執行確定的轉換操作而創建,這些限制使得容錯實現的開銷代價降低。

Spark的設計思想是在任務和數據的容錯方式基礎上,設計出一種全新的容錯方式模型,能夠減少網絡流量及磁盤輸入輸出開銷。RDD是一種只讀數據塊,可以通過從存儲系統上讀取數據或者進行其他RDD操作。RDD數據的只讀特性表示如果對一個RDD數據塊進行了操作,那么結果將會是一個新的RDD,這種情況放在代碼情景下,假設變換前后都是使用同一個變量表示這一RDD,RDD里面的數據意義并不是真實的數據,而是一些元數據信息。

Spark提供多種計算方式,使其他成為高效的數據流水線,提供了復雜查詢,流式計算、機器學習、圖計算等功能。Spark支持scala、python和java評議,提供了shell,方便與用戶交互。Spark可以運行在Hadoop數據源上,如HDFS、Hive、HBase等,這樣的一種特征,可以讓Spark開發者及用戶輕易地從原系統遷移到Spark系統上來。

3 Spark架構思路[1,7]

Spark計算模型采用Lambda Architecture架構處理批量及實時流數據,Lambda Architecture架構分為三層:包括Batch Layer批處理層、Serving Layer服務層以及Speed Layer速度層。

其中批處理層設計基于Hadoop計算模型,在Spark平臺上開發的圖計算框架GraphX和機器學習庫Mllib可作為批量數據分析。服務層可以接收外部ad-hoc查詢請求,利用Shark等索引服務對批量處理層的結果進行索引,完成準實時的SQL查詢任務。速度層采用Spark Streaming分布式的流處理平臺實時處理數據成查詢處理。

4 Spark實現機器學習算法[3,8]

4.1 Spark中的邏輯回歸算法

JavaHdfsLR是邏輯回歸分類算法的Spark實現,采用漸進梯度下降模型。使用SGD加上諸如牛頓-拉普森的近似法來預測似然函數。輸入數據集及輸出結果都是Hadoop分布式文件系統中的文件。

4.2 Spark中的支持向量機

使用SVMModel的內部類來表示訓練過程中返回的模型對象以及SVMWithSGD。支持向量機的工作流:

1)創建Spark上下文。

2)加載已標記的輸入訓練數據,SVM中用到的標記必須是{0,1}。

3)使用由{label,features}對及其他輸入參數組成的RDD輸入來訓練模型。

4)使用輸入數據來創建一個類型為SVMWithSGD的對象。

5)調用GenerallizedLinearModel重寫后的run()方法,它會使用預配置的參數在輸入RDD的LabeledPoint上運行算法,并對所有輸入特征的初始權重進行處理。

6)獲得一個SVM模型對象。

7)終止Spark上下文。

5 總結

作為第三代機器學習工具,spark被視為替換Hadoop的下一代數據處理解決方案.包括了迭代計算、批處理計算、內存計算、流式計算、數據查詢分析計算及圖計算,提供了強大的內存計算引擎.Spark有望成為下一代大數據熱門框架.研究分析了Spark組件生態圈和Lambda架構.最后介紹了Spark應用于機器學習領域。

參考文獻:

[1] 唐振坤.基于Spark的機器學習平臺設計與實現[D].廈門大學,2011.

[2]http://baike.baidu.com/link?url=NjUeVoyTiUBYebTHNOyw3 9VNZ1Yn9OMPz-SMujvalpeDTbcwuYNOQS5xRQttjvtXa3mO O5QdAI3Ho_H4dgsg8tywKzdDg_w3ZURoiHOCYK7百度學科

[3] Vijay Srinivas Agneeswaran.顛覆大數據分析:基于Storm、Spark等Hadoop替代技術的實時應用[M]. 吳京潤,黃經業,譯.中國工信出版集團,電子工業出版社,2015.

[4]胡俊.基于Spark的大數據混合計算模型[J].計算機系統應用2015,24(4):214-218.

[5]楊志偉.基于Spark平臺推薦系統研究[D].中國科學技術大學,2015.

[6]李爽.基于Spark的數據處理分析系統的設計與實現[D].北京交通大學,2015.

[7] 梁彥.基于分布式平臺Spark和YARN的數據挖掘算法的并行化研究[D].中山大學.2014

[8]Nathan Marz, James Warren.Big Data: Principles and Best Practices of Scalable Realtime Data Systems.2015.

猜你喜歡
機器學習
前綴字母為特征在維吾爾語文本情感分類中的研究
基于支持向量機的金融數據分析研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合