附录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