我想在hadoop-2.7.3中创建一个物理上驻留在外部(usb thumb)驱动器上的文件夹,其思想是任何我copyfromlocal的文件都将驻留在thumb驱动器上。类似地,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安装相同的驱动器上,该驱动器几乎已满。有没有办法制作/Maphdfs文件夹,以便从hadoop驱动器以外的驱动器进行读/写操作?
1条答案
按热度按时间zour9fqk1#
你想做的是不可能的!它违背了分布式存储和处理的整体思想。
当你做一个
copyFromLocal
该文件从本地转到hdfs位置(由hadoop管理)。您可以将新驱动器添加为hdfs数据节点,但不能强制文件移动到其中。如果空间是您唯一的限制,那么将新驱动器添加为datanode并重新平衡集群。
添加新节点并在其上启动datanode服务后,请使用以下方法平衡群集:
参考:hdfs平衡器