转载请标明出处:

http://blog.csdn.net/zwto1/article/details/50733753

介绍

本篇主要会涉及以下内容:

学会编译hadoop2.x源码

编译hadoop源码

为什么要编译

由于hadoop2.x 只支持Linux 32位,针对Linux 64位没有 native lib 库的支持,必须手动编译。所以下载的二进制包,当启动hadoop的时候,会出现如下警告:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

如何编译

在64位Linux下编译

首先打开hadoop2.x源码下的build.txt 查看编译说明:

Requirements:

* Unix System

* JDK 1.6+

* Maven 3.0 or later

* Findbugs 1.3.9 (if running findbugs)

* ProtocolBuffer 2.5.0

* CMake 2.6 or newer (if compiling native code)

* Internet connection for first build (to fetch all Maven and Hadoop dependencies)


  1. Maven main modules:
  2. hadoop (Main Hadoop project)
  3. -hadoop-project (Parent POM for all Hadoop Maven modules. )
  4. (All plugins & dependencies versions are defined here.)
  5. -hadoop-project-dist (Parent POM for modules that generate distributions.)
  6. - hadoop-annotations (Generates the Hadoop doclet used to generated the Javadocs)
  7. - hadoop-assemblies (Maven assemblies used by the different modules)
  8. - hadoop-common-project (Hadoop Common)
  9. - hadoop-hdfs-project (Hadoop HDFS)
  10. - hadoop-mapreduce-project (Hadoop MapReduce)
  11. - hadoop-tools (Hadoop tools like Streaming, Distcp, etc.)
  12. - hadoop-dist (Hadoop distribution assembler)

编译选项

  1. Building distributions:
  2. Create binary distribution without native code and without documentation:
  3. $ mvn package -Pdist -DskipTests -Dtar
  4. Create binary distribution with native code and with documentation:
  5. $ mvn package -Pdist,native,docs -DskipTests -Dtar
  6. Create source distribution:
  7. $ mvn package -Psrc -DskipTests
  8. Create source and binary distributions with native code and documentation:
  9. $ mvn package -Pdist,native,docs,src -DskipTests -Dtar
  10. Create a local staging version of the website (in /tmp/hadoop-site)
  11. $ mvn clean site; mvn site:stage -DstagingDirectory=/tmp/hadoop-site

编译前安装依赖包

  1. yum install autoconf automake libtool cmake
  2. yum install ncurses-devel
  3. yum install openssl-devel
  4. yum install lzo-devel zlib-devel gcc gcc-c++

查软件包是否没有装上:

  1. rpm -qa | grep autoconf

编译前安装maven:

下载:apache-maven-3.0.5-bin.tar.gz

解压:

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

设置环境变量:

  1. export MAVEN_HOME = /usr/local/maven
  2. export PATH=$PATH:$MAVEN_HOME/bin

执行命令:source /etc/profile或者 . /etc/profile

验证:mvn -v

编译前安装protobuf

下载:protobuf-2.5.0.tar.gz

解压:

  1. tar -zxvf protobuf-2.5.0.tar.gz

编译安装:

进入安装目录,进行配置,执行命令:

./configure

安装命令:

make & make install

编译前安装findbugs

下载:findbugs-3.0.0.tar.gz

解压:

  1. tar -zxvf findbugs-3.0.0.tar.gz

设置环境变量:

  1. export FINDBUGS_HOME = /usr/local/findbugs
  2. export PATH=$PATH:$FINDBUGS_HOME/bin

执行命令:source /etc/profile或者 . /etc/profile

验证:findbugs -version

MAVEN国内镜像配置

1、进入安装目录 /opt/modules/apache-maven-3.0.5/conf,编辑 settings.xml 文件

  1. 修改<mirrors>内容:
  2. <mirror>
  3. <id>nexus-osc</id>
  4. <mirrorOf>*</mirrorOf>
  5. <name>Nexus osc</name>
  6. <url>http://maven.oschina.net/content/groups/public/</url>
  7. </mirror>
  1. 修改<profiles>内容:
  2. <profile>
  3. <id>jdk-1.8</id>
  4. <activation>
  5. <jdk>1.8</jdk>
  6. </activation>
  7. <repositories>
  8. <repository>
  9. <id>nexus</id>
  10. <name>local private nexus</name>
  11. <url>http://maven.oschina.net/content/groups/public/</url>
  12. <releases>
  13. <enabled>true</enabled>
  14. </releases>
  15. <snapshots>
  16. <enabled>false</enabled>
  17. </snapshots>
  18. </repository>
  19. </repositories>
  20. <pluginRepositories>
  21. <pluginRepository>
  22. <id>nexus</id>
  23. <name>local private nexus</name>
  24. <url>http://maven.oschina.net/content/groups/public/</url>
  25. <releases>
  26. <enabled>true</enabled>
  27. </releases>
  28. <snapshots>
  29. <enabled>false</enabled>
  30. </snapshots>
  31. </pluginRepository>
  32. </pluginRepositories>
  33. </profile>

2、复制配置

将该配置文件复制到用户目录,使得每次对maven创建时,都采用该配置

* 查看用户目录【/home/hadoop】是否存在【.m2】文件夹,如没有,则创建

  1. $ cd /home/hadoop
  2. $ mkdir .m2
  3. * 复制文件
  4. $ cp /opt/modules/apache-maven-3.0.5/conf/settings.xml ~/.m2/

3.配置DNS

修改: vi /etc/resolv.conf

nameserver 8.8.8.8

nameserver 8.8.4.4

