2014-10-30 332 views
2

上存儲的MapReduce中間輸出,可以使用一個Hadoop(版本1.2.0)16個節點,一個具有通過專用網絡(從站)連接的公共IP(主)及15的集羣。遠程服務器

是否有可能使用遠程服務器(除了這些16個節點),用於存儲映射器的輸出是什麼?問題是在映射階段期間節點磁盤空間不足,我無法再壓縮映射輸出。

我知道mapred-site.xml中的mapred.local.dir用於設置存儲tmp文件的dirs的逗號分隔列表。理想情況下,我想在遠程服務器上有一個本地目錄(默認目錄)和一個目錄。當本地磁盤已滿時,我想使用遠程磁盤。

回答

0

的解決方案是使用iSCSI technology。技術人員幫助我們實現這一目標,所以很遺憾,我無法提供更多細節。

我們將遠程磁盤安裝到每個從節點的本地路徑(/mnt/disk),並在那裏創建了tmp文件,併爲所有用戶提供rwx權限。

然後,我們改變了$HADOOP_HOME/conf/mapred-site.xml文件並添加屬性:

<property> 
    <name>mapred.local.dir</name> 
    <value>/mnt/disk/tmp</value> 
</property> 

最初,我們有兩個,逗號分隔值該屬性,第一是默認值,但它仍然沒」 t按預期工作(我們仍然有一些「設備上沒有剩餘空間」的錯誤)。所以我們在那裏只剩下一個價值。

3

我不是很肯定這個,但按照鏈接(http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml)它說:

本地目錄是哪裏的MapReduce存儲中間數據文件。 可能是在 爲了傳播磁盤I/O不同設備上的目錄的逗號分隔的列表。不存在的目錄被忽略。

還有一些,你應該檢查出一些其他屬性。這些可能會有所幫助:

  1. mapreduce.tasktracker.local.dir.minspacestart:如果空間mapreduce.cluster.local.dir根據本下降,不要求更多的任務。以字節爲單位值

  2. mapreduce.tasktracker.local.dir.minspacekill:如果在這mapreduce.cluster.local.dir空間下降,直到所有當前那些已經完成,並清理不問更多的任務。另外,爲了保存我們正在運行的其他任務,請殺死其中一個,清理一些空間。從減少任務開始,然後去完成最少的任務。值以字節爲單位。

+0

對於這兩個屬性來說+1,的確很有用。謝謝!我將深入研究這些。我已經知道答案的第一部分,我的問題是如何做到這一點。 – vefthym 2014-10-30 11:01:51