在windows使用eclipse开发 hadoop2.2.0程序的时候,会提示没有winutils.exe的错误,需要在windows端编译源代码才能解决。
一:准备工作
1:相关软件包下载并安装
Apache Hadoop 2.2.0 Source codes
Microsoft Windows SDK for Windows 7 and .NET Framework 4
Maven
Protocol Buffers 2.5.0
Cygwin
JDK
findbugs
2:系统环境变量设置
JAVA_HOME=C:\Java\jdk631
M2_HOME=E:\App\maven305
Platform=x64
Path增加;C:\cygwin64\bin;%M2_HOME%\bin
二:编译和安装
参考文档: Build, Install, Configure and Run Apache Hadoop 2.2.0 in Microsoft Windows OS
1:编译
将hadoop2.2.0的源代码解压缩到d:\hadoop220_src。
开始-->所有程序--> Microsoft Windows SDK v7.1-->Windows SDK 7.1 Command Prompt
在命令符中切换到d:\hadoop220_src,然后运行:
mvn package -Pdist,native-win -DskipTests -Dtar
编译的时候可能会出现下面的错误:
A:Apache Hadoop Auth模块
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure:
[ERROR] D:\hadoop220_src\hadoop-common-project\hadoop-auth\src\test\java\org\apache\hadoop\security\authentication\client\AuthenticatorTestCase.java:[86,13] 无法访问 org.mortbay.component.AbstractLifeCycle
解决方法:
===================================================================
修改:D:\hadoop220_src\hadoop-common-project\hadoop-auth\pom.xml
<dependency>
<groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<scope>test</scope>
</dependency>
===================================================================
参考文档: hadoop-auth has a build break due to missing dependency
B:Apache Hadoop Common模块
出现了protoc找不到的错误
解决方法:
===================================================================
上http://code.google.com/p/protobuf/downloads/list下载一个已经编译的protoc.exe(或者在VS里面用源码编译一下),然后将该文件的目录加入PATH环境变量
===================================================================
编译成功,生成的安装包在D:\hadoop220_src\hadoop-dist\target下
2:安装
A:将D:\hadoop220_src\hadoop-dist\target解压缩到e:\app\hadoop220_win目录下,并将hadoop集群的配置文件复制到e:\app\hadoop220_win\etc\hadoop下,主要有以下几个配置文件:
hdfs-site.xml
core-site.xml
mapred-site.xml
yar-site.xml
masters
slaves
B:增加环境变量
将HADOOP_HOME=e:\app\hadoop220_src加入环境变量;将%HADOOP_HOME%\bin加入PATH环境变量。
3:测试
使用eclipse对WordCount程序进行测试,除了中间出了点权限的问题,顺利通过。
同时可以使用命令提示符来查看运行结果:
4:Tips
A:由于windows是使用用户的登录名连接hadoop集群的,所以需要将hdfs-site.xml中访问权限参数为false:
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>