HDFS copyToLocalFile抛出java.io.IOException:Mkdirs无法创建文件

HDFS copyToLocalFile抛出java.io.IOException:Mkdirs无法创建文件,java,hdfs,Java,Hdfs,我正在尝试使用Hadoop文件系统类将文件从HDFS复制到本地linux文件系统 我有权在尝试复制的路径中创建文件夹,我使用mkdir命令进行了检查 此外,我还尝试使用shell命令hadoop fs-copyToLocal hdfsFilePath localFilepath工作正常 我正在用纱线簇运行这个。 我尝试了以下方法,但得到了java.io.IOException:Mkdirs无法创建文件:/home/user错误 错误日志: 16/01/14 01:09:36 ERROR util

我正在尝试使用Hadoop
文件系统
类将文件从HDFS复制到本地linux文件系统

我有权在尝试复制的路径中创建文件夹,我使用
mkdir
命令进行了检查

此外,我还尝试使用shell命令hadoop fs-copyToLocal hdfsFilePath localFilepath工作正常

我正在用纱线簇运行这个。 我尝试了以下方法,但得到了
java.io.IOException:Mkdirs无法创建文件:/home/user
错误

错误日志:

16/01/14 01:09:36 ERROR util.FileUtil: 
java.io.IOException: Mkdirs failed to create /home/user (exists=false, cwd=file:/hdfs4/yarn/nm/usercache/user/appcache/application_1452126203792_8862/container_e2457_1452126203792_8862_01_000001)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:442)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:428)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:908)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:889)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:786)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:365)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:338)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:289)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1970)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1939)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1915)
    at com.batch.util.FileUtil.copyToLocalFileSystem(FileUtil.java:66)
    at com.batch.dao.impl.DaoImpl.writeFile(DaoImpl.java:108)
    at com.batch.JobDriver.runJob(JobDriver.java:79)
    at com.batch.JobDriver.main(JobDriver.java:54)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:480)
实际上,我正在以
/home/user/test
的身份通过
localFilePath
,但我遇到了类似
创建文件失败:/home/user

fs.copyToLocalFile(hdfsFilePath, localFilePath);
fs.copyToLocalFile(false, hdfsFilePath, localFilePath, true);

本周我遇到了同样的问题,问题是我在集群模式下部署作业,因此要运行作业的机器没有创建该目录。您是否可能正在群集模式下部署作业?如果是这样,请尝试在客户机模式下部署它(但输出目录必须存在)

查找此确切错误的任何人,但可能不是来自:

我在本地(Mac)计算机上运行
org.apache.hadoop.fs.FileSystem.copyToLocalFile
时遇到了这个错误,本地fs是使用
job.local.dir
属性配置的

这是个例外:

java.io.IOException: Mkdirs failed to create file:/User/yossiv/algo-resources/AWS/QuerySearchEngine.blacklistVersionFile (exists=false, cwd=file:/Users/yossiv/git/c2s-algo)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:441)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:928)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:909)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:806)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:368)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:341)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:292)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2066)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2035)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2011)
将当前目录下的
job.local.dir
更改为,该目录列在
cwd=
之后的异常文本中,在我的例子中,它是
/Users/yossiv/git/c2s algo


两天来我都被这件事弄糊涂了,希望这能帮上忙。

你能发布完整的堆栈跟踪吗?试试
sudo hadoop fs-copyToLocal hdfsFilePath localFilepath
可能是你的程序没有权限…@Pranalee我该如何访问程序,我正在使用spark submit命令运行spark作业..我不确定如何执行。。。需要弄清楚,但与此同时,您是否可以尝试通过提供另一个位置来运行程序,在您的用户/文档目录中的某个位置我尝试了所有位置,纱线簇是安全的,我不确定是哪个位置导致了问题。我将检查这个位置,可能是这个位置导致了问题。在群集模式下遇到了相同的问题。您的解决方案在当时是很好的,但现在似乎是不推荐的。我现在要发疯了:)