亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

hadoop map-reduce中的文件并發操作

2020-10-29 21:51:07
字體:
來源:轉載
供稿:網友

這樣的操作在map端或者reduce端均可。下面以一個實際業務場景中的例子來簡要說明。

問題簡要描述:

假如reduce輸入的key是Text(String),value是BytesWritable(byte[]),不同key的種類為100萬個,value的大小平均為30k左右,每個key大概對應 100個value,要求對每一個key建立兩個文件,一個用來不斷添加value中的二進制數據,一個用來記錄各個value在文件中的位置索引。(大量的小文件會影響HDFS的性能,所以最好對這些小文件進行拼接)

當文件數量較小時,可以考慮使用MultipleOutput來進行key-value的分流,可以按照key的不同,將其輸出到不同的文件或者目錄中。但是reduce的數量只能為1,不然每個reduce都會生成相同的目錄或者文件,不能達到最終的目的。此外最重要的是,操作系統對每個進程打開的文件數量的限制,默認為1024,集群的各個datanode可能會配置更高的值,但最多在幾萬左右,仍然是一個限制因素。不能滿足百萬文件的需求。

reduce的主要目的是用來歸并key-value并輸出到HDFS上,我們當然也可以在reduce中進行其他的操作,比如文件讀寫。因為默認的partitioner保證同一個key的數據肯定會在同一個reduce中,所以在每個reduce中只用打開兩個文件進行讀寫即可(一個索引文件,一個數據文件)。并發度由reduce數量決定,將reduce數量設為256,那我們就可以同時處理256個key的數據(partioner保證了不同reduce處理的key不同,不會引起文件讀寫沖突)。這樣的并發度的效率是很客觀的,可以在較短的時間內完成需求。

思路是這樣,但同時由于hdfs的特性以及hadoop的任務調度,在文件讀寫過程中,仍有可能會出現很多問題,下面簡要說些一些常見的會碰到的問題。

1.org.apache.hadoop.hdfs.protocol.AlreadyBeingCreatedException異常

這可能是最經常碰到的一個問題??赡艿脑蛉缦拢?/P>

(1)文件流沖突。

一般創建文件時都會打開一個供寫入的文件流。而我們希望是追加,所以如果使用了錯誤的API ,就有可能引起上述問題。以FileSystem類為例,如果使用create()方法之后再調用append()方法,就會拋出上述異常。所以最好使用createNewFile方法,只創建文件,不打開流。

(2)mapreduce推測執行機制

mapreduce 為了提高效率,會在一個任務啟動之后,同時啟動一些相同的任務(attempt),其中有一個attempt成功完成之后,視為整個task完成,其結果 作為最終結果,并且殺掉那些較慢的attempt。集群一般會開啟此選項以優化性能(以空間換時間)。但在本問題環境下推測執行卻不太合適。因為我們一般希望一個task 用來處理一個文件,但如果啟動推測執行,會有幾個attempt同時試圖操作同一個文件,就會引發異常。所以最好關掉此選項,將 mapred.reduce.max.attempts 設為1,或者將mapred.reduce.tasks.speculative.execution設為false.

但此時仍有可能會出現問題。因為如果一個task的唯一attempt出現問題,在被kill掉之后,task仍會另起一個attempt,此時因為前一個attempt異常終止,仍有可能會影響到新起的attempt的文件操作,引發異常。所以最安全的方法是,借鑒推測執行的機制(每個attempt各自生成自己的結果,最終選擇一個作為最終結果),以每個attempt的id號為后綴附加到所操作的文件上,同時捕獲所有文件操作的異常并處理,這樣可避免文件的讀寫沖突。Context可以用來獲取運行時的一些上下文信息,可以很容易得到attempt的id號。注意,此時如果開啟推測執行也可以,但是會生成很多相同的文件(每個attempt一份),仍然不是最好的解決方法。

同時,我們可以利用reduce的輸出來記錄運行“不正常的” key.這些task大多數是attempt_0被殺掉而重啟了一個attempt_1,所以下面的文件一般為兩份。可以對這些情況的key輸出(文件異?;蛘遖ttemptID > 0),并進行一些后續處理,比如文件重命名,或者緊對這些key重新寫入。因為此種情況的key一般只占極少數,所以并不影響總體的效率。

2.文件異常處理

最好能將mapreduce中的所有文件操作都設置好異常處理。不然一個文件異常就有可能會使整個job失敗。所以從效率來講,最好是在文件發生異常時將其key作為reduce的輸出以進行記錄。因為同時mapreduce會重啟一個task attempts重新進行文件讀寫,可保證我們得到最終的數據,最后所需的只是對那些異常的key進行一些簡單的文件重命名操作即可。

3.多目錄以及文件拼接

如果我們將key的種類設為1000萬,上述方法會生成太多的小文件從而影響hdfs的性能,另外,因為所有文件都在同一個目錄下,會導致同一個目錄下文件數目過多而影響訪問效率。

在創建文件的同時建立多個子目錄,一個有用的方法是以reduce的taskid來建立子目錄。這樣有多少個reduce就可以建立多少個子目錄,不會有文件沖突。同一個reduce處理的key都會在同一個目錄下。

