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对于调试集群,测试新功能都有帮助。


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

查看所有标签

猜你喜欢:

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

连线力

连线力

杨国斌 / 邓燕华 / 广西师范大学出版社 / 2013-9 / 39.00

《连线力》,最关切我们未来的“思想@网络.中国”丛书之一,互联网中国传媒参考书。 中国网民在行动。在中国的广大网民中,普遍存在着对正义的渴望和追求,对弱者和小人物的同情, 对贪官污吏的痛恶,对政府的失望, 对权贵的嘲讽,对沟通的渴望,甚至对革命的呼唤。这些因素有着共同的内在逻辑,即情感逻辑。在这个意义上,情感汹涌的网络事件,是整个中国社会情感结构的脉络。 1994年,中国开通了全功能的......一起来看看 《连线力》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具