ubuntu下hadoop build流程及常见问题

栏目: 编程工具 · 发布时间: 6年前

内容简介:想要学习hadoop,自定义hadoop代码并运行,build是绕不开的一步。但这个操作实在是太复杂,以至于不容易完成。本文聊一下我在build中遇到的坑。本文内容基于

想要学习hadoop,自定义hadoop代码并运行,build是绕不开的一步。

但这个操作实在是太复杂,以至于不容易完成。本文聊一下我在build中遇到的坑。

本文内容基于 ubuntu 16.04 JDK8

获取代码

hadoop项目代码从 https://github.com/apache/hadoop 获取。如果你的项目对hadoop版本有要求,clone下来后checkout到相应的分支或者tag即可。

git clone https://github.com/apache/hadoop.git
git checkout release-2.7.1

安装依赖

阅读编译说明

由于hadoop编译实在是太复杂,官方甚至有一个编译说明。

打开项目根目录的 BUILDING.txt ,注意以下内容:

Installing required packages for clean install of Ubuntu 14.04 LTS Desktop:

* Oracle JDK 1.7 (preferred) (作者注:Ubuntu原生 java 或者JDK8都可以成功编译,这一段可以忽略)
  $ 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) (作者注:必须是2.5.0,但是下面的命令现在会自动下载2.6.1,所以不要用下面的命令)
  $ sudo apt-get -y install libprotobuf-dev protobuf-compiler

说明中对于所需依赖分为4个方面:

  • JDK 1.7:根据实践1.8也可以用,如果你已经安装了JDK此处可以忽略
  • Maven:没有安装的话,执行命令
  • Native libraries:一般都需要安装,执行命令
  • ProtocolBuffer 2.5.0:编译成功的必备。但是下方命令会下载2.6.1,不要执行。

手动安装ProtocolBuffer 2.5.0

接上文,安装好其它依赖后,需要手动安装 ProtocolBuffer 2.5.0 。首先运行

protoc --version

确认本地是否已有ProtocolBuffer,及版本是否为2.5.0。如果安装了其它版本,需要卸载:

sudo apt-get -y remove libprotobuf-dev protobuf-compiler

执行以下命令手动安装:(自行确认是否需要sudo)

cd /usr/local/src/
wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
tar xvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./autogen.sh
./configure --prefix=/usr
make
make install
protoc --version

切换Maven源

hadoop编译过程中需要从Maven中下载大量依赖,如果你是国内环境,切换到阿里云的源会10倍地提高编译速度。

apt安装的Maven,打开 /etc/maven/settings.xml 。手动安装的Maven,打开maven目录下的 conf/settings.xml

<mirros> 中添加:

<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>*</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

注意 <mirrorOf> 中是 * 才可以替换所有源,笔者最开始为 central ,导致很多包无法下载。

<profiles> 中添加:

<repository>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>

最终 settings.xml 应该为:(忽略注释和无关代码块)

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <mirrors>
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>*</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
  </mirrors>
  <profiles>
        <repository>
            <id>nexus-aliyun</id>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </repository>
  </profiles>
</settings>

切换到项目根目录,运行:

mvn package -Pdist -DskipTests -Dtar

如果上面命令成功,可以运行更多的编译内容:

mvn package -Pdist,native,docs -DskipTests -Dtar

一般来说第一个命令就够用了,很多hadoop工具只需要java代码

以上就是我在 ubuntu 16.04 上编译成功hadoop的经验,成功编译hadoop对于调试集群,测试新功能都有帮助。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Charlotte's Web

Charlotte's Web

E. B. White / Scholastic / 2004 / USD 0.01

This is the tale of how a little girl named Ferm, with the help of a friendly spider, saved her pig, Wilbur, from the usual fate of nice fat little pigs.一起来看看 《Charlotte's Web》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换