赞
踩
问题描述
在运行hadoop程序时,程序报错“Output directory file:XXX already exists”, XXX是之前指定的output目录。
原因分析
hadoop 运行时的output 目录必须是之前不存在的。
解决方案
删除指定的output目录,或者是指定新的目录。
问题描述
在运行hadoop时,程序报错:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist
原因分析
是因为yarn-site.xml 里面没有相应的配置,或者是配置写错了。比如我就是把service写错了。
解决方案
添加如下property:
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
问题描述
在格式化 namenode 的时候,系统提示:Re-format filesystem in Storage Directory /opt/module/hadoop-2.7.2/data/tmp/dfs/name ? (Y or N)
原因分析
namenode 需要在运行以后尽量避免格式化,否则datanode就找不到相应的cluster ID。
这样会导致datanode 即便起起来了,也名存实亡(没有datanode)。
解决方案
删掉data,重新导入:rm -rf data/tmp/dfs/data
问题描述
在运行本地模式时,跑了 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+' 之后报错:Input path does not exist: file:/opt/module/hadoop-2.7.2/grep-temp-903886112
原因分析
首先这个缺失的文件名字叫“grep-temp-903886112”,不是正常 input 该有的文件。因为如果是input 该有的文件,path 一定是在 input 下面的。那么系统说“找不到”的原因就很有可能是 没有权限去写,以至于后来去读的时候发现文件不存在。这个想法和文件路径里的“temp”能对应上,猜测可能是运行时候的临时文件写不了。
进一步检查发现是当时用root 权限安装的hadoop,但是跑example 的时候用的是我自己的ID。
解决方案
1. 可以卸载后再用自己的ID 装一遍hadoop;
2. 也可以把整个项目权限扩大到777 (如果是你自己用的话),然后就可以成功运行了。
问题描述
在Windows中运行Hadoop程序,并尝试上传文件时,程序报错:org.apache.hadoop.security.AccessControlException: Permission denied
原因分析
因为windows下的用户名没有对Hadoop dfs文件的修改权限。
解决方案
在IDE的 Run Configuration 上把用户名配置成可以操作dfs的用户。比如root,或是其他你自己定义的用户名。
-DHADOOP_USER_NAME=root
然后就可以成功运行了。
问题描述
在Windows系统下运行MapReduce时,显示 ERROR [org.apache.hadoop.util.Shell] - Failed to locate the winutils binary in the hadoop binary path
原因分析
因为HADOOP_HOME/bin 下没有winutils 文件。
解决方案
下载winutils:https://github.com/srccodes/hadoop-common-2.2.0-bin
问题描述
在Windows系统下运行MapReduce时,显示 Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
原因分析
因为Windows上面的hadoop不是经过windows编译的jar包
解决方案
自行编译hadoop,这篇文章写得比较详细。
问题描述
在运行WordCount等实例时,一般输出应该如下:
但是有时候输出却是这样的:
原因分析
这是因为源文件有乱码或者程序不能解析的字符:
解决方案
自己手动写input来避免乱码问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。