文件拼接要考慮的一個索引的問題。為了將文件索引建立的盡量簡單,應該盡量保證同一個key的所有數據都在同一個大文件中。這可以利用key的hashCode來實現。如果我們想在每個目錄下建立1000個文件,只需將hashCode對1000取余即可。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产视频| 亚洲女人天堂成人av在线| 亚洲第一区第一页| 国产精品18久久久久久首页狼| 欧美日韩国产精品一区二区三区四区| 欧美一级片免费在线| 亚洲欧美一区二区三区久久| 亚洲天堂av在线免费| 精品呦交小u女在线| 欧美人在线视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美日本另类| 国产精品美女久久久久av超清| 国产精品欧美风情| 性色av一区二区三区免费| 精品电影在线观看| 午夜精品福利视频| 在线电影欧美日韩一区二区私密| 精品二区三区线观看| 精品国产一区二区三区久久狼黑人| 日韩激情视频在线| 久久综合久久八八| 国产精品成人久久久久| 久久久国产在线视频| 亚洲成人动漫在线播放| 成人精品视频99在线观看免费| 国产欧美韩国高清| 国产精品激情自拍| 国产v综合ⅴ日韩v欧美大片| 热99精品里视频精品| 亚洲一区二区三区在线视频| 日韩有码片在线观看| 亚洲欧美国产日韩天堂区| 韩曰欧美视频免费观看| 久久亚洲精品中文字幕冲田杏梨| 亚洲视频视频在线| 亚洲丝袜在线视频| 在线播放日韩欧美| 久久久之久亚州精品露出| 亚洲电影免费在线观看| 人九九综合九九宗合| 少妇精69xxtheporn| 国产精品久久久久久久美男| 欧美成aaa人片免费看| 亚洲人成电影网站色…| 久久人人爽人人爽爽久久| 在线国产精品播放| 亚洲精品在线不卡| 亚洲欧洲一区二区三区在线观看| 日韩电影中文字幕在线| 亚洲人成网站免费播放| 另类图片亚洲另类| 韩国三级电影久久久久久| 国模精品视频一区二区| 国产成人精品综合久久久| 久热爱精品视频线路一| 久久精品中文字幕免费mv| 亚洲欧美激情另类校园| 中文字幕国产日韩| 精品无人国产偷自产在线| 欧美综合国产精品久久丁香| 亚洲人成欧美中文字幕| 亚洲欧美综合精品久久成人| 日韩av免费网站| 亚洲福利影片在线| 久久99亚洲热视| 国产一区二区三区在线| 欧美激情精品久久久久久| 欧美日韩亚洲天堂| 亚洲成人黄色在线| 亚洲国产古装精品网站| 伊人久久精品视频| 亚洲综合一区二区不卡| 欧美在线精品免播放器视频| 日韩精品视频免费在线观看| 91久久国产综合久久91精品网站| 欧美精品videosex性欧美| 亚洲成人网在线| 亚洲片国产一区一级在线观看| 国产亚洲激情视频在线| 欧美大尺度激情区在线播放| 日韩在线观看视频免费| 国产精品久久久久高潮| 91精品久久久久久综合乱菊| 欧美日韩国产区| 伊人伊人伊人久久| 久久久av一区| 色婷婷av一区二区三区久久| 26uuu另类亚洲欧美日本一| 亚洲系列中文字幕| 亚洲欧美日韩区| 国产亚洲人成网站在线观看| 欧美老女人xx| 国产噜噜噜噜久久久久久久久| 亚洲天堂第二页| 欧美性生活大片免费观看网址| 久久综合伊人77777尤物| 在线中文字幕日韩| 久久99久国产精品黄毛片入口| 日韩黄在线观看| 国产精品自产拍在线观看中文| 久久精品视频一| 欧美电影免费观看电视剧大全| 色综合视频一区中文字幕| 伊人久久久久久久久久久| 色综合伊人色综合网站| 中文字幕免费精品一区高清| 亚洲欧美日韩另类| 一道本无吗dⅴd在线播放一区| 日本不卡视频在线播放| 国产91精品青草社区| 欧美黑人国产人伦爽爽爽| 久热精品视频在线观看一区| 欧美精品在线观看91| 日韩欧美在线一区| 欧美精品日韩三级| 成人激情在线播放| 亚洲第一在线视频| 在线精品视频视频中文字幕| 亚洲视频在线播放| 琪琪第一精品导航| 最近2019中文字幕mv免费看| 亚洲国产精品久久久久秋霞蜜臀| 久久久久久久999精品视频| 91久久精品国产91性色| 亚洲成人网久久久| 美日韩精品免费观看视频| 欧美激情极品视频| 97婷婷大伊香蕉精品视频| 国产一区私人高清影院| 深夜福利一区二区| 久久久久久香蕉网| 欧美激情精品久久久久久大尺度| 亚洲精品网址在线观看| 亚洲情综合五月天| 在线观看久久av| 久久久在线免费观看| 欧美一级淫片aaaaaaa视频| 97在线观看免费高清| 韩日精品中文字幕| 久久久噜噜噜久噜久久| 欧美久久精品一级黑人c片| 久久99青青精品免费观看| 国产精品高潮粉嫩av| 91久久精品国产91久久性色| 夜夜嗨av一区二区三区四区| 久久久久日韩精品久久久男男| 中文字幕亚洲欧美日韩在线不卡| 欧美另类极品videosbestfree| 久久久久久伊人| 国产精品极品美女在线观看免费| 欧美wwwxxxx| www高清在线视频日韩欧美| 91日本在线观看| 国产欧美一区二区三区在线看| 亚洲一区二区三区乱码aⅴ| 欧美激情视频一区| 亚洲成**性毛茸茸| 欧美国产日韩二区| 久久久久久久久亚洲| 国产在线不卡精品| 日韩天堂在线视频| 日韩国产精品视频| 毛片精品免费在线观看|