hadoop测试时,出现./hadoop: line 258: /cygdrive/c/Program: No such file or directory,怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop测试时,出现./hadoop: line 258: /cygdrive/c/Program: No such file or directory,怎么解决?相关的知识,希望对你有一定的参考价值。

估计是你的hadoop(或者java)放到C:\Program Files里了吧,路径中间带空格。脚本执行就有问题了。建议将hadoop放到一些简单的路径下比如D:\等。

hadoop fs -put <localsrc> ... <dst>是将本地文件系统的文件上传到HDFS上所使用的命令。例如:hadoop fs -put test.txt /user/hadoop 是将当前路径下的test.txt文件上传到HDFS的/user/hadoop目录中。上传的结果可以使用hadoop -fs -list /user/hadoop来查看。
参考技术A 提示是没有找到对应的文件或者路径,建议楼主使用虚拟机安装linux,在linux环境下测试hadoop。追问

那我想问下[-put ... 是什么意思,能不能简单举个例子?谢谢!!

本回答被提问者采纳

远程执行 Hadoop 作业时,reduce 阶段出现异常

【中文标题】远程执行 Hadoop 作业时,reduce 阶段出现异常【英文标题】:Exception during reduce phase when remotely executing Hadoop job 【发布时间】:2013-04-26 20:30:43 【问题描述】:

我有一个运行 1.0.4 的小型 10 节点 hadoop 集群,我正在尝试对其进行设置,以便能够从网络上不是 NameNode 的机器提交作业。我有一个简单的示例设置,我使用ToolRunner 执行作业,手动构建JobConf,并使用JobClient.submitJob() 提交。当我从 NameNode 运行它时,一切都按预期工作。

当我从网络中的任何其他节点运行时,作业已提交并且所有 map 任务都成功完成,但所有 reduce 任务都失败,并出现以下异常:

org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find output/map_0.out in any of the configured local directories
    at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathToRead(LocalDirAllocator.java:429)
    at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathToRead(LocalDirAllocator.java:160)
    at org.apache.hadoop.mapred.MapOutputFile.getInputFile(MapOutputFile.java:161)
    at org.apache.hadoop.mapred.ReduceTask.getMapFiles(ReduceTask.java:220)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:398)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)

我认为这意味着 reduce 任务无法找到映射器的输出。我相当肯定我只是在某处遗漏了一个配置值,但我不知道是哪一个(我试过mapred.local.dirhadoop.tmp.dir 没有成功)。有谁知道上述消息的确切含义以及如何修复它,或者知道从 NameNode 以外的机器执行作业的简单方法?

编辑:我认为这也可能与权限有关。 hadoop 用户几乎拥有 hdfs 上的所有文件,但是当我在另一台机器上登录时,它使用的是不同的用户名。我尝试在集群中类似于this 的所有节点上更新mapred-site.xml,并将JobClient.submitJob() 包装在UserGroupInformation.doAs() 内,但我仍然收到类似于以下内容的错误:

SEVERE: PriviledgedActionException as:hadoop via oren cause:org.apache.hadoop.ipc.RemoteException: User: oren is not allowed to impersonate hadoop

【问题讨论】:

工作,您是否设法解决了这个问题 - 我也面临同样的问题?你能提供任何输入吗? 【参考方案1】:

您是否检查过托管本地目录的磁盘没有空间不足?

【讨论】:

是的,我没有用完任何磁盘上的空间。 mapred.local.dir 和 hadoop.tmp.dir 的路径怎么样。它们是绝对路径还是相对路径? 它们都是绝对路径。 mapred.local.dir 是 /home/hadoop/hadoop/tmp/mapred/local 而 hadoop.tmp.dir 是 /home/hadoop/hadoop/tmp【参考方案2】:

将此属性添加到您的 core-site.xml 并重新启动集群:

<name>hadoop.proxyuser.myhttpfsuser.groups</name>
<value>oren</value>

还要确保您也为“其他人”打开了目录权限。

【讨论】:

【参考方案3】:

是的,我想我知道发生了什么……

在尝试从 reduce 作业读取映射输出时,您应该使用 FQDN 风格来构建路径。

类似于hdfs://master:534110/user/hduser/map_0.out,也许您只是在使用/map_0.out,但异常没有帮助。

HTH,

【讨论】:

以上是关于hadoop测试时,出现./hadoop: line 258: /cygdrive/c/Program: No such file or directory,怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

Error:(37, 47) java: 无法访问org.apache.hadoop.mapred.JobConf 找不到org.apache.hadoop.mapred.JobConf的类文件(

在hdfs中为hive创建目录(/user/hive/warehouse)不成功,显示已经存在,但是找不到?求高手指点,先谢了

hadoop 启动ha错误 nice: /bin/hdfs: No such file or directory

如何在hadoop环境下运行C程序?

hadoop/spark/hbase集群 动态缩容/扩容

hadoop集群搭建(Hadoop 3.1.3 /Hive 3.1.2/Spark 3.0.0)