国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Dpark的數(shù)據(jù)分析方法的性能研究*

2016-08-11 07:04馬燕龍
計算機與數(shù)字工程 2016年4期

馬燕龍 吳 云

(貴州大學(xué)計算機科學(xué)與技術(shù)學(xué)院 貴陽 550025)

?

基于Dpark的數(shù)據(jù)分析方法的性能研究*

馬燕龍吳云

(貴州大學(xué)計算機科學(xué)與技術(shù)學(xué)院貴陽550025)

摘要隨著大數(shù)據(jù)時代的來臨,以Hadoop和Spark為首的開源分布式計算框架主導(dǎo)著相關(guān)行業(yè)的事實標(biāo)準(zhǔn)。然而,無論是使用Java編寫的Hadoop,還是使用Scala編寫的Spark,使用及對其進行二次開發(fā)的難度都比較大,而使用Python編寫的分布式計算框架Dpark,具有繼承自Spark的內(nèi)存計算和惰性求值機制,結(jié)合Python的簡潔語法,同時又配合分布式文件系統(tǒng)MooseFS、分布式數(shù)據(jù)庫Beansdb和分布式資源調(diào)度框架Mesos,可以極大提高數(shù)據(jù)分析的工作效率。文章主要對比了傳統(tǒng)Python程序和基于Dpark的Python程序在完成數(shù)據(jù)預(yù)處理工作上的運行效率,得出后者的性能和可擴展性至少優(yōu)于前者數(shù)十倍的結(jié)論。

關(guān)鍵詞Dpark框架; 集群部署; 數(shù)據(jù)預(yù)處理

Class NumberTP311.5

1 引言

隨著信息技術(shù)的飛速發(fā)展,云計算已經(jīng)成為當(dāng)前計算機相關(guān)行業(yè)熱議的話題,“互聯(lián)網(wǎng)+”也成為國家從上到下大力研究的課題。

云計算涉及的技術(shù)非常廣泛,基本來說,數(shù)據(jù)的存儲需要用到分布式文件系統(tǒng)和分布式數(shù)據(jù)庫,資源的管理調(diào)度需要用到分布式資源調(diào)度系統(tǒng),數(shù)據(jù)的計算需要用到分布式計算框架,文章重點研究由北京豆網(wǎng)科技有限公司開發(fā)并開源的分布式計算框架——Dpark[1],在Dpark之外,文章部署的云計算平臺采用了分布式文件系統(tǒng)MooseFS[2]、分布式數(shù)據(jù)庫Beansdb[3]和分布式資源調(diào)度系統(tǒng)Mesos[4]。

2 Dpark概述

毋庸置疑,由Apache基金會開發(fā)的分布式計算框架Hadoop[5]已經(jīng)成為大數(shù)據(jù)處理事實上的工業(yè)標(biāo)準(zhǔn),同時它也是最著名的MapReduce[6]開源框架。但相比Dpark來說,Hadoop的用戶友好性不足,基于Hadoop的分布式計算需要采用Java編寫嚴(yán)格意義上的Map函數(shù)和Reduce函數(shù),設(shè)計難度大,開發(fā)的代碼量也比較大,而大量的代碼就意味著大量的維護,商業(yè)系統(tǒng)的開發(fā)和維護需要比較高的人力成本。而Dpark采用Python編寫,提供了Python的原生接口,更是加入函數(shù)式編程的思想,極大簡化了分布式計算的編碼難度,降低了工作量,不管對于商業(yè)系統(tǒng),還是科研系統(tǒng)來說,都可以極大提高工作效率。

從另一個角度看,由UC Berkeley AMP Lab開發(fā)并開源的分布式計算框架Spark[7]已經(jīng)在挑戰(zhàn)Hadoop的霸主地位。和Hadoop相比,Spark將內(nèi)存計算的方法引入分布式計算領(lǐng)域,同時利用RDD(Resilient Distributed Dataset)[8]的內(nèi)存抽象技術(shù),實現(xiàn)惰性求值。此舉不僅突破了Hadoop的MapReduce固定框架,同時對于實際應(yīng)用中非常常見的迭代計算有了更好的支持,由于采用內(nèi)存計算、惰性求值,Spark的性能遠(yuǎn)高于Hadoop。因而Spark正在向下一代分布式計算平臺的事實工業(yè)標(biāo)準(zhǔn)邁進。

