附录A 安装Hadoop过程中可能存在的问题及解决方案
问题1 在Windows中运行Hadoop时,出现以下异常:
ERROR security.UserGroupInformation(UserGroupInformation.java:doAs(1086))-PriviledgedActionException as:dong cause:java.io.IOException:Failed to set permissions of path:D:\hadoop\hadoop-1.0.0\build\test\mapred\staging\trss1723775845.staging to 0700
【产生原因】
由于Hadoop 1.0.0中独特的修改目录权限[1]的方法,使得编译后的jar包不能直接运行于Windows环境。
【解决方法】
最简捷的方法是,对src\core\org\apache\hadoop\fs\FileUtil.java代码做以下修改(注释三行代码):
private static void checkReturnValue(boolean rv, File p,
FsPermission permission
)throws IOException{
if(!rv){
//throw new IOException("Failed to set permissions of path:"+p+
//
"to"+
//
String.format("%04o",permission.toShort()));
}}
修改之后重新编译Hadoop源代码。
问题2 Hadoop eclipse plugin报错:“Error:failure to login”
【产生原因】
直接编译代码后生成的jar包由于缺少一些依赖的lib文件,不能直接使用。
【解决方法】
对配置文件进行部分修改,修改的文件涉及src/contrib/eclipse-plugin目录下的build.xml和META-INF/MANIFEST.MF文件。
修改build.xml如下(在文件末尾添加以下内容):
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar"todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.4.jar"todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.0.1.jar"todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.0.1.jar"todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar"todir="${build.dir}/lib"verbose="true"/>
将META-INF/MANIFEST.MF文件中的Bundle-ClassPath属性修改为:
Bundle-ClassPath:classes/,lib/hadoop-core.jar, lib/commons-configuration-1.6.jar, lib/commons-lang-2.4.jar, lib/jackson-core-asl-1.0.2.jar, lib/jackson-mapper-asl-1.0.2.jar, lib/commons-httpclient-3.0.1.jar
经过上面编译之后,产生的jar包位于build/contrib/eclipse-plugin目录下,将该jar包拷贝到Eclipse的plugins目录下,重启Eclipse即可。
问题3 Windows环境下使用Cygwin终端启动Hadoop时,出现错误“ssh:connect to host localhost port 22:Connection refused”
【产生原因】
Windows系统下,ssh命令需要管理员权限才能使用。
【解决方案】
方案一 永久修改ssh启动权限
步骤1:Windows环境下,依次选择开始→运行→输入services.msc。
步骤2:右击CYGWIN sshd,并依次选择属性→登录→“此账户”→浏览→高级→立即查找→选择账户名(必须为管理员权限)→输入密码→确定。
步骤3:重启CYGWIN sshd服务。
方案二 以管理员身份打开Cygwin终端
右击Cygwin可执行文件,单击“以管理员身份运行”。
[1]https://issues. apache.org/jira/browse/MAPREDUCE-3555