HamaWhite(QQ:530422429)原创作品,转载请注明出处:http://write.blog.csdn.net/postedit/40615469。
1. 安装环境介绍以下:
系统:Ubuntu14.04
Hadoop版本:hadoop⑵.5.0(点击下载)
Java版本:openjdk⑴.7.0_55
Eclipse版本:Release 4.4.0 (点击下载)
2. 把下载Hadoop源码包 hadoop⑵.5.0-src.tar.gz 解压到工作目录(本文为/home/baisong),
得到 hadoop⑵.5.0-src 文件夹。
3. 安装Maven,命令以下:
$ sudo apt-get install maven
4. 安装Google开源的序列化框架 Protocol Buffers。
1) 下载 protobuf⑵.5.0.tar.gz(点击下载),然后解压得到 protobuf⑵.5.0 文件夹。
2) 进入protobuf⑵.5.0,输入下属命令:
$ ./configure
遇到以下毛病:
分析:此属于Ubuntu的常见毛病,可以把经常使用的库全部下载,命令以下:
$ sudo apt-get install build-essential
然后再输入
$ ./configure 命令便可。
3) 顺序履行下面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⑵.5.0-src目录下,输入下述命令:
$ mvn package -Pdist -DskipTests -Dtar
编译成功后,输出信息以下:
6. 生成Eclipse工程文件,命令以下:
$ cd hadoop-maven-plugins
$ mvn install
$ cd hadoop⑵.5.0-src
$ mvn eclipse:eclipse -DskipTests
成功后的输出信息以下图:
7. 在Eclipse中导入源代码:”File“ >> "Import" >> "Existing Projects into Workspace",选择hadoop⑵.5.0-src,然后确认。
如上图所示,导入后遇到毛病,共有59个毛病,但整体上分为3类。解决方法以下:
毛病1: org.apache.hadoop.ipc.protobuf.× 没法解析
解决方法以下,顺次履行下述命令。
$ cd hadoop⑵.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⑴.7.4.jar(点击下载)。寄存于 hadoop⑵.5.0-src 目录中。
然后履行下述命令:
$ cd hadoop⑵.5.0-src/hadoop-common-project/hadoop-common/src/test/avro
$ java -jar ~/hadoop⑵.5.0-src/avro-tools⑴.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工程完成。