使用的是Ubuntu18.04版本,编译hadoop2.7.6支持snappy。请按下面所说的版本进行,其它版本不一定能够成功。
下载Apache Hadoop
官网下载hadoop2.7.6版本,目前最新版本是hadoop3.0.3。
解压
#读取 BUILDING.txt文件 上图中用红色框选中的文件,是官方的编译步走:
Build instructions for Hadoop
Requirements:
* Unix System
* JDK 1.7+
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
* Zlib devel (if compiling native code)
* openssl devel ( if compiling native hadoop-pipes and to get the best HDFS encryption performance )
* Linux FUSE (Filesystem in Userspace) version 2.6 or above ( if compiling fuse_dfs )
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
Installing required packages for clean install of Ubuntu 14.04 LTS Desktop:
* Oracle JDK 1.7 (preferred)
$ sudo apt-get purge openjdk*
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer
* 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 -y install build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev snappy libsnappy-dev bzip2 libbz2-dev libjansson-dev fuse libfuse-dev
注意 libssl-dev安装换成 libssl1.0-dev版本。 我之前就是默认安装,在编译OpenSSL功能的时候一直卡主编译不通过。具体错误大致形式如下:
安装protobuf
1.下载
1].googletest下载,protobuf编译需要依赖它,下载地址,最好选择1.7.0版本,1.7.0版本后目录结构有变化。
2].protobuf下载 官方文档中说可以通过下面命令安装,但是我发现libprotobuf-dev没有,只好手动安装
$ sudo apt-get -y install libprotobuf-dev protobuf-compiler
protobuf下载地址,最好选择2.5.0版本与官方一致, 解压后,把前面下载的googletest复制到protobuf的跟目录,并且重命名为gtest
2.编译
1].运行autogen.sh 生成configure
2]运行configure
3]make
4]sudo make install 验证protobuf是否安装成功
benny@benny-ubuntu:~/software/protobuf-2.5.0$ protoc --version
libprotoc 2.5.0
可看到安装成功了。
安装snappy
2.编译安转和protobuf一样。configure、make、sudo make install 安装完成可以验证
编译hadoop 到现在,准备工作算是做完了。maven命令编译。
3.进入hadoop的根目录执行下面的maven命令
mvn clean package -DskipTests -Pdist,native -Dtar -Dsnappy.lib -Drequire.snappy -Dbundle.snappy -Drequire.openssl -Dbundle.openssl
4.编译完成后./hadoop-dist/target/ 目录下就是最终生成的文件了。
benny@benny-ubuntu:~/software/hadoop-2.7.6-src$ ll ./hadoop-dist/target/
支持snappy的本地动态链接库位于./hadoop-dist/target/hadoop-2.7.6/lib/native/
benny@benny-ubuntu:~/software/hadoop-2.7.6-src$ ll ./hadoop-dist/target/hadoop-2.7.6/lib/native/*
相关主题