Hadoop源码编译过程
一、
为什么要编译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源码编译过程的更多相关文章
- Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程
Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程 在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...
- 英蓓特Mars board的android4.0.3源码编译过程
英蓓特Mars board的android4.0.3源码编译过程 作者:StephenZhu(大桥++) 2013年8月22日 若要转载,请注明出处 一.编译环境搭建及要点: 1. 虚拟机软件virt ...
- 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. ...
- hadoop源码编译
为何要自行编译hadoop源码,往往是由于官方提供的hadoop发行版都是基于32位操作系统,在操作hadoop时会发生warn. 准备软件: 1)JDK 2)Hadoop源码 3)Maven 4 ...
- Hadoop源码编译环境搭建
准备工具: maven 3.0.0版本或者更高版本(配置中心库) protocbuff 2.5.0 http://www.zlib.net/ git bash(Windows环境可以用此工具执行编译命 ...
- nginx源码编译以及源码编译过程中遇到的问题
本文主要讲nginx安装以及安装过程中遇到的问题. 谈到nginx 必须聊聊它的起源和发展. nginx是由俄罗斯工程师Igor Sysoev 用C语言开发的一个免费开源的Web服务器软件,于2004 ...
- Hadoop2.7.2源码编译过程
目录 准备工作 jar包安装 源码编译 准备工作 CentOS可以联网,验证:ping www.baidu.com 是畅通的 jar 包准备(hadoop 源码.JDK8.maven.ant .pro ...
- android源码编译过程
1.下载好android源码包. 2.装好vm,ubuntu(如果能在实体机装linux更好). 3.安装所需要的deb包 在终端执行如下命令: sudo apt-get install flex b ...
- spring5源码编译过程中必经的坑
spring源码编译流程:Spring5 源码下载 第 一 步 : https://github.com/spring-projects/spring-framework/archive/v5.0.2 ...
随机推荐
- 学习笔记:Hashtable和HashMap
学了这么些天的基础知识发现自己还是个门外汗,难怪自己一直混的不怎么样.但这样的恶补不知道有没有用,是不是过段时间这些知识又忘了呢?这些知识平时的工作好像都是随拿随用的,也并不是平时一点没有关注过这些基 ...
- ABP理论学习之仓储
返回总目录 本篇目录 IRepository接口 查询 插入 更新 删除 其他 关于异步方法 仓储实现 管理数据库连接 仓储的生命周期 仓储最佳实践 Martin Fowler对仓储的定义 位于领域层 ...
- ABP理论学习之应用服务
返回总目录 本篇目录 IApplicationService接口 ApplicationService类 工作单元 数据库连接和事务管理 自动保存更改 更多 应用服务的生命周期 应用服务用于将领域逻辑 ...
- .Net开发笔记(十七) 应用程序扩展
在很多场合,我们需要在已有软件程序上增加一些新的功能,几乎所有原因是因为原有软件功能不能满足我们的需要,我们平时做的插件就属于这种情况,最常见的是VS IDE的插件开发,网上老外写的一篇关于插件开发的 ...
- Mac下配置Apache服务
这篇文章主要是针对Mac用户,第一次搭建本地开发环境的同学,已经搭建过的同学可以忽略. Mac自带的Apache还是XAMPP? That is a question. 其实自带的apache也够用了 ...
- 使用border做三角形
网站上经常会使用一些三角形,除了图片的方式,实际上利用border我们可以做出纯CSS的三角形.我们知道border是个边抖可以单独设置,当四个边相交的时候他们是什么时候改变的? .t0{ margi ...
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件. 1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语 ...
- SQL 必知必会
本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...
- ES6学习记录
前言 由于要学习React Native ,所以得用到ES6,故为运用React Native做一个铺垫 学习记录 一.变量 1.let let 与 var 作用相同,用于定义变量,但是作用域不同.不 ...
- sizzle编译函数
一个人去完成一件事情,如果派多个人去做的话,只要配合默契,效率比一个人做肯定要高,效率提高,所需的时间就减少了.如果只能一个人完成,那么必须设法提高自己的劳动效率,这个提高可以是量的改变也可以是质的改 ...