开始编译

Hadoop2.2 .0 有bug ,编译 之前需要先 fix bug

下载 hadoop2.x源码

解压

源码打patch,编辑目录$HADOOP_SRC_HOME/hadoop-common-project/hadoop-auth中的文件pom.xml,在第55行下增加以下内容:

  1. <dependency>
  2. <groupId>org.mortbay.jetty</groupId>
  3. <artfactId>jetty-util<artfactId>
  4. <scope>test</scope>
  5. </dependency>

这里编译的是hadoop2.7.1版本

mvn package –DskipTests –Pdist,native,docs -Dtar

报错

1.编译出错的话,如下有解决方式:

export MAVEN_OPTS=”-Xms256m -Xmx512m”

2.报错:java heap size

把虚拟机内存调大,然后重启虚拟机,重新编译

3.报错还有可能是maven下载jar的时候,网络出现问题,重新编译

CentOS编译成功界面:

上面是Cetos下的编译,ubuntu编译:

首先要安装的软件:

JDk

Maven

Findbugs

G++

Protobuf

Openssl

CMake

Ant

Ubuntu编译成功界面:

hadoop2.x源码编译的更多相关文章

  1. Hadoop源码编译过程

    一.           为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...

  2. Hadoop2.x源码-编译剖析

    1.概述 最近,有小伙伴涉及到源码编译.然而,在编译期间也是遇到各种坑,在求助于搜索引擎,技术博客,也是难以解决自身所遇到的问题.笔者在被询问多次的情况下,今天打算为大家来写一篇文章来剖析下编译的细节 ...

  3. hadoop-2.0.0-mr1-cdh4.2.0源码编译总结

    准备编译hadoop-2.0.0-mr1-cdh4.2.0的同学们要谨慎了.首先看一下这篇文章: Hadoop作业提交多种方案 http://www.blogjava.net/dragonHadoop ...

  4. hadoop-2.0.0-cdh4.2.1源码编译总结

    经过一个星期多的努力,这两个包的编译工作总算告一段落. 首先看一下这一篇文章: 在eclipse下编译hadoop2.0源码 http://www.cnblogs.com/meibenjin/arch ...

  5. hadoop2.0 eclipse 源码编译

    在eclipse下编译hadoop2.0源码 http://www.cnblogs.com/meibenjin/archive/2013/07/05/3172889.html hadoop cdh4编 ...

  6. hadoop-2.6.0源码编译问题汇总

    在上一篇文章中,介绍了hadoop-2.6.0源码编译的一般流程,因个人计算机环境的不同, 编译过程中难免会出现一些错误,下面是我编译过程中遇到的错误. 列举出来并附上我解决此错误的方法,希望对大家有 ...

  7. Hadoop2.7.2源码编译过程

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

  8. 从零教你如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码

    从零教你如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码http://www.aboutyun.com/thread-8211-1-1.html(出处: about云开发) ...

  9. Hadoop,HBase,Zookeeper源码编译并导入eclipse

    基本理念:尽可能的参考官方英文文档 Hadoop:  http://wiki.apache.org/hadoop/FrontPage HBase:  http://hbase.apache.org/b ...

随机推荐

  1. python多版本以及各种包管理

    python多版本以及各种包管理 python 包管理 各个版本 python版本管理 由于Python有2.x和3.x两个大的版本,而且每一个工程建立所用的各种包的版本也不尽相同(如flask1.x ...

  2. PHP秒杀系统全方位设计(二)

    商品页面开发 静态化展示页面[效率要比动态PHP高很多,PHP程序需要解析等步骤,本身就需要很多流程,整个下来PHP的处理花的时间和资源要多] 商品状态的控制 开始前.进行中.库存不足.结束 数据逻辑 ...

  3. Ubuntu14.04+Nginx+MySql+PHP环境配置

    http://www.cnblogs.com/gophper/p/4793711.html

  4. POJ - 1733 Parity game 种类并查集+离散化

    思路:d(i, j)表示区间(i, j]的1的个数的奇偶性.输入最多共有5000*2个点,需要离散化处理一下.剩下的就是并查集判冲突. AC代码 #include <cstdio> #in ...

  5. POJ - 2492 种类并查集

    思路:保存每个点与其父节点的关系,注意合并和路径压缩即可. AC代码 #include <cstdio> #include <cmath> #include <cctyp ...

  6. 网站入住各大搜索引擎的seo优化技巧

    最近在公司上班的时候做了一个工业物联网的项目,上层主管提出要求,让这个网站入住各大搜索引擎,也就是说在各大搜索引擎中输入与网站相关的关键字就能搜索到我们自己的网站.刚开始自己一脸懵逼,因为之前自己并没 ...

  7. hive:条件判断函数

    参考hive常用运算. •If函数: if •非空查找函数: COALESCE •条件判断函数:CASE • If 函数 : if 语法: if(boolean testCondition, T va ...

  8. 编译、裁剪、安装、删除 Ubuntu内核和模块管理

    一.下载最新内核文件 地址:http://www.kernel.org,一般下载Full Source版本. 下载完毕后,放到任意文件夹中,使用命令: tar jxvf linux-x.x.x.tar ...

  9. 关于linux下的嵌入式文件系统以及flash文件系统选择

    嵌入式linux下常见的文件系统 • RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 • RamFS:利用VFS自身结构而形成的内存文件 ...

  10. FusionWidgets DrawingPad图

    1.数据源 DrawingPad.xml: <?xml version="1.0" encoding="UTF-8"?> <chart bgC ...