亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向高性能應用的MPI大數(shù)據(jù)處理

        2019-01-07 12:16:34鵬,周
        計算機應用 2018年12期
        關鍵詞:源文件數(shù)據(jù)文件切片

        王 鵬,周 巖

        (西南民族大學 計算機科學與技術學院,成都 610225)(*通信作者電子郵箱22954936@qq.com)

        0 引言

        消息傳遞接口(Message Passing Interface, MPI)是一種基于信息傳遞的并行編程接口,在規(guī)?;涵h(huán)境中具備高效的并行運算與數(shù)據(jù)處理能力。作為計算密集型的高性能計算標準,MPI在氣候模擬、高能物理、生命科學、工業(yè)仿真、人工智能、大數(shù)據(jù)處理等高性能計算和科學計算領域應用廣泛[1]。但MPI缺乏與其自身計算系統(tǒng)深度融合的大數(shù)據(jù)管理機制,目前的數(shù)據(jù)集中存儲模式不便于系統(tǒng)實現(xiàn)“計算向存儲遷移”的大數(shù)據(jù)思想理念。計算過程中數(shù)據(jù)分發(fā)受網(wǎng)絡傳輸時長的制約,限制了MPI在大數(shù)據(jù)領域的應用擴展。

        目前業(yè)界在處理海量數(shù)據(jù)時多采用分布式系統(tǒng)模式,無論是Lustre并行文件系統(tǒng)、并行虛擬文件系統(tǒng)(Parallel Virtual File System, PVFS),還是通用并行文件系統(tǒng)(General Parallel File System, GPFS)。這些并行化系統(tǒng)各有特點,在不同領域均有相應應用。Lustre的可用性和擴展性不錯,但需要特殊存儲設備的支持,而且沒有實現(xiàn)分布式的元數(shù)據(jù)服務器管理。GPFS支持串行應用和并行應用,允許任何節(jié)點的并行應用同時訪問同一文件或不同文件。PVFS將數(shù)據(jù)文件存儲于集群的不同節(jié)點,多個客戶端可以同時訪問這些數(shù)據(jù)[2]。但這類系統(tǒng)本身都進行過封裝,應用程序在調用時只需知道文件邏輯地址,并不關心文件具體存儲位置,無法避免運算過程中大量數(shù)據(jù)的跨節(jié)點傳輸。

        作為目前大數(shù)據(jù)應用領域最為廣泛的Hadoop,有一套主從式文件系統(tǒng)HDFS在底層支撐其Map/Reduce的數(shù)據(jù)處理功能。主從式基礎存儲和主從式數(shù)據(jù)處理構成Hadoop的基本架構模型。它的計算系統(tǒng)能夠通過HDFS快速定位文件存儲位置,這讓Hadoop方便地實現(xiàn)“計算向數(shù)據(jù)存儲位置的遷移”,從而大大提高系統(tǒng)計算效率,具備處理超大數(shù)據(jù)集(large data set)應用程序的能力[3]。

        Hadoop采用機制完備的分布式文件系統(tǒng)是為了響應以互聯(lián)網(wǎng)商業(yè)應用為主體的復雜數(shù)據(jù)處理場景,應對大量數(shù)據(jù)的頻繁讀寫操作。MPI的應用場景是高性能計算領域,面對的數(shù)據(jù)應用機制相對簡單,通常一次大規(guī)模運算需要的源數(shù)據(jù)相對固定,得出的計算數(shù)據(jù)相對完整,不需要進行頻繁的更新迭代。

        在高性能計算領域的應用場景中,擴展MPI針對海量數(shù)據(jù)的處理能力,是本文研究的主要目標。因此,以最簡化的方式,開發(fā)設計基于MPI的數(shù)據(jù)存儲組件(MPI Data Storage Plug-in, MPI-DSP),將其與MPI計算系統(tǒng)有機融合,提高其在文件管理和大數(shù)據(jù)方面的處理能力,并以實驗對組件效果進行初步驗證。MPI-DSP適用于一次寫入多次讀取的應用環(huán)境,與大多科學計算的應用場景相吻合,但對于需要頻繁寫入更新數(shù)據(jù)的計算任務,并無特別優(yōu)勢,因此希望將其作為現(xiàn)行MPI計算體系的一個擴展和補充。

        1 MPI-DSP的設計分析

        MPI-DSP的設計目標是希望在高性能計算應用場景中增強MPI的大數(shù)據(jù)處理能力。與互聯(lián)網(wǎng)領域應用不同,高性能計算應用往往集中于某一科研領域[4],有如下特點:1)高頻次的文件并發(fā)訪問相對較少;2)實驗源數(shù)據(jù)相對穩(wěn)定,不會頻繁寫入,但數(shù)據(jù)量較大。根據(jù)高性能應用場景的特殊性,明確MPI-DSP的設計原則:1)簡化功能設計,避免文件管理的復雜功能,保持系統(tǒng)簡潔與輕量級;2)完成“計算向存儲遷移”,實現(xiàn)數(shù)據(jù)在本地讀取的核心功能。

        采用簡潔的方式不影響構建在MPI上的原有應用,能夠減少系統(tǒng)研發(fā)和維護代價。原有MPI的集中存儲機制決定了數(shù)據(jù)的計算與存儲相分離,在MPI程序設計時,程序人員會考慮盡量增加計算操作而減少節(jié)點間的通信操作,也就是常說的“計算換通信”設計原則[5-6]。本文在不影響MPI原有系統(tǒng)的情況下,采用輕量級的數(shù)據(jù)存儲組件函數(shù),調整優(yōu)化MPI現(xiàn)有的數(shù)據(jù)集中存儲模式,使其具備“計算向存儲遷移”的能力,減少MPI實際運算時數(shù)據(jù)在網(wǎng)絡中的傳輸量。

        從系統(tǒng)架構分析,MPI-DSP是現(xiàn)有MPI的一個擴展,它與MPI的計算系統(tǒng)緊密結合,這種結合通過開發(fā)新的應用程序接口(Application Program Interface, API)函數(shù)來實現(xiàn)。新開發(fā)的組件使MPI-DSP具備文件切割、分配和調用功能。MPI-DSP在整個系統(tǒng)中的定位如圖1所示。

        從運行機制分析,MPI豐富的函數(shù)調用和靈活的消息傳遞機制可以讓集群各計算節(jié)點有條不紊地處理復雜運算任務[7-8]。MPI-DSP充分繼承MPI的已有優(yōu)勢,不改變MPI原有函數(shù)調用和消息傳遞機制,通過開發(fā)新的功能接口函數(shù),用最簡潔有效的方式對數(shù)據(jù)文件進行存儲管理。MPI-DSP在計算任務開始前,將任務所需目標數(shù)據(jù)以分布式形式分配到各計算節(jié)點,當執(zhí)行計算任務時,在各計算節(jié)點的本地讀取存儲數(shù)據(jù),不用跨節(jié)點讀取,可以有效規(guī)避網(wǎng)絡傳輸瓶頸,提高計算任務的處理效率。它借鑒了Hadoop中HDFS的大數(shù)據(jù)處理模式,同時保持MPI原有的高效運算能力和靈活的消息傳遞機制[9]。

        圖1 MPI-DSP系統(tǒng)架構Fig. 1 MPI-DSP system architecture

        2 MPI-DSP的實現(xiàn)

        具體實現(xiàn)中,分兩個階段進行:第一階段,文件上傳、切分與發(fā)送;第二階段,任務處理與結果匯總。

        第一階段將計算任務所需數(shù)據(jù)文件上傳到專用存儲空間。以集群子節(jié)點進程數(shù)量為依據(jù)切分數(shù)據(jù)文件,目的是平衡各節(jié)點的計算與存儲負載,減小計算誤差。將切片文件分別發(fā)送到對應的子節(jié)點上。第二階段是MPI計算任務的核心執(zhí)行階段。各子節(jié)點根據(jù)任務要求讀取數(shù)據(jù)進行計算操作,完成計算任務后匯總結果到主節(jié)點。

        其中文件的切分、傳輸和操作是MPI-DSP的核心部分。組件接口函數(shù)的設計有三條原則:1)不與現(xiàn)有MPI開發(fā)模式產(chǎn)生沖突,實現(xiàn)無縫對接;2)盡可能簡化接口函數(shù)復雜度和調用方法;3)使MPI對文件的讀取清晰明確。

        2.1 文件切分

        Hadoop的HDFS以64 MB作為文件切塊的標準大小,這有其優(yōu)勢,但不夠靈活,作業(yè)分割力度不夠彈性[10]。Hadoop的切分方式并不合適MPI環(huán)境:如果源文件不大,切分數(shù)量不多而MPI集群子節(jié)點數(shù)目龐大,將使大量子節(jié)點閑置,造成資源浪費;如果源文件過大,將產(chǎn)生大量切片文件,在集群子節(jié)點數(shù)量有限的情況下會開啟大量進程處理切片文件,造成系統(tǒng)擁塞。因此有必要對Hadoop的切片算法進行改進,發(fā)揮MPI自有的并行特性,提高整體運行效率。

        MPI-DSP以計算節(jié)點進程數(shù)作為切分依據(jù),文件切分采用等分切割、平均分配的原則,避免了文件切分大小不均勻的問題。根據(jù)集群中子節(jié)點的進程數(shù)量,將大數(shù)據(jù)源文件連續(xù)、平均地分成若干切片文件,充分利用MPI已有的并行性,實現(xiàn)文件操作并行化,確保集群中每個子節(jié)點進程分配到相應文件。同時對切片文件進行順序編號,文件順序與各計算節(jié)點順序保持一致,可以保障對源文件的有效復原。切分時將切片文件的路徑信息存入主控節(jié)點數(shù)據(jù)庫,便于各子節(jié)點讀取調用。文件切分的具體操作通過MPI-DSP中的MPI_Split實現(xiàn)。

        實現(xiàn)過程如下:1)主節(jié)點通過hostfile查詢MPI集群中子節(jié)點進程數(shù)目;2)找到將要切片操作的源文件,獲取源文件大?。?)將源文件大小按子節(jié)點進程數(shù)均分后設定切片文件大??;4)通過函數(shù)get_split_name傳入源文件名前綴及切片文件編號;5)將切片文件信息存儲到數(shù)據(jù)庫中;6)從源文件中按設定的切片文件大小讀取數(shù)據(jù)寫入切片文件中;7)后一次讀取位置在源文件前一次讀取切片文件大小之后,依次循環(huán);8)直至源文件最后一部分內(nèi)容寫入最后一個切片文件中,完成文件切分操作。

        2.2 切片文件傳輸

        MPI-DSP的運行機制是將切片文件在計算任務開始前就分別發(fā)送給各計算子節(jié)點,有效避免計算節(jié)點在執(zhí)行計算任務時從主節(jié)點調用數(shù)據(jù)文件,以提高整體任務的運行效率。MPI可以通過自有的消息傳遞機制Send和Recv來發(fā)送接收文件,但對于大數(shù)據(jù)量的文件傳輸,會產(chǎn)生大量通信,造成通信阻塞,影響系統(tǒng)穩(wěn)定性和運行效率。為實現(xiàn)切片文件的有效傳輸,MPI-DSP采用TCP協(xié)議的Socket通信方式[11],以C/S模式,開發(fā)兩個駐留程序Master和Slave。主節(jié)點運行Master,負責數(shù)據(jù)發(fā)送;子節(jié)點駐留Slave,負責數(shù)據(jù)接收[12]。當啟動文件傳輸服務時,這兩個駐留程序將被啟動執(zhí)行,分別執(zhí)行發(fā)送和接收操作。

        采用Socket方式,一次只能傳輸1 MB數(shù)據(jù),無法應對大文件的傳輸,通過對分布式存儲系統(tǒng)文件傳輸?shù)膬?yōu)化[13]和斷點續(xù)傳技術[14]可以成功突破Socket對傳輸文件大小的限制,實現(xiàn)海量數(shù)據(jù)的傳輸。Master程序通過自定義的get_trans_count函數(shù)獲取待傳文件(即已切分好的文件)需要傳輸?shù)拇螖?shù)。文件傳輸前通過自定義函數(shù)get_filename_master將待傳文件名稱、大小、每次傳輸數(shù)據(jù)量及傳輸次數(shù)發(fā)送給接收端(子節(jié)點)Slave程序。接收端確認收到信息后,主節(jié)點的Master程序開始向接收端分批發(fā)送數(shù)據(jù),直至待傳文件全部傳輸完畢。

        2.3 切片文件讀取

        “計算向存儲遷移”的關鍵點是讓計算程序能夠快速準確地定位數(shù)據(jù)文件位置,從而讀取文件進行相應操作。因此開發(fā)出MPI_Open函數(shù)。各計算子節(jié)點通過MPI_Open函數(shù)提取數(shù)據(jù)庫中的切片文件路徑,定位切片文件存儲位置,讀取切片文件。關鍵在于,讀取的是子節(jié)點本地存儲的數(shù)據(jù),而無需跨節(jié)點網(wǎng)絡傳輸。

        相應步驟如下:1)MPI_Open函數(shù)導入源文件名和文件指針;2)連接數(shù)據(jù)庫,通過源文件名和主機名查找對應切片文件存儲信息;3)通過數(shù)據(jù)庫中切片文件路徑信息,打開該節(jié)點對應的切片文件;4)對該節(jié)點文件進行相應計算操作;5)待各節(jié)點數(shù)據(jù)讀取、操作完畢,將各節(jié)點運算結果發(fā)送給主節(jié)點,最終由主節(jié)點統(tǒng)一匯總輸出結果。

        MPI_Open函數(shù)設計采用二級指針作為參數(shù),利用參數(shù)的返回值進行值傳遞。實現(xiàn)流程如圖2所示。

        MPI_Open接口函數(shù)部分核心代碼如下:

        void MPI_Open(char *file_name,FILE **fp)

        {

        node_file=(char*)malloc(100*sizeof(char));

        MPI_Get_processor_name(node_name,&namelen);

        //獲取節(jié)點名稱

        MPI_Comm_rank(MPI_COMM_WORLD,&myid);

        //獲取節(jié)點當前進程號

        node_name[strlen(node_name)]=′

        少妇隔壁人妻中文字幕| 丰满爆乳在线播放| 国产三级国产精品国产专区50| 亚洲一区二区懂色av| 久久国产黄色片太色帅| 日韩欧美aⅴ综合网站发布| 精品少妇人妻av无码久久| 午夜亚洲www湿好大| 国产精品国产三级国产AvkTV| 中文字幕乱码av在线| 日本免费一区二区在线| 久久九九精品国产av| 人妻夜夜爽天天爽三区麻豆av网站| 亚洲av无码无线在线观看| 国产精品女同久久久久电影院| 国产精品日本一区二区在线播放| 亚洲av无码久久精品色欲| 人与禽交av在线播放| 国内视频偷拍一区,二区,三区| 国产激情一区二区三区在线蜜臀 | 无码免费一区二区三区| 中文字幕无线码中文字幕| 亚洲国产成人无码影院| av网站影片在线观看| 久久亚洲免费精品视频| 日本真人边吃奶边做爽动态图| 国产成人精品a视频| 国产精品视频二区不卡| 中文字幕av无码一区二区三区电影| 久久视频在线视频精品| 亚洲精品一区二区三区四区久久 | 毛片a级毛片免费观看| 中文字幕少妇AV| 亚洲国产精品美女久久久| 亚洲精品久久视频网站| 成人国产精品一区二区八戒网| 神马影院午夜dy888| 日本另类αv欧美另类aⅴ| 亚洲精品午夜无码专区| 国产午夜福利精品| 日本韩国三级aⅴ在线观看 |