- 在hadoop官网下载
Source download
版本的文件, - 然后解压到
~/hadoop-src/
文件夹下,会看到一个BUILDING.txt
文件,按照里面的要求,下载一些编译源码所需的包,
* JDK 1.7 (我用的是1.8,早就配置好了,跳过)
* Maven
$ sudo apt-get -y install maven
* Native libraries
$ sudo apt-get -y install build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
* ProtocolBuffer 2.5.0 (required)
$ sudo apt-get -y install libprotobuf-dev protobuf-compiler
Optional packages:
* Snappy compression
$ sudo apt-get install snappy libsnappy-dev
* Bzip2
$ sudo apt-get install bzip2 libbz2-dev
* Jansson (C Library for JSON)
$ sudo apt-get install libjansson-dev
* Linux FUSE
$ sudo apt-get install fuse libfuse-dev
$ sudo apt-get install ant
- 然后正式编译源码就行了
mvn package -Pdist,native -DskipTests -Dtar
可能出现的问题
2.1 搭建hadoop2.7.5源码编译环境时,提示protoc version is ‘libprotoc 2.6.1’,expected version is ‘2.5.0’ -> [Help 1]
- 原因:protobuf版本不对,重新安装
$ apt remove protobuf-compiler # 卸掉已有
- 下载2.5.0版本的protoc,并解压,进入文件目录
$ tar -zxvf protobuf-2.5.0.tar.gz -C /opt/
$ cd ~/opt/protobuf-2.5.0/
$ ./configure
$ make
$ make check
$ make install
- 检查是否安装成功
$ protoc --version
若出现以下问题:
protoc: error while loading shared libraries: libprotocbuf.so.9: cannot open shared
- 原因:protobuf的默认安装路径是/usr/local/lib,而/usr/local/lib不在ubuntu体系默认的LD_LIBRARY_PATH里,所以就找不到lib。
- 解决办法:
在 /etc/ld.so.conf.d/目录下创建文件 bprotobuf.conf文件,文件内容为
/usr/local/lib
再执行命令:
$ ldconfig # 在/etc/ld.so.conf.d/目录下执行
2.2 eclipse导入源码和jar包后,仍然报错Syntax error, ‘for each’ statements are only available if source level is 1.5 or greater
- 原因:项目属性中,设置的jdk版本不对。
- 解决:project–properties–java compiler,将版本设置到1.5以上,即解决。