但由于Spark本身使用小眾編程語言Scala開發(fā),基于Spark的二次開發(fā)比較困難,而作為仍不成熟的計算框架,完全等著開發(fā)者去改進和完善是不現(xiàn)實的,對此,國內(nèi)的北京豆網(wǎng)科技有限公司,即豆瓣網(wǎng)的開發(fā)運營商,采用Python語言將Spark進行了重寫并開源,這樣對于國內(nèi)用戶來說,根據(jù)需求進行分布式計算框架的二次開發(fā)十分方便,因此,研究Dpark已存在極大且必要的需求。

3 部署方法

常規(guī)的Dpark部署分為四個部分,即分布式文件系統(tǒng)MooseFS、分布式數(shù)據(jù)庫Beansdb、分布式資源調(diào)度系統(tǒng)Mesos、分布式計算框架Dpark。其中MooseFS主要存儲數(shù)據(jù)源文件,常見的是日志文件、逗號分隔符文件等文本文件,也可以是圖片文件;Beansdb是一種分布式Key-Value數(shù)據(jù)庫,主要用于存儲中間計算結(jié)果,可以看成集群上各個節(jié)點共同使用的大字典;Mesos是一種資源調(diào)度系統(tǒng),主要用于集群的任務(wù)分配,通過Web界面可以瀏覽任務(wù)完成情況。換句話說,MooseFS、Beansdb和Mesos將集群抽象成了一個機器,使得在集群上運用Dpark就如同在本地編寫普通的Python程序,極大簡化了程序編寫的復(fù)雜度,降低了數(shù)據(jù)分析的工作量,提高了數(shù)據(jù)分析的效率。

部署了4臺物理機器,含虛擬機在內(nèi)共14個計算節(jié)點,1個內(nèi)存節(jié)點,3個存儲節(jié)點。相關(guān)硬件配置如表1所示。

表1 集群相關(guān)硬件配置

4 實驗與結(jié)果分析

通過經(jīng)典的基于物品的協(xié)同過濾算法[9]中的數(shù)據(jù)預(yù)處理工作對比了傳統(tǒng)Python程序和基于Dpark的Python程序的性能差異。實驗中采用了MovieLens開放數(shù)據(jù)集[10]。

4.1源數(shù)據(jù)格式

論文使用了源數(shù)據(jù)中ratings.dat文件,數(shù)據(jù)格式和數(shù)據(jù)行數(shù)如圖1所示,其中,數(shù)據(jù)行包含如下內(nèi)容:用戶編號、電影編號、評分值、時間戳(采用unix計時方式)。

圖1 數(shù)據(jù)集部分?jǐn)?shù)據(jù)和數(shù)據(jù)行數(shù)

4.2數(shù)據(jù)預(yù)處理的性能對比

首先對比兩種方法進行數(shù)據(jù)預(yù)處理的性能。由于將全部數(shù)據(jù)預(yù)處理結(jié)果打印到屏幕是不現(xiàn)實的,打印部分結(jié)果進行展示,同時分別統(tǒng)計程序運行時間。本例從源數(shù)據(jù)獲取“用戶-電影映射”和“電影-用戶映射”這兩個字典。

分別用傳統(tǒng)算法和基于Dpark的算法進行了處理。

1) 傳統(tǒng)算法采用的流程如下:

(1)打開并讀取文件;

(2)用strip()函數(shù)去除行首和行尾空格;

(3)使用split()函數(shù),依照“::”劃分每行記錄,放到一個嵌套列表中;

(4)使用嵌套列表推導(dǎo)計算映射結(jié)果。

2) 基于Dpark的算法采用的是如下流程:

(1)使用Dpark加載分布式文件系統(tǒng)中的目標(biāo)文件;

(2)利用map()函數(shù),結(jié)合strip()函數(shù)和split()函數(shù),將數(shù)據(jù)集轉(zhuǎn)換成嵌套列表;

(3)利用map()函數(shù),結(jié)合groupByKey()函數(shù),進行分組合并,得出映射結(jié)果。

兩種方法的主體思路是一樣的,但計算結(jié)果差距很大。

圖2 兩種方法的輸出結(jié)果對比

