吳愛(ài)芝
摘 要:針對(duì)Hadoop和MapReduce在空間大數(shù)據(jù)處理上存在的局限性,研究Hadoop平臺(tái)在分布式計(jì)算環(huán)境中跨多數(shù)據(jù)中心的應(yīng)用。提出了層次化Hadoop分布式計(jì)算框架,通過(guò)虛擬HDFS文件視圖實(shí)現(xiàn)全局?jǐn)?shù)據(jù)訪問(wèn),由任務(wù)調(diào)度器自動(dòng)將任務(wù)分解到對(duì)應(yīng)的數(shù)據(jù)中心所在計(jì)算節(jié)點(diǎn)上,給出了任務(wù)處理和調(diào)度流程。
關(guān)鍵詞:數(shù)據(jù)密集型計(jì)算;多數(shù)據(jù)中心;Hadoop平臺(tái);層次化分布式計(jì)算
中圖分類號(hào):TB
文獻(xiàn)標(biāo)識(shí)碼:A
doi:10.19311/j.cnki.16723198.2016.26.159
1 Hadoop平臺(tái)在處理空間大數(shù)據(jù)上的局限性
Hadoop和Map/Reduce是Google提出的一個(gè)軟件架構(gòu),用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算,具有多種優(yōu)點(diǎn):簡(jiǎn)單方便的編程界面、高數(shù)據(jù)處理能力、高擴(kuò)展能力和容錯(cuò)性。因此Map/Reduce已經(jīng)被廣泛應(yīng)用在多種計(jì)算體系結(jié)構(gòu)內(nèi)。但是我們注意到,Hadoop運(yùn)行平臺(tái)仍然存在著很重大的缺陷,影響其在空間數(shù)據(jù)處理方面的廣泛、深入地應(yīng)用:
(1)Hadoop只能運(yùn)行在一個(gè)局域網(wǎng)中的計(jì)算集群或者數(shù)據(jù)中心,不能支持廣域網(wǎng)上大規(guī)模分布的多數(shù)據(jù)中心的并行數(shù)據(jù)處理。
(2)當(dāng)前Hadoop不包括用戶安全機(jī)制,不同節(jié)點(diǎn)間的通訊采用無(wú)密碼的SSH機(jī)制。因此Hadoop不適合分布式、多數(shù)據(jù)中心、多管理域的空間數(shù)據(jù)架構(gòu)。
(3)現(xiàn)有Hadoop執(zhí)行流程是將一個(gè)任務(wù)(執(zhí)行代碼)制作副本后并發(fā)同時(shí)在多個(gè)slave node上執(zhí)行,這些任務(wù)之間互不干擾和交互,子任務(wù)的分配沒(méi)有什么原則和選擇,可以說(shuō)是一種與數(shù)據(jù)無(wú)關(guān)的任務(wù)分配和處理。
本研究致力于大規(guī)模分布式多數(shù)據(jù)中心的空間數(shù)據(jù)并行處理關(guān)鍵技術(shù),力爭(zhēng)能夠在多集群計(jì)算機(jī)上并行處理分布在多數(shù)據(jù)中心的數(shù)據(jù)集,達(dá)到較高的數(shù)據(jù)吞吐能力和處理能力。
2 基于多數(shù)據(jù)中心的分布式Hadoop運(yùn)行框架
Hadoop運(yùn)行(runtime)系統(tǒng)是架構(gòu)在局域網(wǎng)單計(jì)算集群上。本研究嘗試擴(kuò)展Hadoop運(yùn)行系統(tǒng),分布各個(gè)原Hadoop工作節(jié)點(diǎn)和TaskTrackler到分布式數(shù)據(jù)中心的多計(jì)算集群,進(jìn)行分布式數(shù)據(jù)集的并行處理。保持Hadoop主節(jié)點(diǎn)(Master node)的應(yīng)用程序接口不變以兼容已有的Hadoop應(yīng)用程序。
可選的技術(shù)方案有兩種:一種是將各類不同的集群系統(tǒng)硬件平臺(tái)進(jìn)行統(tǒng)一的封裝(即在現(xiàn)有各類集群系統(tǒng)之上增加一層特殊用途的架構(gòu)層),轉(zhuǎn)化成一致的虛擬集群系統(tǒng)平臺(tái),在此虛擬平臺(tái)上進(jìn)行各類MapReduce任務(wù)的處理;另一種是直接在各個(gè)集群系統(tǒng)之間建立聯(lián)系,實(shí)現(xiàn)資源的交互和任務(wù)的協(xié)同處理,該技術(shù)很接近網(wǎng)格計(jì)算的思想和方法。本文中借鑒了第一種思想,構(gòu)建統(tǒng)一的資源管理和任務(wù)調(diào)度層,來(lái)匯集各集群硬件資源,記錄各數(shù)據(jù)中心的信息,以數(shù)據(jù)為驅(qū)動(dòng)來(lái)統(tǒng)一匹配和調(diào)度相應(yīng)的處理資源。該平臺(tái)的總體架構(gòu)如圖1所示,使其可以在分布式多數(shù)據(jù)中心環(huán)境中得以應(yīng)用和實(shí)施。
該層次化Hadoop分布式計(jì)算架構(gòu)也采用主從模式(master/slave),具有一個(gè)Master Node(也可稱為Global Name Node)和多個(gè)Slave Node。Master Node是整個(gè)平臺(tái)的資源調(diào)度和任務(wù)管理層,負(fù)責(zé)將用戶提交的處理任務(wù)(task)分解為更小單位的子任務(wù)(sub-task),使得這些子任務(wù)可以在特定的Slave Node(對(duì)應(yīng)為一個(gè)集群系統(tǒng))上被執(zhí)行(Master Node上的Sub- ob Adapter負(fù)責(zé)完成這種匹配),該Slave Node所對(duì)應(yīng)的集群系統(tǒng)上具有該子任務(wù)處理所需的數(shù)據(jù)。
為實(shí)現(xiàn)該平臺(tái)上各個(gè)子任務(wù)能分配到所處理數(shù)據(jù)所在的集群系統(tǒng)(數(shù)據(jù)中心)上,需要在Master Node上登記和管理各個(gè)集群系統(tǒng)所在數(shù)據(jù)中心上所有數(shù)據(jù)的元數(shù)據(jù)?;诖笠?guī)模分布式文件系統(tǒng)管理的思想,本文中利用Virtual HDFS來(lái)存儲(chǔ)全局的數(shù)據(jù)文件元信息,記錄在分布式處理平臺(tái)中注冊(cè)和調(diào)度的所有數(shù)據(jù)中心上的數(shù)據(jù)信息。
在Virtual HDFS文件系統(tǒng)中,并不存儲(chǔ)具體的數(shù)據(jù),只記錄各個(gè)集群系統(tǒng)中HDFS文件系統(tǒng)中所存儲(chǔ)的數(shù)據(jù)文件的基礎(chǔ)信息(主要是與位置和屬性有關(guān)的元信息)。該Virtual HDFS中的信息需要依靠分布在各個(gè)數(shù)據(jù)中心的HDFS文件系統(tǒng)定期進(jìn)行更新和交互,用戶在進(jìn)行數(shù)據(jù)處理任務(wù)編碼和運(yùn)行之前,通過(guò)Virtual HDFS中所提供的元信息來(lái)查詢和選擇所需要的數(shù)據(jù)文件,當(dāng)任務(wù)提交后處理平臺(tái)會(huì)自動(dòng)地將編程模型中的數(shù)據(jù)集或文件名轉(zhuǎn)換為對(duì)應(yīng)的真實(shí)訪問(wèn)路徑。
3 基于多數(shù)據(jù)中心的分布式任務(wù)處理流程
借助Master Node上記錄的Virtual HDFS元信息和計(jì)算向數(shù)據(jù)遷移的思想,將空間數(shù)據(jù)處理任務(wù)映射到相應(yīng)的數(shù)據(jù)中心和處理節(jié)點(diǎn)上(遵循location-aware manner方式),可實(shí)現(xiàn)空間數(shù)據(jù)處理任務(wù)的跨域分布式任務(wù)處理和計(jì)算。
在層次化Hadoop分布式處理平臺(tái)中,用戶通過(guò)Virtual HDFS中所提供的元信息來(lái)選擇所需要的數(shù)據(jù)文件名,在所提交的代碼進(jìn)行編譯后,這些文件名會(huì)自動(dòng)轉(zhuǎn)換為特定集群系統(tǒng)上的HDFS訪問(wèn)地址,并且此代碼將會(huì)在數(shù)據(jù)文件存放位置的一個(gè)或若干個(gè)集群上執(zhí)行,可實(shí)現(xiàn)計(jì)算向數(shù)據(jù)遷移的目的。
面向多計(jì)算節(jié)點(diǎn)的層次化Hadoop分布式計(jì)算任務(wù)處理流程可分為以下7個(gè)步驟。
步驟1:數(shù)據(jù)選擇:在作業(yè)提交之前,需要由程序員從Virtual HDFS查詢和選擇所需要處理的數(shù)據(jù)文件,這些文件名寫在MapReduce程序中,將來(lái)會(huì)在作業(yè)分解和分配時(shí)轉(zhuǎn)換為對(duì)應(yīng)數(shù)據(jù)中心上HDFS的具體數(shù)據(jù)訪問(wèn)路徑。
步驟2:作業(yè)提交:用戶從客戶端提交作業(yè)(MapReduce程序)和其配置信息(包括:參數(shù)、輸入文件名、附加資源等),作業(yè)交給Master Node上的 ob Scheduler進(jìn)行排隊(duì)和等待,并為該作業(yè)分配ID號(hào)。
步驟3:程序編譯和分解:在隊(duì)列中的作業(yè)會(huì)根據(jù)所處理數(shù)據(jù)的位置分布情況被重新編譯和分解,使得各個(gè)子作業(yè)能夠在處理數(shù)據(jù)所存放位置集群上被執(zhí)行。若某個(gè)作業(yè)所要處理的數(shù)據(jù)都在同一集群的數(shù)據(jù)中心(某個(gè)Slave Node)上,則將任務(wù)整體打包(程序 AR文件和配置信息)發(fā)送到對(duì)應(yīng)的集群上執(zhí)行;若所要處理的數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)中心上,則該作業(yè)將被重新編譯為Map-Map-Reduce或Map-Reduce-Map- Reduce模式的程序,使得該作業(yè)的子作業(yè)依次在對(duì)應(yīng)的集群上被執(zhí)行。
步驟4:子作業(yè)定位和分配:依據(jù)Virtual HDFS中所記錄的各個(gè)數(shù)據(jù)的位置信息,以上子作業(yè)將按照數(shù)據(jù)依賴的方式定位和分配到對(duì)應(yīng)的集群上被執(zhí)行,在對(duì)應(yīng)集群上將啟動(dòng)run ob()命令并讀取本地文件系統(tǒng)開始進(jìn)行子作業(yè)的處理。
步驟5:任務(wù)提交和執(zhí)行:當(dāng)打包和子作業(yè)傳輸?shù)綄?duì)應(yīng)的集群上后,在其name node上將會(huì)被 obTracker再次分解為更小的計(jì)算任務(wù)task,并分配到所從屬的若干個(gè)data node上進(jìn)行最終的處理和執(zhí)行,該過(guò)程將由data node上的TaskTracker來(lái)調(diào)度和完成。
步驟6:子作業(yè)完成和反饋:在某個(gè)集群中的name node將監(jiān)控所有data node上任務(wù)的完成狀態(tài),當(dāng)某個(gè)子作業(yè)所有的task都完成后,處理結(jié)果將存儲(chǔ)在本地HDFS文件系統(tǒng)目錄中。該作業(yè)執(zhí)行結(jié)果的訪問(wèn)路徑將由name node主動(dòng)反饋給Master Node上的Sub- ob Adapter模塊。
步驟7:作業(yè)完成和反饋:Master Node上的Sub- ob Adapter模塊接收到某個(gè)子作業(yè)處理結(jié)果反饋后,將檢查該子作業(yè)是否還有關(guān)聯(lián)的其他子作業(yè)?還是它是一個(gè)簡(jiǎn)單的作業(yè)(所有處理子作業(yè)都在同一集群上處理)?若有后繼關(guān)聯(lián)的其他子作業(yè),則啟動(dòng)后繼子作業(yè)的執(zhí)行和處理(已完成子作業(yè)的輸出可以根據(jù)作業(yè)要求作為后繼任務(wù)的輸入?yún)?shù))。當(dāng)同屬于一個(gè)作業(yè)job的所有子作業(yè)sub-job都完成后,將最終處理結(jié)果數(shù)據(jù)文件信息在Virtual HDFS上進(jìn)行注冊(cè)和登記,并向 ob Scheduler模塊返回處理結(jié)果文件列表,最終根據(jù)作業(yè)ID向相應(yīng)的用戶返回程序處理結(jié)果訪問(wèn)鏈接路徑。
4 結(jié)論
本研究力爭(zhēng)在不破壞原有Map/Reduce計(jì)算模型的基礎(chǔ)上,針對(duì)該模型存在的不足進(jìn)行適應(yīng)性改造和完善,以更好地支持分布式多中心數(shù)據(jù)模式的海量空間數(shù)據(jù)處理需要,設(shè)計(jì)基于多數(shù)據(jù)中心的Map/Reduce運(yùn)行模型和軟件體系結(jié)構(gòu),擴(kuò)展Hadoop運(yùn)行系統(tǒng)和架構(gòu),將各個(gè)原Hadoop工作節(jié)點(diǎn)和TaskTrackler分布到分布式數(shù)據(jù)中心的多計(jì)算集群,實(shí)現(xiàn)分布式數(shù)據(jù)集的并行處理。初步形成面向多數(shù)據(jù)中心(多機(jī)群環(huán)境)的分布式任務(wù)處理平臺(tái)架構(gòu)和工作流程,希望能為基于Hadoop的大規(guī)模分布式海量空間數(shù)據(jù)并行處理提供參考。
參考文獻(xiàn)
[1] Yadav Krishna R, urnima Singh.MapReduce rogramming aradigm Solving Big-Data roblems by Using Data-Clustering Algorithm.International ournal of Advanced Research in Computer Engineering & Technology,2014,3(1),7780.
[2]Lu Huang,HaiShan Chen,TingTing Hu.Research on Hadoop Cloud Computing Model and its Applications[C].The Third International Conference on Networking and Distributed Computing,2012:5963.
[3]I. Tomasic,A.Rashkovska and M. Depolli.Using Hadoop MapReduce in a Multicluster Environment[C].The 36th International Convention on Information & Communication Technology Electronics & Microelectronics,2013:345350.
[4]Chun-Yu Wang, Tzu-Li Tai, ui-Shing Shu, yh-Biau Chang and Ce-Kuen Shieh.Federated MapReduce to Transparently Run Application on Multicluster Environment [C]. IEEE International Congress on Big Data,2014:296302.
[5]Y. Luo,B. lale,Z.Guo,W.W.Li, .Qiu,Y. Sun.Hierarchical MapReduce: towards simplified across-domain data processing.Concurrency and Computation: ractice and Experience,2014,26(4):878893.