hadoop编译
说明:
hadoop版本:hadoop-2.5.0-cdh5.3.6
环境:centos6.4
必须可联网
hadoop 下载网址: http://archive.cloudera.com/cdh5/cdh/5/

其实编译还真就是体力活,按照官方的说明,一步步往下做就可以了,不过总会遇到坑。。
编译步骤:
1、下载源码,解压,本例中解压到 /opt/softwares下:
命令: tar -zxvf hadoop-2.5.0-cdh5.3.6-src.tar.gz -C /opt/softwares
2、进入到解压后的目录,有BUILDING.txt,查看:
命令: cd /opt/softwares/hadoop-2.5.0-cdh5.3.6
cat BUILDING.txt
文档里对编译事项进行了说明,如下图:

要编译hadoop,系统上必须要装这些软件。
(1)系统为linux,已符合条件
(2)JDK版本1.6以上:
本机装JDK1.7.0_67,配置好环境变量。在装JDK之前,建议大家首先看一下系统上有没有装,如果有装,低于1.6版本,最好先把之前的卸载掉再装。
装完之后,配置好环境变量,一定要用 java -version 查看一下是不是对应的版本号。
这里有个坑,如果你之前的版本没有卸载掉,低于1.6版本,那么编译的时候会默认之前的版本,然后就~~~你懂得。。。
(3)安装maven,本机安装maven3.0.5,,官网下载地址:https://archive.apache.org/dist/maven/maven-3/
装完之后,配置环境变量(参考官方说明)
(4)findbugs 这个我没有装,主要是查找bug用的。非必须的。
(5)protocolBuffer ,protoc buffer是hadoop的通信工具。
建议大家环境准备的差不多了,最后再装这个,后面会给出具体说明步骤
(6)安装cmake:
命令:yum install autoconf automake libtool cmake


显示complete即安装完成(下同,不再贴图)
(7)安装 zlib devel :很多系统都已经自带了。
命令:yum install zlib devel
(8)安装ncurses-devel
命令:yum install ncurses-devel
(9)安装openssl-devel
命令:yum install openssl-devel
(10)最后,一定要安装gcc相关组件
命令:yum install gcc*
(11)现在回头来看protobuf的安装:
下载protobuf-2.5.0.tar.gz: http://pan.baidu.com/s/1pJlZubT (这不是我的,参考网址:http://www.tuicool.com/articles/jM7Nn2/)
解压 tar -zxvf protobuf-2.5.0.tar.gz
进入到解压目录 protobuf-2.5.0:
(1)执行 ./configure
(2)执行 make
(3)执行 make check
(4)执行make install
完毕后,输入protoc –version,若返回如下结果,则安装成功:

到此,环境就准备的差不多了。
现在开始编译源码:
回头看BUILDING.txt,编译的命令:

既然编译了,那肯定是需要native本地库的。文档的话,没必要用(坑:最初几次编译,我都用了这个命令,mvn package -Pdist,native,docs -DskipTests -Dtar
一直不成功,都出错在同一个问题上,至今不知怎么解决。docs不用生成,没什么作用。改成mvn package -Pdist,native -DskipTests -Dtar,果然编译成功。
)
进入hadoop-2.5.0-cdh5.3.6目录,执行命令:
mvn package -Pdist,native -DskipTests -Dtar
等待编译成功。
这里说下编译的过程中出现的问题,主要就是下面图中所展示的问题:

一般出现这个问题,可能是由于网络原因,第一次没有下载成功,第二次继续下载,引起冲突。解决方法是,到maven
本地库中删掉这个jar包,重新运行命令编译。编译过程中,由于网络不佳,我这里出现了三次类似的问题,都是同样的方法解决的。
编译成功之后(差不多就是下面的图示O(∩_∩)O),