圖2是兩種方法的運行結(jié)果對比,差距讓人驚訝,提取同樣結(jié)構(gòu)的數(shù)據(jù)處理結(jié)果,傳統(tǒng)方法花費了852.557s,而基于Dpark的方法只用了0.159s,相差5362倍,這主要得益于Dpark的惰性求值機制。實質(zhì)上,Dpark并未真正求出結(jié)果數(shù)據(jù)集。但是傳統(tǒng)方法不具有惰性求值的機制,故而計算的是提取了全部統(tǒng)計結(jié)果的時間耗費。對此,論文進行了進一步實驗。但這里需要注意的是,即便基于Dpark的方法沒有獲取全部數(shù)據(jù)集,但可以在后續(xù)計算中,高效讀取需要的數(shù)據(jù)。

圖3 程序性能對比圖

在進一步的實驗中,修改了兩個程序,普通方法用print()函數(shù)輸出兩組映射的元素個數(shù),基于Dpark的方法用count()函數(shù)計算結(jié)果集的規(guī)模,再進一步對比兩個程序的性能。限于篇幅,由于基于Dpark的方法程序輸出時會有很多運算過程信息,所以無法截圖,只好直接展示性能對比圖,如圖4所示。

圖4 進一步實驗的程序性能對比圖

兩種方法統(tǒng)計的結(jié)果中,“用戶-電影映射”共有6040個元素,“電影-用戶映射”共有3706個元素。傳統(tǒng)方法運行了878.618s,而基于Dpark的方法只用10.548s。注意傳統(tǒng)方法在第一次實驗中已經(jīng)得到了整個集合,集合長度并不大,所以求元素個數(shù)沒有耗費很多時間,和之前的代碼運行結(jié)果相差不大,完全不是倍數(shù)關(guān)系。但基于Dpark的方法由于需要真實計算結(jié)果集合,并且還需要計算元素個數(shù),因而和之前相差66倍之多。但即便如此,基于Dpark的方法完成相同需求所用時間,也是傳統(tǒng)方法的1.2%左右。

4.3結(jié)果分析

綜上,如果只需要提取結(jié)果集,并不明確獲取結(jié)果集的全部元素,那么運用Dpark可以讓程序運行效率提高幾千倍;即便明確獲取結(jié)果集的全部元素,運用Dpark也可以讓程序運行效率提高60倍左右。這主要得益于Dpark繼承自Spark的惰性求值機制,大大減少迭代計算時的工作量,簡化了計算過程,提高了運行效率。

這里需要注意的是,基于Dpark的方法只是啟用了三個計算節(jié)點參與了本次運算,也就是說,一百萬行的計算量尚不足以發(fā)揮整個集群的運算能力。我們會在后續(xù)工作中使用更大的數(shù)據(jù)集進行測試。

5 結(jié)語

Dpark的運用對于提高數(shù)據(jù)分析效率具有重大意義,這對于擁有大量數(shù)據(jù),同時有強烈數(shù)據(jù)分析需求的用戶來說,無疑具備了強有力的武器。文章進行了數(shù)據(jù)預(yù)處理相關(guān)工作,基于Dpark的方法相對傳統(tǒng)方法性能提高至少在數(shù)十倍左右,也就意味著數(shù)十天的工作量,使用Dpark可以在1天左右

完成。實際應(yīng)用中可以根據(jù)任務(wù)量的大小分配虛擬機的數(shù)量,減少不必要的網(wǎng)絡(luò)開銷。同時,如果數(shù)據(jù)量非常龐大,也可以加入更多的虛擬機參與計算,隨著計算節(jié)點的增加,集群的計算能力可以不斷增大,而傳統(tǒng)方法不具備這樣的可擴展性。在合理的虛擬機數(shù)量下,計算效率還有很大的提升空間,而如何計算合理的虛擬機數(shù)量,是下一步的研究重點。

Dpark充分發(fā)揮了Python的簡潔語法特性,大量工作都可以用簡短的代碼完成,工作效率得到大大提升。從文章可以看到提取某一個統(tǒng)計結(jié)果數(shù)據(jù)集僅需要一行簡短的Python代碼。這對于提高數(shù)據(jù)分析系統(tǒng)的開發(fā)效率、降低系統(tǒng)維護難度具有現(xiàn)實意義。

