2017-01-13 68 views
0

我想在hadoop-2.7.3中創建一個物理上位於外部(usb-thumb)驅動器上的文件夾,想法是我將使用-copyFromLocal駐留的任何文件拇指驅動器。同樣從Hadoop的任何輸出文件也進入到外部驅動器:將HDFS文件映射到外部驅動器時出錯

mkdir /media/usb 
mount /dev/sdb1 /media/usb 
hdfs dfs -mkdir /media/usb/test 
hdfs dfs -copyFromLocal /media/source/input.data /media/usb/test 
hadoop jar share/hadoop/tools/lib/hadoop-streaming-*.jar \ 
    -input /media/usb/test/input.data \ 
    -output /media/usb/test/output.data 

,但我得到試圖讓上面的文件夾時,沒有這樣的文件/文件夾的錯誤..如果我做的文件夾本地的Hadoop它僅適用:

hdfs dfs -mkdir /test 
hdfs dfs -copyFromLocal /media/source/input.data /test 

不幸的是這個地方的輸入數據文件到同一驅動器作爲Hadoop的安裝,這是近滿。有沒有辦法制作/映射HDFS文件夾,以便從hadoop驅動器以外的驅動器讀取/寫入數據?

回答

0

你想要做的是不可能的!它無視分佈式存儲和處理的整個想法。

當你做一個copyFromLocal文件從本地進到HDFS位置(其Hadoop的管理)。您可以將您的新驅動器添加爲HDFS DataNode,但可能不會強制文件移動到它。

如果空間是唯一的約束,那麼將新驅動器添加爲datanode並重新平衡羣集。


一旦新的節點添加和數據節點服務啓動就可以了,使用平衡羣集:

hdfs balancer 
     [-threshold <threshold>] 
     [-policy <policy>] 
     [-exclude [-f <hosts-file> | <comma-separated list of hosts>]] 
     [-include [-f <hosts-file> | <comma-separated list of hosts>]] 
     [-idleiterations <idleiterations>] 

參見:HDFS Balancer

+0

所以,它聽起來就像是可能的,但我必須首先指定usb路徑作爲hdfs-site.xml中的datanode。格式化後(hdfs'hdfs namenode -format),那麼任何'dfs -mkdir'和'-copyFromLocal'命令都將使用外部驅動器,不是嗎?或者你說這是不行的,因爲文件系統(即FAT32拇指驅動器)的差異? – ben

+0

@ben它不像那樣工作。首先在新驅動器上安裝hadoop _(在任何操作系統上)_,然後將配置複製到它,然後啓動該數據節點。發佈這個,你必須重新平衡集羣。 **注意:您的操作系統無關緊要,必須將節點配置爲位於同一個hadoop羣集上,這就是所有問題。** –

相關問題