一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法
【專利摘要】本發(fā)明公開了一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法,本發(fā)明是在Hadoop集群中應(yīng)用Map/Reduce軟件實現(xiàn)超大文件內(nèi)多數(shù)據(jù)塊定位的方法。本發(fā)明主要包括以下步驟:組建集群環(huán)境、構(gòu)造序列文件、修改用戶程序源代碼和通過streaming方式調(diào)用用戶程序,本發(fā)明通過控制Map的數(shù)量和序列,確定Map進程與多數(shù)據(jù)塊之間的映射關(guān)系,并且可以定位數(shù)據(jù)塊在文件中的位置,讓指定Map進程處理指定數(shù)據(jù)塊,同時本發(fā)明可以輕松實現(xiàn)超大文件的多數(shù)據(jù)塊并行處理。
【專利說明】一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于Hadoop (分布式處理大量數(shù)據(jù)的軟件框架)集群的超大文件(超過百GB)并行數(shù)據(jù)塊定位方法,屬于大數(shù)據(jù)處理領(lǐng)域。
【背景技術(shù)】
[0002]在高性能并行計算領(lǐng)域MapReduce海量數(shù)據(jù)處理框架應(yīng)用廣泛,通過廉價的普通計算機集群能得到過去只有昂貴大型服務(wù)器才擁有的大規(guī)模數(shù)據(jù)計算能力,而且在穩(wěn)定性和擴展性等方面都優(yōu)于傳統(tǒng)的高性能計算方案?,F(xiàn)在MapReduce模型被應(yīng)用于天文信息計算處理、海量存儲分析、病毒庫存儲、網(wǎng)絡(luò)檢索服務(wù)等方面,解決數(shù)據(jù)爆炸式增長與計算機存儲能力和計算能力不足之間的矛盾。實際開發(fā)過程中,開發(fā)語言多種多樣,而Streaming技術(shù)允許開發(fā)者使用任何編程語言實現(xiàn)的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平臺移植,大大減少了程序移植成本。
[0003]Hadoop的HDFS (Hadoop分布式文件系統(tǒng))具有高容錯性的特點,它將數(shù)據(jù)以一個或多個副本的形式分散存儲在多臺機器上,可以存儲海量數(shù)據(jù),并且可靠性高,提供對數(shù)據(jù)快速的、可擴展的訪問,適用于一次寫入、多次讀取的訪問模式。HDFS上的文件被劃分為塊大小的多個分塊,作為獨立的存儲單元,系統(tǒng)默認塊大小為64MB,用戶也可以指定塊大小。
[0004]在高性能計算中,有一類問題是多次處理同一個超大文件,每次處理的數(shù)據(jù)是大文件內(nèi)以不同的偏移量開始的一段連續(xù)數(shù)據(jù),并且每次運算之間相互獨立,不存在依賴關(guān)系。此種計算模型在移植到Hadoop平臺過程中,存儲模型一般采用HDFS文件系統(tǒng),計算模型一般采用Hadoop Streaming,在不改動或修改極少量程序源代碼的情況的就能快速移植到Hadoop平臺。Hadoop中的每個map進程分別處理大文件內(nèi)、不同偏移量開始的一段連續(xù)數(shù)據(jù),這種模型就需要開發(fā)者對map進程數(shù)量及每個map進程處理的數(shù)據(jù)在大文件內(nèi)的偏移量進行控制,實現(xiàn)多個map進程并行定位超大文件中的多個數(shù)據(jù)塊。
[0005]通常情況下map進程的數(shù)量由輸入文件的大小和HDFS塊大小決定,即由輸入文件在HDFS中所占塊數(shù)決定,默認情況下不可直接控制干涉。在Hadoop API中提供了相應(yīng)接 口:org.apache, hadoop.mapred.JobConf.setNumMapTasks (int n)可以控制 map 進程數(shù)量,但官方文檔對此函數(shù)的釋義是“Note:This is only a hint to the framework”,即setNumMapTasks ()方法對Hadoop的框架來說僅僅是個提示,不能起決定性的作用。換言之,即便設(shè)置了這個值,也不一定能達到預(yù)期效果。
[0006]單個map進程雖然可以從一個文件中的任意偏移進行訪問,即使此文件存儲在HDFS文件系統(tǒng)中,文件塊分布在不同的節(jié)點上,但對于多個map進程,一方面由于系統(tǒng)沒有提供相應(yīng)的接口來區(qū)分各個map進程,另一方面很多情況下每次所需處理的數(shù)據(jù)在大文件內(nèi)的偏移地址無規(guī)律,因此當前情況下,分別指定每個map進程需要處理的數(shù)據(jù)在大文件內(nèi)的偏移不可行。
[0007]綜上所述,控制map進程數(shù)量,直接將大文件作為程序的輸入并使得每個map進程分別精確定位本map進程需處理數(shù)據(jù)塊在大文件內(nèi)的偏移是不可行的。
【發(fā)明內(nèi)容】
[0008]本發(fā)明要解決的技術(shù)問題是:克服現(xiàn)有技術(shù)的不足,提供了一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法,通過構(gòu)造序列控制map進程數(shù)量的辦法以及map進程運行辦法,達到控制不同map進程分別處理偏移量不同的一段連續(xù)數(shù)據(jù)的效果。
[0009]本發(fā)明的技術(shù)解決方案是:
[0010]一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法包括步驟如下:
[0011]步驟1:通過搭建Hadoop環(huán)境組建Hadoop集群,配置HDFS關(guān)鍵屬性;
[0012]步驟2:構(gòu)造特定的序列文件;所述的特定序列文件的內(nèi)容為整型數(shù),每個整型數(shù)獨占I行,序列文件中每行的值為每個map進程要處理的超大文件中的數(shù)據(jù)塊的偏移量,序列文件的行數(shù)等于map進程的個數(shù)和需要處理的數(shù)據(jù)塊的個數(shù);
[0013]構(gòu)造序列文件的方法為如下方法的任意一種:
[0014](a)使用Microsoft Office Excel按列方式生成特定的序列,然后以列方式拷貝到文本文件中;
[0015](b)在vim編輯器命令模式下,鍵入命令生成特定的序列;
[0016](c)手動生成需要的不規(guī)則序列,通過批處理文件或腳本文件生成特定序列;
[0017]步驟3:修改用戶程序使得用戶程序能夠接收標準輸入流傳遞的數(shù)據(jù),將該數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù),并通過該整型數(shù)據(jù)設(shè)置程序中要讀的超大文件中的數(shù)據(jù)塊的起始地址;
[0018]步驟4:通過Hadoop集群的streaming方式調(diào)用步驟(3)中修改后的用戶程序和步驟(2)中的序列文件完成并行數(shù)據(jù)塊的定位,完成并行數(shù)據(jù)定位的方法為:通過步驟(2)中的超大數(shù)據(jù)的偏移量和步驟(3)中的超大文件的起始地址完成并行數(shù)據(jù)的定位。
[0019]所述集群中的每個計算機節(jié)點均有獨立的CPU、內(nèi)存、本地硬盤和操作系統(tǒng)。
[0020]所述集群中的每個計算機節(jié)點通過以太網(wǎng)或Infiniband (支持多并發(fā)鏈接的“轉(zhuǎn)換線纜技術(shù)”)互聯(lián)。
[0021 ] 本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
[0022](I)本發(fā)明采用streaming技術(shù)實現(xiàn)只要按照標準輸入輸出格式進行編程,就可以滿足hadoop要求,因此單機程序稍加修改就可以在集群上進行使用,提高工作效率,便于測試。
[0023](2)本發(fā)明采用的streaming技術(shù)能夠?qū)崿F(xiàn)對非Java語言的支持,實際工程中可以根據(jù)工程需求情況選取最合適的開發(fā)語言,再通過streaming技術(shù)使之運行在hadoop平臺上,通過這種方法使程序執(zhí)行效率更高。
[0024](3)本發(fā)明構(gòu)造序列文件精確控制map進程數(shù)量可以更有效的提高程序執(zhí)行效率,控制集群負載均衡。
[0025](4)本發(fā)明使用序列文件實現(xiàn)對大文件的定位,使每個map進程分別處理大文件內(nèi)不同起始位置的數(shù)據(jù),控制簡單,易于操作。
【專利附圖】
【附圖說明】
[0026]圖1為本發(fā)明基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位的方法流程圖?!揪唧w實施方式】[0027]下面結(jié)合附圖對本發(fā)明的【具體實施方式】進行進一步的詳細描述。
[0028]本發(fā)明通過控制Map的數(shù)量和序列,確定map進程與多數(shù)據(jù)塊之間的映射關(guān)系,并且可以定位數(shù)據(jù)塊在文件中的位置,讓指定Map進程處理指定數(shù)據(jù)塊。如圖1所示,本發(fā)明的具體步驟如下:
[0029]步驟1:通過搭建Hadoop環(huán)境組建Hadoop集群,配置HDFS關(guān)鍵屬性;
[0030]將Hadoop環(huán)境部署到4個計算機節(jié)點上,其中1個計算機節(jié)點為名稱節(jié)點(namenode),另外3臺為數(shù)據(jù)節(jié)點(datanode),共同承擔計算機存儲任務(wù),HDFS存儲副本數(shù)為3,所述集群中的每個計算機節(jié)點均有獨立的CPU、內(nèi)存、本地硬盤和操作系統(tǒng);所述集群中的每個計算機節(jié)點通過以太網(wǎng)或Infiniband(支持多并發(fā)鏈接的“轉(zhuǎn)換線纜技術(shù)”)互聯(lián)。[0031 ] 所述的HDFS關(guān)鍵屬性包括:
[0032](a)配置默認文件系統(tǒng),定義主機系統(tǒng)名稱及名稱節(jié)點工作的端口號;
[0033](b)配置名稱節(jié)點存儲永久性元數(shù)據(jù)的目錄列表;
[0034](c)配置數(shù)據(jù)節(jié)點存放數(shù)據(jù)塊的目錄列表;
[0035](d)配置數(shù)據(jù)節(jié)點數(shù)據(jù)存儲的副本數(shù)量;
[0036]步驟2:構(gòu)造特定的序列文件;所述的特定序列文件的內(nèi)容為整型數(shù),每個整型數(shù)獨占1行,序列文件中每行的值為每個map進程要處理的超大文件中的數(shù)據(jù)塊的偏移量,序列文件的行數(shù)等于map進程的個數(shù)和需要處理的數(shù)據(jù)塊的個數(shù);
[0037]構(gòu)造序列文件的方法為如下方法的任意一種:
[0038](a)使用Microsoft Office Excel按列方式生成特定的序列,然后以列方式拷貝到文本文件中;
[0039](b)在vim編輯器命令模式下,鍵入命令生成特定的序列;
[0040](c)手動生成需要的不規(guī)則序列,通過批處理文件或腳本文件生成特定序列;
[0041]步驟3:修改用戶程序使得用戶程序能夠接收標準輸入流傳遞的數(shù)據(jù),將該數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù),并通過該整型數(shù)據(jù)設(shè)置程序中要讀的超大文件中的數(shù)據(jù)塊的起始地址;
[0042]步驟4:通過Hadoop集群的streaming (使用非JAVA語言調(diào)用map和reduce函數(shù)技術(shù))方式調(diào)用步驟(3)中修改后的用戶程序和步驟(2)中的序列文件完成并行數(shù)據(jù)塊的定位,完成并行數(shù)據(jù)定位的方法為:通過步驟(2)中的超大數(shù)據(jù)的偏移量和步驟(3)中的超大文件的起始地址完成并行數(shù)據(jù)的定位,將Hadoop集群的input選項設(shè)置為步驟(3)中生成的序列文件,將inputformat選項設(shè)置為map進程數(shù)量由輸入的序列文件行數(shù)決定。
[0043]本發(fā)明說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1.一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法,其特征在于包括步驟如下: 步驟1:通過搭建Hadoop環(huán)境組建Hadoop集群,配置HDFS關(guān)鍵屬性; 步驟2:構(gòu)造特定的序列文件;所述的特定序列文件的內(nèi)容為整型數(shù),每個整型數(shù)獨占I行,序列文件中每行的值為每個map進程要處理的超大文件中的數(shù)據(jù)塊的偏移量,序列文件的行數(shù)等于map進程的個數(shù)和需要處理的數(shù)據(jù)塊的個數(shù); 構(gòu)造序列文件的方法為如下方法的任意一種: (a)使用MicrosoftOffice Excel按列方式生成特定的序列,然后以列方式拷貝到文本文件中; (b)在vim編輯器命令模式下,鍵入命令生成特定的序列文件; (c)手動生成需要的不規(guī)則序列文件 Cd)通過批處理文件或腳本文件生成特定序列文件; 步驟3:修改用戶程序使用戶程序能夠接收由標準輸入流傳遞的數(shù)據(jù),將該數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù),并通過該整型數(shù)據(jù)設(shè)置程序中要讀的超大文件中的數(shù)據(jù)塊的起始地址; 步驟4:通過Hadoop集群的streaming方式調(diào)用步驟(3)中修改后的用戶程序和步驟(2)中的序列文件完成并行數(shù)據(jù)塊的定位,完成并行數(shù)據(jù)定位的方法為:通過使用Hadoop集群的streaming方式實現(xiàn)定位程序并行化,通過步驟(2)中序列文件的超大數(shù)據(jù)的偏移量和步驟(3 )中的超大文件的起始地址完成數(shù)據(jù)的定位。
2.如權(quán)利要求1所述的一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法,其特征在于:所述集群中的每個計算機節(jié)點均有獨立的CPU、內(nèi)存、本地硬盤和操作系統(tǒng)。
3.如權(quán)利要求1所述的一種基于Hadoop集群的超大文件并行數(shù)據(jù)塊定位方法,其特征在于:所述集群中的每個計算機節(jié)點通過以太網(wǎng)或Infiniband互聯(lián)。
【文檔編號】G06F17/30GK103699627SQ201310712421
【公開日】2014年4月2日 申請日期:2013年12月20日 優(yōu)先權(quán)日:2013年12月20日
【發(fā)明者】孫彥猛, 蘇麗, 劉文俊, 張博為 申請人:北京遙測技術(shù)研究所, 航天長征火箭技術(shù)有限公司