HamaWhite(QQ:530422429)原创作品,转载请注明出处:http://write.blog.csdn.net/postedit/40615469。
1. 安装环境介绍如下:
系统:Ubuntu14.04
Hadoop版本:hadoop-2.5.0(点击下载)
Java版本:openjdk-1.7.0_55
Eclipse版本:Release 4.4.0 (点击下载)
2. 把下载Hadoop源码包 hadoop-2.5.0-src.tar.gz 解压到工作目录(本文为/home/baisong),
得到 hadoop-2.5.0-src 文件夹。
3. 安装Maven,命令如下:
$ sudo apt-get install maven
4. 安装Google开源的序列化框架 Protocol Buffers。
1) 下载protobuf-2.5.0.tar.gz(点击下载),然后解压得到 protobuf-2.5.0 文件夹。
2) 进入protobuf-2.5.0,输入下属命令:
$ ./configure
遇到如下错误:
分析:此属于Ubuntu的常见错误,可以把常用的库全部下载,命令如下:
$ sudo apt-get install build-essential
然后再输入 $ ./configure 命令即可。
3) 顺序执行下面三个命令。
$ make
$ make check
$ sudo make install
4) 查看Protocol版本号,检查是否安装成功。
$ protoc --version
遇到如下错误,如下:
分析知是因为系统找不到lib库,修改 /etc/ld.so.conf 文件,添加 /usr/local/lib 。如下:
$ sudo gedit /etc/ld.so.conf
内容:include /etc/ld.so.conf.d/*.conf /usr/local/lib
执行下述命令更新库文件路径,然后就能通过 $ protoc --version 命令查看版本号。
$ sudo ldconfig
5. 编译Hadoop源码生成Jar包,无需编译native code、测试用例和生成文档,在/home/baisong/adoop-2.5.0-src目录下,输入下述命令:
$ mvn package -Pdist -DskipTests -Dtar
编译成功后,输出信息如下:
6. 生成Eclipse工程文件,命令如下:
$ cd hadoop-maven-plugins
$ mvn install
$ cd hadoop-2.5.0-src
$ mvn eclipse:eclipse -DskipTests
成功后的输出信息如下图:
7. 在Eclipse中导入源代码:”File“ >> "Import" >> "Existing Projects into Workspace",选择hadoop-2.5.0-src,然后确认。
如上图所示,导入后遇到错误,共有59个错误,但总体上分为3类。解决方法如下:
错误1: org.apache.hadoop.ipc.protobuf.× 无法解析
解决方法如下,依次执行下述命令。
$ cd hadoop-2.5.0-src/hadoop-common-project/hadoop-common/src/test/proto //注释:进入该目录
$ protoc --java_out=../java *.proto
最后,刷新Eclipse中的所有工程。至此,只剩下 6 个错误。
错误2:AvroRecord cannot be resolved to a type TestAvroSerialization.java
解决方法如下:
首先,下载 avro-tools-1.7.4.jar(点击下载)。存放于 hadoop-2.5.0-src 目录中。
然后执行下述命令:
$ cd hadoop-2.5.0-src/hadoop-common-project/hadoop-common/src/test/avro
$ java -jar ~/hadoop-2.5.0-src/avro-tools-1.7.4.jar compile schema avroRecord.avsc ../java
最后,刷新Eclipse工程。只剩下 3个错误。
错误3: Project ‘hadoop-streaming‘ is missing required source ... Build Path Problem
解决方法如下:
右键 hadoop-streaming 项目->properties->左边Java Build Path->Source->选定错误项->右边Remove,如下图所示。
至此,在Eclipse中创建Hadoop工程完成。