本發(fā)明涉及一種,具體地說是一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法。
背景技術(shù):
當(dāng)今世界,公司的日常運(yùn)營經(jīng)常會生成TB級別的數(shù)據(jù)。數(shù)據(jù)來源囊括了互聯(lián)網(wǎng)裝置可以捕獲的任何類型數(shù)據(jù),網(wǎng)站、社交媒體、交易型商業(yè)數(shù)據(jù)以及其它商業(yè)環(huán)境中創(chuàng)建的數(shù)據(jù)。考慮到數(shù)據(jù)的生成量,實(shí)時(shí)處理成為了許多機(jī)構(gòu)需要面對的首要挑戰(zhàn)。
MR為mapreduce的縮寫,MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。 當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對中的每一個(gè)共享相同的鍵組。
使用hbase運(yùn)行MR,由于HBase本身底層數(shù)據(jù)文件沒有全部分布在MR運(yùn)行節(jié)點(diǎn)上。因此在執(zhí)行MR時(shí),MR執(zhí)行節(jié)點(diǎn)會跨網(wǎng)絡(luò)讀取其他節(jié)點(diǎn)上的數(shù)據(jù)文件,從而造成很多額外的網(wǎng)絡(luò)開銷。當(dāng)集群數(shù)據(jù)有上TB或者PB是,傳統(tǒng)的Hbase的Mapreduce很容易造成很大的網(wǎng)絡(luò)開銷,使集權(quán)有網(wǎng)絡(luò)癱瘓的風(fēng)險(xiǎn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是提供一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法,來解決網(wǎng)絡(luò)開銷大,集權(quán)有網(wǎng)絡(luò)癱瘓的風(fēng)險(xiǎn)的問題。
本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,
一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法,步驟如下:
(1)、實(shí)現(xiàn)Mapreduce的InputFormat方法;
(2)、獲取Hbase某張表的所有大的數(shù)據(jù)塊(Region)信息;
(3)、根據(jù)每個(gè)數(shù)據(jù)塊,獲取他們的底層文件(Hfile);
(4)、將獲取到的所有數(shù)據(jù)塊的底層文件作為Mapreduce的輸入;以每個(gè)底層文件為計(jì)算單元,執(zhí)行mapreduce;
(5)、執(zhí)行reduce,結(jié)束mapreduce。
步驟(4)中,執(zhí)行mapreduce,MapReduce通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個(gè)計(jì)算單元實(shí)現(xiàn)可靠性;每個(gè)計(jì)算單元周期性的返回它所完成的工作和最新的狀態(tài)。
若一個(gè)計(jì)算單元保持沉默超過一個(gè)預(yù)設(shè)的時(shí)間間隔,主計(jì)算單元(類同Google File System中的主服務(wù)器)記錄下這個(gè)計(jì)算單元狀態(tài)為死亡,并把分配給這個(gè)計(jì)算單元的數(shù)據(jù)發(fā)到別的計(jì)算單元。
本發(fā)明的一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法具有以下優(yōu)點(diǎn):結(jié)合MR的執(zhí)行特點(diǎn)和HBase數(shù)據(jù)的存儲特點(diǎn),直接在每個(gè)數(shù)據(jù)文件上執(zhí)行MR,從根本上解決了Mapreduce運(yùn)行初期跨節(jié)點(diǎn)取數(shù)據(jù)的問題,從而很好的節(jié)省了網(wǎng)絡(luò)開銷,具有很好的推廣使用價(jià)值。
附圖說明
下面結(jié)合附圖對本發(fā)明進(jìn)一步說明。
附圖1為一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法的流程圖。
具體實(shí)施方式
參照說明書附圖和具體實(shí)施例對本發(fā)明的一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法作以下詳細(xì)地說明。
實(shí)施例:
本發(fā)明的一種基于Hbase的節(jié)省網(wǎng)絡(luò)流量的MR運(yùn)行方法,步驟如下:
(1)、實(shí)現(xiàn)Mapreduce的InputFormat方法;
(2)、獲取Hbase某張表的所有大的數(shù)據(jù)塊(Region)信息;
(3)、根據(jù)每個(gè)數(shù)據(jù)塊,獲取他們的底層文件(Hfile);
(4)、將獲取到的所有數(shù)據(jù)塊的底層文件作為Mapreduce的輸入;以每個(gè)底層文件為計(jì)算單元,執(zhí)行mapreduce;
(5)、執(zhí)行reduce,結(jié)束mapreduce。
步驟(4)中,執(zhí)行mapreduce,MapReduce通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個(gè)計(jì)算單元實(shí)現(xiàn)可靠性;每個(gè)計(jì)算單元周期性的返回它所完成的工作和最新的狀態(tài)。
若一個(gè)計(jì)算單元保持沉默超過一個(gè)預(yù)設(shè)的時(shí)間間隔,主計(jì)算單元(類同Google File System中的主服務(wù)器)記錄下這個(gè)計(jì)算單元狀態(tài)為死亡,并把分配給這個(gè)計(jì)算單元的數(shù)據(jù)發(fā)到別的計(jì)算單元。
一、映射和化簡
簡單說來,一個(gè)映射函數(shù)就是對一些獨(dú)立元素組成的概念上的列表(例如,一個(gè)測試成績的列表)的每一個(gè)元素進(jìn)行指定的操作(比如前面的例子里,有人發(fā)現(xiàn)所有學(xué)生的成績都被高估了一分,它可以定義一個(gè)"減一"的映射函數(shù),用來修正這個(gè)錯(cuò)誤。)。事實(shí)上,每個(gè)元素都是被獨(dú)立操作的,而原始列表沒有被更改,因?yàn)檫@里創(chuàng)建了一個(gè)新的列表來保存新的答案。這就是說,Map操作是可以高度并行的,這對高性能要求的應(yīng)用以及并行計(jì)算領(lǐng)域的需求非常有用。
而化簡操作指的是對一個(gè)列表的元素進(jìn)行適當(dāng)?shù)暮喜?繼續(xù)看前面的例子,如果有人想知道班級的平均分該怎么做?它可以定義一個(gè)化簡函數(shù),通過讓列表中的元素跟自己的相鄰的元素相加的方式把列表減半,如此遞歸運(yùn)算直到列表只剩下一個(gè)元素,然后用這個(gè)元素除以人數(shù),就得到了平均分。)。雖然他不如映射函數(shù)那么并行,但是因?yàn)榛喛偸怯幸粋€(gè)簡單的答案,大規(guī)模的運(yùn)算相對獨(dú)立,所以化簡函數(shù)在高度并行環(huán)境下也很有用。
二、分布可靠
MapReduce通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)實(shí)現(xiàn)可靠性;每個(gè)節(jié)點(diǎn)會周期性的返回它所完成的工作和最新的狀態(tài)。如果一個(gè)節(jié)點(diǎn)保持沉默超過一個(gè)預(yù)設(shè)的時(shí)間間隔,主節(jié)點(diǎn)(類同Google File System中的主服務(wù)器)記錄下這個(gè)節(jié)點(diǎn)狀態(tài)為死亡,并把分配給這個(gè)節(jié)點(diǎn)的數(shù)據(jù)發(fā)到別的節(jié)點(diǎn)。每個(gè)操作使用命名文件的原子操作以確保不會發(fā)生并行線程間的沖突;當(dāng)文件被改名的時(shí)候,系統(tǒng)可能會把他們復(fù)制到任務(wù)名以外的另一個(gè)名字上去。(避免副作用)。
化簡操作工作方式與之類似,但是由于化簡操作的可并行性相對較差,主節(jié)點(diǎn)會盡量把化簡操作只分配在一個(gè)節(jié)點(diǎn)上,或者離需要操作的數(shù)據(jù)盡可能近的節(jié)點(diǎn)上;這個(gè)特性可以滿足Google的需求,因?yàn)樗麄冇凶銐虻膸挘麄兊膬?nèi)部網(wǎng)絡(luò)沒有那么多的機(jī)器。
通過上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的具體實(shí)施方式。在公開的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。