• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Spark計算引擎的數(shù)據(jù)對象緩存優(yōu)化研究

      2016-03-24 00:24:39陳康王彬馮琳
      中興通訊技術(shù) 2016年2期
      關(guān)鍵詞:并行計算

      陳康 王彬 馮琳

      摘要:研究了Spark并行計算集群對于內(nèi)存的使用行為,認為其主要工作是通過對內(nèi)存行為進行建模與分析,并對內(nèi)存的使用進行決策自動化,使調(diào)度器自動識別出有價值的彈性分布式數(shù)據(jù)集(RDD)并放入緩存。另外,也對緩存替換策略進行優(yōu)化,代替了原有的近期最少使用(LRU)算法。通過改進緩存方法,提高了任務(wù)在資源有限情況下的運行效率,以及在不同集群環(huán)境下任務(wù)效率的穩(wěn)定性。

      關(guān)鍵詞:并行計算;緩存;Spark;RDD

      Abstract:In this paper, Spark parallel computing cluster for memory is studied. Its main work is about modeling and analysis of memory behavior in the computing engine and making the cache strategy automatic. Thus, the scheduler can recognize a valuable data object to be cached in the memory. A new cache replacement algorithm is proposed to replace least recently used (LRU) and have better performance in some applications. Thus, the performance and reliability of the Spark computing engine can be improved.

      Key words:parallel computing; cache; Spark; resilient distributed dataset(RDD)

      大數(shù)據(jù)處理的框架在現(xiàn)階段比較有影響力的是基于Google所發(fā)明的MapReduce[1]方法及其Hadoop[2]的實現(xiàn)。當然,在性能上傳統(tǒng)的消息傳遞接口(MPI)[3]會更好,但是在處理數(shù)據(jù)的方便使用性、擴展性和可靠性方面MapReduce更加適合。使用MapRecuce可以專注于業(yè)務(wù)邏輯,不必關(guān)心一些傳統(tǒng)模型中需要處理的復(fù)雜問題,例如并行化、容錯、負載均衡等。

      由于Hadoop通過Hadoop分布式文件系統(tǒng)(HDFS)[4]讀寫數(shù)據(jù),在進行多輪迭代計算時速度很慢。隨著需要處理的數(shù)據(jù)越來越大,提高MapReduce性能變成了一個迫切的需求,Spark[5]便是在此種背景下應(yīng)運而生。

      Spark主要針對多輪迭代中的重用工作數(shù)據(jù)集(比如機器學習算法)的工作負載進行優(yōu)化,主要特點為引入了內(nèi)存集群計算的概念,將數(shù)據(jù)集緩存在內(nèi)存中,以縮短訪問延遲。

      Spark編程數(shù)據(jù)模型為彈性分布式數(shù)據(jù)集(RDD)[6]的抽象,即分布在一組節(jié)點中的只讀對象集合。數(shù)據(jù)集合通過記錄來源信息來幫助重構(gòu)以達到可靠的目的。RDD被表示為一個Scala[7]對象,并且可以從文件中創(chuàng)建它。

      Spark中的應(yīng)用程序可實現(xiàn)在單一節(jié)點上執(zhí)行的操作或在一組節(jié)點上并行執(zhí)行的操作。對于多節(jié)點操作,Spark依賴于Mesos[8]集群管理器。Mesos能夠?qū)Φ讓拥奈锢碣Y源進行抽象,并且以統(tǒng)一的方式提供給上層的計算資源。通過這種方式可以讓一個物理集群提供給不同的計算框架所使用。

      Spark使用內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負載。使用這種方法,幾乎可以將所有數(shù)據(jù)都保存在內(nèi)存中,這樣整體的性能就有很大的提高。然而目前Spark由于將緩存策略交由程序員在代碼中手動完成,有可能會引起緩存的低效甚至程序出錯,主要原因如下:

      (1)程序員如果緩存無用的數(shù)據(jù),將會導致內(nèi)存未被充分利用,降低內(nèi)存對程序性能的提升;

      (2)錯誤的緩存甚至會產(chǎn)生內(nèi)存溢出等嚴重后果,直接導致程序崩潰出錯;

      (3)程序中有具有緩存價值的數(shù)據(jù)得不到緩存,將使程序不能達到最高效率。

      隨著項目變大,代碼量增加,這個問題會變得越來越嚴重。如果使用自動分析的方法,自動完成緩存的工作,無疑會降低程序員負擔以及避免上述的問題。下面將對這方面進行初步研究,通過分析與建模,目的是使內(nèi)存的使用更加智能有效,并加速任務(wù)的運行速度。

      1 Spark中緩存優(yōu)化研究

      我們分3個方面對Spark中的緩存進行研究:一個是緩存自動化方法;一個是緩存替換方法改進;最后是程序執(zhí)行調(diào)度順序與緩存的關(guān)系。

      1.1 Spark中的緩存

      Spark通過將RDD數(shù)據(jù)塊對象緩存在內(nèi)存中這一方式對MapReduce程序進行性能上的提升改進。以經(jīng)典的PageRank[9]算法為例,Spark比Hadoop快3倍左右。

      以邏輯回歸算法實驗代碼為例,如圖1所示。

      可以看出:在使用Spark時,從第2輪迭代計算開始,points的數(shù)據(jù)可以從緩存中直接讀取出來,因此獲得了極高的加速比。

      1.2 數(shù)據(jù)對象的自動緩存

      對于Spark來說,并不是每個RDD都要緩存到內(nèi)存當中,需要進行篩選保留有價值的RDD存入內(nèi)存。目前Spark中這種篩選的工作都交由程序員手動完成。以PageRank作為例子,如圖2所示。

      代碼中有3個變量,且3個變量都是RDD類型,其中第1行最后的cache操作,會導致links 被緩存到內(nèi)存,在循環(huán)中可以從內(nèi)存中直接讀取,而ranks和contribs則沒有被緩存,這就是Spark 當前的緩存機制。

      將緩存的工作交由程序員手動完成,對于系統(tǒng)本身的實現(xiàn)來講,是簡化了許多,但是對于程序員來講則是極大的挑戰(zhàn)。對于復(fù)雜操作,程序員通常很難直接分析出具有緩存價值的數(shù)據(jù)對象進行緩存。sortByKey是用來對數(shù)據(jù)依據(jù)其指定的鍵值進行排序的一個常用操作,具體如圖3所示。

      猜你喜歡
      并行計算
      基于Hadoop的民航日志分析系統(tǒng)及應(yīng)用
      軟件導刊(2017年1期)2017-03-06 00:10:08
      基于自適應(yīng)線程束的GPU并行粒子群優(yōu)化算法
      云計算中MapReduce分布式并行處理框架的研究與搭建
      矩陣向量相乘的并行算法分析
      并行硬件簡介
      不可壓NS方程的高效并行直接求解
      基于GPU的超聲場仿真成像平臺
      基于Matlab的遙感圖像IHS小波融合算法的并行化設(shè)計
      科技視界(2016年11期)2016-05-23 08:13:35
      大數(shù)據(jù)背景的IT平臺架構(gòu)探索
      科技視界(2015年30期)2015-10-22 11:44:33
      基于枚舉的并行排序與選擇算法設(shè)計
      清流县| 磴口县| 宁夏| 罗田县| 舞阳县| 思南县| 宁化县| 莎车县| 安康市| 朝阳区| 桂阳县| 饶阳县| 旌德县| 勃利县| 宾阳县| 读书| 临汾市| 忻州市| 封开县| 诸城市| 怀来县| 宜城市| 平原县| 东乡族自治县| 饶阳县| 济源市| 尼勒克县| 舒城县| 玉田县| 广宁县| 蕉岭县| 义乌市| 抚宁县| 贵港市| 孟村| 仪征市| 贺州市| 章丘市| 象山县| 龙口市| 兴安县|