一、          
为什么要编译Hadoop源码

Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。

native目录是本地库,位于hadoop-2.x.x/lib/native目录下,仅支持linux和unix操作系统。

hadoop中的zlib和gzip模块会加载本地库,如果加载失败,会提示:

16/07/06 12:18:24 WARN util.NativeCodeLoader:
Unable to load native-hadoop library for your platform... using builtin-java
classes where applicable

可以在core-site.xml中配置hadoop.native.lib值是否使用本地库,默认值为true。

官方提供的hadoop-2.x版本中,native文件都是32位编译的,在实际使用64位环境中,为了能让Hadoop更高效地运行,最好还是在本地编译Hadoop源码,用本地编译好的本地库(native目录)替换官方安装包里自带的本地库。

二、          
编译源码的环境要求

1、   必须在Linux下进行

2、   Java JDK必须为1.6以上

3、   Maven 版本必须为3.0以上

4、   安装Findbugs插件,版本1.3.9

5、   安装CMake编译工具,版本2.6

6、   安装zlib devel

7、   安装openssl devel

8、   编译时必须可以连接互联网,因为需要yum下载软件。

三、          
用到的软件包

1、   apache-maven-3.0.5-bin.tar.gz

2、   cmd_markdown_win64.zip

3、   findbugs-1.3.9.tar.gz

4、   hadoop-2.5.0-src.tar.gz

5、   jdk-7u67-linux-x64.tar.gz

6、   native-2.5.0.tar.gz

7、   protobuf-2.5.0.tar.gz

四、          
Hadoop2.x源码编译步骤

1、   解压Hadoop源码安装包

(1)    [hadoop@bigdata-senior01 sofeware]$ tar -zxf 
hadoop-2.5.0-src.tar.gz -C /opt/modules/

(2)    查看是否已经解压成功

[hadoop@bigdata-senior01
sofeware]$ ll /opt/modules/

total 12

drwxr-xr-x. 11
hadoop hadoop 4096 Jul  4 17:48 hadoop-2.5.0

drwxr-xr-x 
15 hadoop hadoop 4096 Aug  7  2014 hadoop-2.5.0-src

2、   解压JDK

(1)    [hadoop@bigdata-senior01 sofeware]$ tar -zxf jdk-7u67-linux-x64.tar.gz
-C /opt/modules/

(2)    查看是否已经解压成功

[hadoop@bigdata-senior01
sofeware]$ ll /opt/modules/

total 12

drwxr-xr-x. 11
hadoop hadoop 4096 Jul  4 17:48 hadoop-2.5.0

drwxr-xr-x 
15 hadoop hadoop 4096 Aug  7  2014 hadoop-2.5.0-src

drwxr-xr-x. 
8 hadoop hadoop 4096 Jul 26  2014 jdk1.7.0_67

3、   root用户配置Java
JDK环境变量

(1)    root用户进入/etc/profile文件

[root@bigdata-senior01
sofeware]$ vim /etc/profile

(2)    配置JDK_HOME和PATH

export
JAVA_HOME="/opt/modules/jdk1.7.0_67"

export
PATH=$JAVA_HOME/bin:$PATH

(3)    生效配置文件

[root@bigdata-senior01
sofeware]$ source /etc/profile

(4)    确认Jave配置成功

[root@bigdata-senior01
sofeware]$ java -version

java version
"1.7.0_67"

Java(TM) SE
Runtime Environment (build 1.7.0_67-b01)

Java HotSpot(TM)
64-Bit Server VM (build 24.65-b04, mixed mode)

4、   root用户安装Maven

(1)    Apache Maven,是一个软件项目管理及自动构建工具。Maven 完成项目生命周期的所有阶段,包括验证、代码生成、编译、测试、打包、集成测试、安装、部署、以及项目网站创建和部署。maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。

对于需要的依赖,Maven可以从配置的远程仓库里按需自动下载到本地仓库

(2)    解压Maven

[hadoop@bigdata-senior01
sofeware]$ tar -zxf apache-maven-3.0.5-bin.tar.gz -C /opt/modules/

(3)    配置/etc/profile文件

export
MAVEN_HOME="/opt/modules/apache-maven-3.0.5"

export
PATH=$MAVEN_HOME/bin:$PATH

(4)    生效配置文件

[root@bigdata-senior01
sofeware]# source /etc/profile

(5)    确认Maven配置成功