Dpark是分布式計算框架,計算能力可以隨著集群的擴展而不斷增強,具備良好的可擴展性。在處理大規(guī)模的數(shù)據(jù)時,單臺主機已經(jīng)無法在有效的時間范圍內(nèi)處理數(shù)據(jù),這時只能依靠集群的并行計算能力處理數(shù)據(jù),Dpark大有用武之地。

參 考 文 獻

[1] 張杰.PyGel:基于DPark的分布式圖計算引擎的研究與實現(xiàn)[D].廣州:華南理工大學(xué)計算機科學(xué)與工程學(xué)院,2013:5-25.

ZHANG Jie. PyGel: A Distributed Graph Computing Engine Based On Dpark[D]. Guangzhou: School of Computer Science & Engineering, South China University of Technology,2013:5-25.

[2] Chen Lixian, Xiao Tong. Research on Achieving Cloud Storage Based on Moose FS[C]//Proceedings of the 2012 Second International Conference on Electric Information and Control Engineering,2012(2):1266-1269.

[3] Deka Ganesh Chandra. BASE analysis of NoSQL database[J]. Future Generation Computer Systems. May.,2015(3):13-21.

[4] Benjamin Hindman, Andy Konwinski, et al. Mesos: a platform for fine-grained resource sharing in the data center[C]//Proceedings of the 8th USENIX conference on Networked systems design and implementation,2011:295-308.

[5] Mohd Rehan Ghazi, Durgaprasad Gangodkar. Hadoop, MapReduce and HDFS: A Developers Perspective[J]. Procedia Computer Science,2015(48):45-50.

[6] Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters[J]. Communications of the ACM. Jan.,2008(51):107-113.

[7] Matei Zaharia, Mosharaf Chowdhury, et al. Spark: Cluster Computing with Working Sets[D]. Berkeley: Tech. Rep. UCB/EECS-2010-53, EECS Department, University of California,2010:1-6.

[8] Matei Zaharia, Mosharaf Chowdhury, et al. Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing[D]. Berkeley: Tech. Rep. UCB/EECS-2011-82, EECS Department, University of California,2011:1-14.

[9] Greg Linden, Brent Smith, et al. Amazon.Com Recommendations: Item-to-Item Collaborative Filtering[J]. IEEE Internet Computing,2003,7(1):76-80.

[10] Herlocker, J., Konstan, J., et al. An Algorithmic Framework for Performing Collaborative Filtering[C]//Proceedings of the 1999 Conference on Research and Development in Information Retrieval. Aug,1999:230-237.

收稿日期:2015年10月14日,修回日期:2015年11月28日

基金項目:個性化推薦技術(shù)的研究與應(yīng)用(編號:聯(lián)科(合)20141101);貴州省科學(xué)技術(shù)基金項目(編號:黔科合J字[2010]2100號);貴州大學(xué)博士基金(編號:貴大人基合字(2009)029號)資助。

作者簡介:馬燕龍,男,碩士研究生,研究方向:分布式計算與推薦系統(tǒng)。吳云,男,博士,副教授,研究方向:云計算。

中圖分類號TP311.5

DOI:10.3969/j.issn.1672-9722.2016.04.029

Performance of Data Analysis Method Based on Dpark

MA YanlongWU Yun

(College of Computer Science and Technology, Guizhou University, Guiyang550025)

AbstractDistributed computing has got extensive application with the coming of the big data era. Open source distributed computing frameworks headed by Hadoop and Spark lead the relevant industry standards. However, there are difficulties in using and second-round developing Hadoop and Spark, while the former is programmed with Java and the latter is programmed with Scala. But Dpark, a distributed computing framework programmed with Python, extremely improves work efficiency of data analysis, because it not only inherits the mechanism of memory calculation and lazy evaluation from Spark, but also combines with the concise syntax of Python. What’s more, it is able to cooperate with MooseFS, which is a distributed file system, Beansdb, which is a distributed database, and Mesos, which is a distributed resources scheduling framework, naturally. The work efficiency of traditional Python program and the Dpark-based program in data preprocessing are compared, while the performance and scalability of the latter is better than the former.

Key WordsDpark, cluster deployment, data preprocessing