我想在hadoop-2.7.3中创建一个物理上位于外部(usb-thumb)驱动器上的文件夹,这个想法是,我-copyFromLocal的任何文件都将位于拇指驱动器上。同样,hadoop的所有输出文件也将转到外部驱动器:
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驱动器以外的其他驱动器进行读写操作?
最佳答案
您试图做的事是不可能的!它违背了分布式存储和处理的整个思想。
当您执行 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
关于hadoop - 将HDFS文件映射到外部驱动器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41627478/