windows7下Hadoop-2.6.0源码错误解决、本地编译

最近在研究hadoop,下载了源码,自己想编译下折腾折腾,发现在windows环境编译hadoop还不是那么简单的,需要一些开发环境及软件的支持,毕竟hadoop的初衷不是在windows环境下使用的(尽管现在版本开始支持windows环境)。本以为网上会有一些相关的资料与解决方案,可能是hadoop版本太多,解决方法都不尽人意,为了方便以后还需要再使用,特把自己的解决方案记录下来,供自己以后参考与大家的交流。
 废话不多说,咱们直接进入正题。下载了源码,根目录下有个BUILDING.txt,不过人家是在unix system上编译环境。
 本人windows环境:
  windows7;
  jdk1.7.0_25;
  maven3.2.1;
  protocolBuffer 2.5.0;
  cmake3.3.0;
  zlib128-dll;
  cygwin;
安装流程:
1、安装jdk,maven这个就不多说了,大家肯定都会的。为了避免编译时虚拟机的内存不够,需要设置环境变量MAVEN_OPTS=-Xms256m -Xmx512m。
2、其次就是安装protocolBuffer,高版本在编译的时候会报错提示使用该版本(低版本就没尝试了),下载地址:https://github.com/google/protobuf/releases/download/v2.5.0/protoc-2.5.0-win32.zip。尽量使用2.5.0这个版本,如果想尝试其他版本也可以尝试下。下载好直接解压出protoc.exe文件,将存储protoc.exe的目录配置到环境变量中,配置完成后,在cmd命令行输入 protoc --version,查看是否配置成功。哇塞,配置成功,小激动!
3、接下来需要安装的就是cmake,官方要求2.6以上版本即可,我就装下X,安装了是最新版本。下载地址:http://www.cmake.org/files/v3.3/cmake-3.3.0-rc1-win32-x86.exe。安装完成,将cmake.exe所在路径加入PATH变量,在cmd命令行输入 cmake --version,查看是否配置成功。
4、然后是zlib,直接下载dll版本的,下载地址http://zlib.net/zlib128-dll.zip。直接解压到指定目录,并配环境变量ZLIB_HOME=解压目录。
5、最后是安装cygwin,下载地址:https://cygwin.com/setup-x86_64.exe。下载完毕直接安装,安装完将bin目录的路径加入PATH变量。

必备环境都已经完成,就可以开始我们的编译之旅。


 1、使用cygwin进入源码根目录下的hadoop-maven-plugins目录,执行mvn install,此时开始漫长的等待,下载依赖JAR包。有时会因为网络问题经常中断,只需重新执行mvn命令,直到下载成功;
 2、返回源码根目录,然后执行mvn eclipse:eclipse –DskipTests,将工程编译成eclipse工程。
 3、此时可以新建一个workspace,将源码导入,此时源码会有三个问题。
 第一个问题解决方案:
 在eclipse中,右键单击hadoop-streaming项目,选择build path=》configure build path,然后选择Source标签页,看到出错的路径。
点击LinkSource,选择被链接的目录 (源码目录)/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf,链接名也可以随便取;inclusion patterns中添加capacity-scheduler.xml,exclusion patters中添加**/*.java,与原配置项一致;完毕后将出错的项删除。刷新hadoop-streaming项目即可。
 第二个问题解决方案:
 使用cygwin进入源码根目录下的hadoop-common-project\hadoop-common\src\test\proto,执行protoc --java_out=../java *.proto命令(protoc就是在安装软件第二步下载的protoc程序)。右键单击eclipse中的hadoop-common,刷新即可。
 第三个问题解决方案:
 下载avro-tools-1.7.7.jar(最新版)文件,地址http://mvnrepository.com/artifact/org.apache.avro/avro/1.7.7
使用cygwin进入源码根目录下的hadoop-common-project\hadoop-common\src\test\avro,执行java -jar (存储目录)/avro-tools-1.7.7.jar compile schema avroRecord.avsc ../java。上面命令是要通过avro模式文件生成相应的.java文件。右键单击eclipse中的hadoop-common项目,刷新即可。

问题解决完毕,此时使用cygwin进入源码根目录,根据系统是32位还是64位,设置参数。64位:set Platform=x64,32位:set Platform=Win32。然后执行mvn package -Pdist,native-win -DskipTests -Dtar。经过漫长的等待,终于打包完成。
      期间可能会遇到一些其他问题,只要自己看报错信息,百度下基本都是可以解决的。希望这篇文章可以帮助大家开启大数据之旅的大门。如有不对或疑问,欢迎大家指出。

猜你喜欢

转载自hj86073026.iteye.com/blog/2218413