[root@bigdata-senior01
sofeware]# mvn -version

Apache Maven
3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 21:51:28+0800)

Maven home:
/opt/modules/apache-maven-3.0.5

Java version:
1.7.0_67, vendor: Oracle Corporation

Java home:
/opt/modules/jdk1.7.0_67/jre

Default locale:
en_US, platform encoding: UTF-8

OS name:
"linux", version: "2.6.32-504.el6.x86_64", arch:
"amd64", family: "unix"

5、   root用户安装gcc/gcc-c++/make

[root@bigdata-senior01
sofeware]# yum -y install gcc gcc-c++

接下来yum自动安装,直到安装成功会显示Complete!

6、   普通用户下安装protobuf

(1)    [hadoop@bigdata-senior01 sofeware]$ tar -zxf protobuf-2.5.0.tar.gz
-C /opt/modules/

(2)    [hadoop@bigdata-senior01 sofeware]$
/opt/modules/protobuf-2.5.0/configure --prefix=/usr/local/protoc

(3)    [hadoop@bigdata-senior01 sofeware]$ cd /opt/modules/protobuf-2.5.0

(4)    [root@bigdata-senior01 protobuf-2.5.0]# make

(5)    [root@bigdata-senior01 protobuf-2.5.0]# make install

(6)    配置/etc/profile

export
PROTOBUF_HOME="/usr/local/protoc"

export
PATH=$PROTOBUF_HOME/bin:$PATH

(7)    生效配置文件

[root@bigdata-senior01
sofeware]# source /etc/profile

(8)    确认配置成功

[root@bigdata-senior01
protobuf-2.5.0]# protoc --version

libprotoc 2.5.0

7、   root用户下下载安装CMake、openssl、ncurses

(1)    安装Cmake

[root@bigdata-senior01
protobuf-2.5.0]# yum -y install cmake

(2)    安装openssl

[root@bigdata-senior01
protobuf-2.5.0]# yum install openssl-devel

(3)    安装ncurses

[root@bigdata-senior01
protobuf-2.5.0]# yum -y install ncurses-devel

8、   添加maven镜像

(1)    编辑maven配置文件settings.xml

(2)    添加镜像

<mirror>

<id>nexus-osc</id>

<mirrorOf>*</mirrorOf>

<name>Nexus osc</name>

<url>http://maven.oschina.net/content/groups/public</url>

</mirror>

9、   编译Hadoop源码

(1)    切换到普通用户:[root@bigdata-senior01
protobuf-2.5.0]# su hadoop

(2)    进入hadoop源码目录:[hadoop@bigdata-senior01
protobuf-2.5.0]$ cd /opt/modules/hadoop-2.5.0-src/

(3)    执行编译,编译过程中需要从yum仓库下载依赖包,需要一段时间

[hadoop@bigdata-senior01
hadoop-2.5.0-src]$ mvn package
–DskipTests –Pdist,native

(4)   
执行过程中如果报错,发现是下载依赖失败,可以换个apache的maven镜像地址后能够正常下载。

https://repo.maven.apache.org/maven2

10、          
编译后,将native目录替换之前安装的hadoop lib 目录下的native目录。

(1)    将编译后的native目录覆盖本地原有的native目录

