【发布时间】:2019-11-21 20:27:34
【问题描述】:
我正在尝试将大量文件(100k+,总大小 2 TB)从 NFS 复制到 HDFS。什么是有效的方法。
在将其安装到边缘节点后,我尝试了以下选项
- hdfs dfs -put : 因内存错误而失败,传输也很慢
-
distcp : 出现错误原因:
org.apache.hadoop.tools.mapred.RetriableFileCopyCommand$CopyReadException: java.io.FileNotFoundException:
但是文件存在。
我在本地文件上尝试了相同的操作,但没有使用 NFS 安装位置。 我知道 distcp 的警告之一是,必须分发目的地。它也适用于来源吗?或者它是一个错误并有解决方法?
distcp 命令:
hadoop distcp file:/home/<user>/t1/f1.dat hdfs://<hdfs-ip>:8020/user/<user>/t1
错误:
Error: java.io.IOException: org.apache.hadoop.tools.mapred.RetriableFileCopyCommand$CopyReadException: java.io.FileNotFoundException: File file:/home/<user>/t1/f1.dat does not exist
at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:224)
at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:50)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:796)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:169)
Caused by: org.apache.hadoop.tools.mapred.RetriableFileCopyCommand$CopyReadException: java.io.FileNotFoundException: File file:/home/<user>/t1/f1.dat does not exist
... 10 more
【问题讨论】:
-
您是否尝试过正确指定文件系统,即“file:///home/
/...”? -
@mazaneicha 是的,同样的错误
-
我假设你检查了权限?
-
@mazaneicha 是的,为了确保我在获得完全许可后重试,但没有运气
-
您是否可以从所有集群节点访问此本地文件?
标签: hadoop hdfs nfs distributed-system distcp