进入到hadoop-2.5.0-cdh5.3.6/hadoop-dist/target,可以看到编译好的hadoop.如果你之前就装了此版本的hadoop,只不过没有编译,会出现加载不了本地库的警告,那么可以进入到target/hadoop-2.5.0-cdh5.3.6/lib中,拷贝native放在你原来的hadoop对应的lib下,就不会再出现警告。
hadoop编译的更多相关文章
- Hadoop编译源码
Hadoop编译源码 克隆一个虚拟机 然后一步一步安装就行 安装所需:链接: https://pan.baidu.com/s/1jIZlQmi 密码: gggv 5.1 前期准备工作 1)CentOS ...
- Hadoop编译打包记录
Hadoop编译打包,基于2.7.2版本的源码. # 打包过程中需要使用到的工具 java -version mvn -version ant -version type protoc type cm ...
- Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...
- hadoop2.2.0 单机伪分布式(含64位hadoop编译) 及 eclipse hadoop开发环境搭建
hadoop中文镜像地址:http://mirrors.hust.edu.cn/apache/hadoop/core/hadoop-2.2.0/ 第一步,下载 wget 'http://archive ...
- Hadoop编译方法
伪分布式: hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml 1.在hadoop官网下载hadoop的源码(同步跟踪最新源代码) mv ...
- CentOS中用Nexus搭建maven私服,为Hadoop编译提供本地镜像
系统: CentOS release 6.6 (Final) Nexus:nexus-2.8.1-bundle.tar.gz,下载地址:https://sonatype-download.global ...
- Hadoop编译安装
本文转载自:http://www.cnblogs.com/shishanyuan/p/4701646.html 1.编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载m ...
- hadoop 编译代码及运行
搞定了hadoop配置之后,可以写代码运行了,首先要配一下CLASS_PATH,修改/etc/profile export JAVA_HOME=/usr/lib/jvm/java--openjdk-i ...
- [raspberry pi3] hadoop 编译搭建和配置
Causion: 只有一个raspberry pi3的就随便玩玩吧,瓶颈不在在cpu, 1 G的内存实在是太少了,跑个hadoop就很辛苦了 下面是瞎折腾的过程: oracle的arm jdk的安装过 ...
随机推荐
- Codeforces 242E:XOR on Segment(位上的线段树)
http://codeforces.com/problemset/problem/242/E 题意:给出初始n个数,还有m个操作,操作一种是区间求和,一种是区间xor x. 思路:昨天比赛出的一道类似 ...
- 安装及配置jdk和tomcat
系统变量 新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(如是 E:\Java\jdk1.7.0_25) 系统变量→找到 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\ ...
- linux内核设计与实现笔记 进程调度
转载:http://blog.chinaunix.net/uid-24919665-id-3013590.html
- QGis(三)查询矢量图层的要素属性字段值(转载)
QGis(三)查询矢量图层的要素属性字段值 https://github.com/gwaldron/osgearth/issues/489 当加载一个矢量图层后,如果要查看要素的属性字段值,则需要实现 ...
- 刪除預裝在windows 10 的app
刪除預裝在windows 10 的app 步驟: 方法一.(易於解除安裝的app) 1. →按"開始標誌" →"所有應用程式" →在想解除的程式圖示上" ...
- Mysql死锁问题解决方式 & 聚簇索引、隔离级别等知识
参考了这篇文章:http://www.cnblogs.com/LBSer/p/5183300.html <mysql死锁问题分析> 写的不错. 如果Mysql死锁,会报出: 1.1 死锁 ...
- Python计算一个项目中含有的代码行数
最近想要知道以前做过的project有多少行代码,因为文件太多,直接手工数效率太低,于是编写一个python程序用来计算一个project有多少代码行. 首先,在一个项目中,有很多子文件夹,子文件夹中 ...
- php 禁用eval( )函数
php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的. 但是eval()对于php安全来说具有很大的杀伤力,因此一般不用的情况下为了防 ...
- js原生设计模式——2面向对象编程之继承—new类式继承
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- swift webView的高度自适应内容
废话不多 直接上代码 //在webView的协议方法里实现以下代码 func webViewDidFinishLoad(webView: UIWebView) {//加载完成 // se ...