[hadoop@bigdata-senior01 hadoop-2.5.0-src]$ cp -R
/opt/modules/hadoop-2.5.0-src/hadoop-dist/target/hadoop-2.5.0/lib/native/*  
/opt/modules/hadoop-2.5.0/lib/native/

(2)    进入${HADOOP_HOME}目录启动HDFS

[hadoop@bigdata-senior01 hadoop-2.5.0-src]$ cd ${HADOOP_HOME}

[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/hadoop-daemon.sh start
namenode

[hadoop@bigdata-senior01 hadoop-2.5.0]$ sbin/hadoop-daemon.sh start
datanode

(3)    执行dfs命令就不会有警告了

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -ls /

附件列表

Hadoop源码编译过程的更多相关文章

  1. Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程

    Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程   在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...

  2. 英蓓特Mars board的android4.0.3源码编译过程

    英蓓特Mars board的android4.0.3源码编译过程 作者:StephenZhu(大桥++) 2013年8月22日 若要转载,请注明出处 一.编译环境搭建及要点: 1. 虚拟机软件virt ...

  3. hadoop 源码编译

    hadoop 源码编译 1.准备jar 1) hadoop-2.7.2-src.tar.gz 2) jdk-8u144-linux-x64.tar.gz 3) apach-ant-1.9.9-bin. ...

  4. hadoop源码编译

    为何要自行编译hadoop源码,往往是由于官方提供的hadoop发行版都是基于32位操作系统,在操作hadoop时会发生warn.   准备软件: 1)JDK 2)Hadoop源码 3)Maven 4 ...

  5. Hadoop源码编译环境搭建

    准备工具: maven 3.0.0版本或者更高版本(配置中心库) protocbuff 2.5.0 http://www.zlib.net/ git bash(Windows环境可以用此工具执行编译命 ...

  6. nginx源码编译以及源码编译过程中遇到的问题

    本文主要讲nginx安装以及安装过程中遇到的问题. 谈到nginx 必须聊聊它的起源和发展. nginx是由俄罗斯工程师Igor Sysoev 用C语言开发的一个免费开源的Web服务器软件,于2004 ...

  7. Hadoop2.7.2源码编译过程

    目录 准备工作 jar包安装 源码编译 准备工作 CentOS可以联网,验证:ping www.baidu.com 是畅通的 jar 包准备(hadoop 源码.JDK8.maven.ant .pro ...

  8. android源码编译过程

    1.下载好android源码包. 2.装好vm,ubuntu(如果能在实体机装linux更好). 3.安装所需要的deb包 在终端执行如下命令: sudo apt-get install flex b ...

  9. spring5源码编译过程中必经的坑

    spring源码编译流程:Spring5 源码下载 第 一 步 : https://github.com/spring-projects/spring-framework/archive/v5.0.2 ...

随机推荐

  1. 采访Philipp Crocoll:安卓平台上整合Java和C#

    在这个采访中,我们跟开源开发者Philipp Crocoll讨论了关于Keepass2Android的相关话题.Keepass2Android不仅具有强大的密码存储的功能,还是在一个单独的安卓应用同时 ...

  2. 一小时学会C# 6

    c# 6已经出来有一段时间了,今天我们就详细地看一下这些新的特性. 一.字符串插值 (String Interpolation) C# 6之前我们拼接字符串时需要这样 var Name = " ...

  3. 入手Invicta 8926 OB潜水自动机械腕表

    前个月前就想入手一款手表了,之前在关注和学习.询问他人选哪样的表好,前些天还在看精工Seiko机械表系列,今凌晨有朋友给我推荐这款Invicta 8926系列手表,我一看便喜欢了. 在网上也是搜索了很 ...

  4. div非弹出框半透明遮罩实现全屏幕遮盖css实现

    IE浏览器下设置元素css背景为透明: background-color: rgb(0, 0, 0); filter: alpha(opacity=20); 非IE浏览器下设置元素css背景为透明: ...

  5. HTML5入门以及新标签

    HTML5 学习总结(一)--HTML5入门与新增标签   目录 一.HTML5概要 1.1.为什么需要HTML5 1.2.什么是HTML5 1.3.HTML5现状及浏览器支持 1.4.HTML5特性 ...

  6. 【WP开发】读写剪贴板

    在WP 8.1中只有Silverlight App支持操作剪贴板的API,Runtime App并不支持.不过,在WP 10中也引入了可以操作剪贴板的API. 顺便说点题外话,有人会说,我8.1的开发 ...

  7. ClickOnce部署(1):一些发布方式

    ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌.因此,有关ClickOnce的介绍,各位朋友可以直接查找MSDN ...

  8. MVC4做网站后台:用户管理 —用户

    这块进行用户管理,可以浏览.查询已注册的用户,修改用户资料,删除用户等.没有做添加用户,不知是否必要.列表页还是使用easyui的datagrid.这个思路跟用户组的方式差不多. 1.接口Interf ...

  9. Eclipse迁移到Android studio步骤如下:

    一.从Eclipse中导出:1.将你的ADT插件版本升级到22.0以上.2.在Eclipse中,选择File-->Export.3.在弹出的导出窗口中,打开Android的文件夹,选择“Gene ...

  10. 简单java在线测评程序

    简单java程序在线测评程序 一.前言 大家过年好!今年的第一篇博客啊!家里没有网,到处蹭无线!日子过得真纠结!因为毕设的需求,简单写了一个java程序在线测评程序,当然也可以在本地测试. 二.思路 ...