将hdfs文件Map到外部驱动器时出错

4dc9hkyq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(467)

我想在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驱动器以外的驱动器进行读/写操作?

zour9fqk

zour9fqk1#

你想做的是不可能的!它违背了分布式存储和处理的整体思想。
当你做一个 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平衡器

相关问题