在之前的文章中介绍了如何直接在Ubuntu中安装Hadoop。但是对于64位的Ubuntu来说,官方给出的Hadoop包是32位的,运行时会得到警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
所以我们最好是自己在Ubuntu中编译Hadoop。先介绍一下我的环境是Ubuntu 16.1 X64 Server版,当前最新的Hadoop是2.7.3。我们可以先下载源代码,在其中有BUILDING.txt,指导我们如何在Ubuntu中编译Hadoop:
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
我用的Linux16.1 X64 Server版本,也是大同小异,接下来是编译Hadoop的过程:
1.更新apt源首先需要更新我们的apt源,因为如果是国外源的话,接下来安装会很慢。使用命令
sudo vi /etc/apt/sources.list
打开这个apt源列表,如果其中看到是之类的,那么就是外国的,如果看到是之类的,那么就不用换的。我的是美国的源,所以需要做一下批量的替换。在命令模式下,输入:
:%s/us./cn./g
就可以把所有的us.改为cn.了。然后输入:wq即可保存退出。
sudo apt-get update
更新一下源。
2.安装必备软件2.1安装SSH
sudo apt-get install ssh
安装完毕后我们就可以用putty或者SecureCRT连接到Ubuntu了。
2.2安装JDK
sudo apt-get install default-jdk
安装后可以运行java –version看安装的版本
2.3安装Maven
sudo apt-get install maven
这是编译Hadoop的工具,安装完成后,可以运行mvn -–version看安装的版本
2.4安装依赖库
sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
2.5安装ProtocolBuffer 2.5.0
注意,我要编译的是Hadoop2.7.3,必须安装的ProtocolBuffer是2.5这个版本,如果不是的话,接下来会编译失败:
protoc version is 'libprotoc 3.0.0, expected version is '2.5.0'如果我们运行文档中的:
sudo apt-get -y install libprotobuf-dev protobuf-compiler
protoc –version 会告诉我们安装的是3.0版本,这是不对的。我们需要的是2.5版。怎么办呢?只有去GitHub找到2.5版,然后重新编译安装。过程如下:
wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz tar -xzf protobuf-2.5.0.tar.gz cd protobuf-2.5.0/ ./autogen.sh ./configure make make install
现在我们重新运行protoc –version 会看到版本是2.5了。 2.6更新Maven镜像 由于Maven默认连接的是国外的服务器,会很慢,所以我们需要更新Maven源为国内的服务器。推荐还有阿里云的Maven源: 。 具体做法是: cd ~/.m2 (如果没有这个文件夹,那么就在~目录mkdir .m2创建这个文件夹)vi settings.xml
然后输入以下的内容:<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 "> <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url></url> </mirror> </mirrors> </settings>
3.编译Hadoop