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.dir
和hadoop.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)不成功,显示已经存在,但是找不到?求高手指点,先谢了