在之前的文章中介绍了如何直接在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源列表,如果其中看到是http://us.xxxxxx之类的,那么就是外国的,如果看到是http://cn.xxxxx之类的,那么就不用换的。我的是美国的源,所以需要做一下批量的替换。在命令模式下,输入:

:%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源:http://maven.aliyun.com/ 。
具体做法是:
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 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>
</settings>

3.编译Hadoop

首先我们下载最新的Hadoop源代码,访问官网http://hadoop.apache.org/releases.html,可以看到最新的是2.7.3,所以我们点击2.7.3的source,会给我们一个比较快的下载地址。

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3-src.tar.gz

下载完毕后解压:

tar -zxvf hadoop-2.7.3-src.tar.gzcd hadoop-2.7.3-src

最后,就是用Maven编译Hadoop:

mvn package -Pdist,native -DskipTests –Dtar

这是一个比较漫长的过程,可能要等10~20来分钟。如果一切正常,那么运行完毕后,我们会看到成功编译的通知:

我是在虚拟机中,花了23分钟,我们的Hadoop X64版本就编译出来了。

编译好的Hadoop是在:

hadoop-dist/target/ 目录下,hadoop-2.7.3.tar.gz文件便是

我们可以把这个包下载到本地,或者传输到其他服务器,接下来就是用这个包安装Hadoop,具体安装配置过程参见我这篇博客。

在Ubuntu X64上编译Hadoop相关推荐

  1. linux编译aborted,Ubuntu Linux上编译kernel出错__stack_chk_fail

    Ubuntu Linux上编译kernel出错__stack_chk_fail 发布时间:2008-02-06 00:02:18来源:红联作者:SMuonon init/built-in.o: In ...

  2. 在Windows 7 x64 上编译libsvn

    这几天由于工作需要,需要Windows上Python 2.7 x64对应的svn模块.Win32版本可以从这个页面直接下载 http://sourceforge.net/projects/win32s ...

  3. linux编译32位的参数,几个Ubuntu 64上编译32位程序碰到的问题

    原本以为直接把源代码弄到Ubuntu 64bit的系统上直接编译就可以了.结果还很碰到了几个问题.这里总结一下,也当做个备份. 1. Vmware模拟64位系统的问题.在默认情况下,即使cpu支持64 ...

  4. Android-x86-6.0定制之路 - 在Ubuntu 16.04.5上编译

    前言 由于下载的开源系统没有系统签名,所以不可能针对系统去做什么定制. 首先,要去下载 Android-x86-6.0 的系统源码,再去尝试编译系统,如果编译成功并且能够正常运行的话,才能研究去定制系 ...

  5. 在Ubuntu 14.04 64bit上编译安装Crtmpserver trunk svn 811版本!

    这里仅在 在Ubuntu 12.04 64bit上搭建Crtmpserver视频点播服务 基础上补充一下在Ubuntu 14.04上编译安装Crtmpserver的方法,以作备忘.因为Ubuntu 1 ...

  6. 在CentOS/Debian/Ubuntu上编译安装最新版 GCC 8 , cmake 3 和ninja

    CentOS不像Debian/Ubuntu,不能直接从官方库中安装最新版的gcc/g++,只能源码编译安装. gcc下载地址:Index of /gnu/gcc 我选择了最新版本 gcc-8.3.0, ...

  7. 在32位Ubuntu 10.04上编译Android 2.3

    在32位Ubuntu 10.04上编译Android 2.3 http://www.ylmf.net/ubuntu/tips/2011021722700.html 本人在Ubuntu 10.04系统 ...

  8. 在 ubuntu 上编译 qtopia-2.2.0问题

    在ubuntu上编译 x86-qtopia,会出现很多错误. 如果想查看完成log信息,请使用该命令进行编译:./build -all 2>&1 | tee  build.log 1.首 ...

  9. 在ubuntu 12.04 x64下编译hadoop2.4

    自己编译hadoop:x64 1.安装依赖包 sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-confi ...

最新文章

  1. error MSB8008: 指定的平台工具集(v110)未安装或无效
  2. C++ 暂停Windows文件保护
  3. 23种设计模式C++源码与UML实现--外观模式
  4. Log4j2解决方案与复现略图
  5. 学成在线--0.项目概述
  6. ProtoBuf3语法指南(Protocol Buffers)_上
  7. java8简化的可变参数调用,Java8新特性--方法引用
  8. 工具的使用——windows操作系统的使用(创建宽带连接)
  9. Call to your teacher(深度搜索)
  10. LINUX使用chrpath更改编译结果的rpath
  11. mapper同时添加数据只能添加一条_神器之通用mapper的使用
  12. ASP 文件下载实例
  13. Excel表格撤销工作表保护
  14. 科技爱好者周刊(第 208 期):晋升制度的问题
  15. 鼠标切换虚拟桌面 autohotkey
  16. qprocess qt 打开word_Qt QProcess启动和关闭外部程序
  17. 全国高级计算机高新技术考证合格证书能申请人才入户吗?
  18. Python爬取微信公众号文章、点赞数
  19. luoguP1888 【三角函数】
  20. 从决策树学习谈到贝叶斯分类算法、EM、HMM

热门文章

  1. Description Resource Path Location Type Project configuration is not up-to-date with pom.xml. Select
  2. windows下c 用mysql数据库_Windows环境下C/C++访问PostgreSQL数据库
  3. dgi数据治理_国外数据治理模型比较
  4. java启动参数_Java启动参数的思考
  5. vba java 网页_通过VBA提交JSP网站的Java脚本表单
  6. dy96 .pw cc 05.php,05.php · 熟悉的陌生/php - Gitee.com
  7. C++ OpenCV 问题
  8. 一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
  9. 大数据学习笔记26:MR案例——双重排序(先按月份升序,再按利润降序)
  10. Java Web实训项目:西蒙购物网(中)