繁体   English   中英

将整个目录添加到hadoop文件系统(HDFS)

[英]Add a entire directory to hadoop file system (hdfs)

我有存储在子目录中的数据,并希望将父目录放在HDFS中。 数据始终存在于最后一个目录中,并且目录结构最多扩展到2个级别。 所以结构是[parent_dir]-> [sub_directories]-> [sub_directories]-> data

我试图通过添加整个目录

hadoop fs -put parent_dir input

这需要很长时间! 子目录可能是258X258。 这最终失败了

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(X.X.X.245:50010, storageID=DS-262356658-X.X.X.245-50010-1394905028736, infoPort=50075, ipcPort=50020):DataXceiver
org.apache.hadoop.util.DiskChecker$DiskOutOfSpaceException: No space left on devic

我可以在节点上看到所需的空间。 我在这里做错了什么?

另外,我计划访问文件的方式是

hadoop jar Computation.jar input/*/* output

这适用于小型数据集。

该错误消息通常从根本上是正确的。 您可能没有考虑HDFS文件系统的复制因素。 如果复制因子设置为默认值3,则需要300GB的存储空间来存储100GB的数据集。

您可以采取以下几项措施来解决此问题:

1)将hdfs-site.xml中的复制因子(dfs.replication)和最大块(dfs.replication.max)减小为2

2)压缩您的数据集。 Hadoop可以对bzip和gzip压缩文件进行操作(尽管您需要小心分割)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM