Taiwan Hadoop Forum
http://forum.hadoop.tw/

Re: 關於mapreduce之hdfs書出問題
http://forum.hadoop.tw/viewtopic.php?f=7&t=38294
1 頁 (共 1 頁)

發表人:  jazz [ 2015-11-15, 10:53 ]
文章主題 :  Re: 關於mapreduce之hdfs書出問題

johnny10229 寫:
您好 jazz大
我想請問一下,我在運算mapreduce過程中想要把結果存起來到同一檔案(EX:.result.txt)
因為我是用迭代式演算法,因此map/reduce會一直循環,所以輸出檔也會一直更新
但是因為reducer分成3台 有可能同一時間運算完都需要寫入結果
所以造成某一台無法開啟result檔案,所以會被蓋過
log檔是顯示"此檔案已被開啟"
請問我該怎麼處理這個問題 ?? 有試過try-catch-finally 但是好像沒作用
附上那部分的code,希望Jazz大大幫幫忙
謝謝


HDFS 是一種 Append Only 檔案系統,
因此原生就不支援同時多個程序寫入同一個檔案(不支援 concurrent write)。
http://www.slideshare.net/dataera/inside-hdfs-append

也因此,若循正統 Hadoop MapReduce 程式寫法,
reduce() 函數會自動寫到不同的 output 檔案中。
但您的程式看起來
(1) 不是 Hadoop MapReduce API 規範的寫法
(2) 自行開檔、寫檔到 HDFS
所以遇到這個現象是「正常」。

一般解決這個問題的方式是「改用其他支援 concurrent write 的系統」
例如,寫到資料庫,或者寫到一般 POSIX 的檔案系統(網路芳鄰、NFS 網路磁碟)

供參考~

- Jazz

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/