转载请标明出处:

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)


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

编译选项

Building distributions:
Create binary distribution without native code and without documentation:
  $ mvn package -Pdist -DskipTests -Dtar
Create binary distribution with native code and with documentation:
  $ mvn package -Pdist,native,docs -DskipTests -Dtar
Create source distribution:
  $ mvn package -Psrc -DskipTests
Create source and binary distributions with native code and documentation:
  $ mvn package -Pdist,native,docs,src -DskipTests -Dtar
Create a local staging version of the website (in /tmp/hadoop-site)
  $ mvn clean site; mvn site:stage -DstagingDirectory=/tmp/hadoop-site

编译前安装依赖包

yum install autoconf automake  libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install lzo-devel zlib-devel gcc gcc-c++

查软件包是否没有装上:

rpm  -qa | grep autoconf

编译前安装maven:

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

解压:

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

设置环境变量:

export MAVEN_HOME = /usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin

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

验证:mvn -v

编译前安装protobuf

下载:protobuf-2.5.0.tar.gz

解压:

tar  -zxvf protobuf-2.5.0.tar.gz

编译安装:

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

./configure

安装命令:

make & make install

编译前安装findbugs

下载:findbugs-3.0.0.tar.gz

解压:

tar  -zxvf findbugs-3.0.0.tar.gz

设置环境变量:

export FINDBUGS_HOME = /usr/local/findbugs
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 文件

 修改<mirrors>内容:
    <mirror>
        <id>nexus-osc</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror> 
修改<profiles>内容:

<profile>
    <id>jdk-1.8</id>
    <activation>
        <jdk>1.8</jdk>
    </activation>
    <repositories>
        <repository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>local private nexus</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
    </profile>  

2、复制配置

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

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

$ cd /home/hadoop
$ mkdir .m2
* 复制文件
$ 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行下增加以下内容:

<dependency>
   <groupId>org.mortbay.jetty</groupId>
    <artfactId>jetty-util<artfactId>
    <scope>test</scope>
  </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. ASP.NET Core的身份认证框架IdentityServer4--(1)服务配置

    官网文档地址:点我点我 准备 创建一个名为IdentityServer的ASP.NET Core Web Api 项目,端口5000 创建一个名为Api的ASP.NET Core Web Api 项目 ...

  2. Spring框架系列之AOP思想

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.AOP概述 (1).什么是 AOP AOP 为 Aspect Oriented Progra ...

  3. 初识vue——起步

    一.目录结构: 我们经常使用的是以下几个目录: 1.assets:静态资产文件:在vue组件中,所有组件中,所有模板和CSS都会被vue-html-loader和css-loader解析,并查找资源u ...

  4. 1014. Waiting in Line (模拟)

    n个窗口就有n个队列,模拟这n个队列就可以了.需要注意的是,一个人在选择排队窗口的时候,他会选择排队人数最少的窗口,如果存在多个窗口排队的人数相同,那么他会选择编码最小的窗口. Note that s ...

  5. mybatis与spring的整合(使用sqlSession进行crud)

    上次介绍了用接口的方法极大的节省了dao层,只需通过 配置文件和接口就可以实现,这次介绍的是通过splsession来实现dao,这种方法比较灵活: 先不说,上配置文件: 1.web.xml < ...

  6. QT creator 其他资源(image)的添加以及简单利用

    QT creator 添加一些资源文件  :https://www.cnblogs.com/cszlg/p/3234786.html(转自园子) 补充: 补充:如果要给生成的exe可执行文件更换一个自 ...

  7. LinkedHashMap概述

    1. LinkedHashMap概述: LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap. LinkedH ...

  8. openstack-ocata-身份验证2

    Identity service 一.身份服务概述 OpenStack身份管理服务提供一个单点集成身份验证.授权和目录服务. 身份服务通常是第一个服务用户与之交互.一旦身份验证,最终用户可以使用自己的 ...

  9. ERROR 1045 (28000): Access denied for user xxx & ERROR 1449 (HY000): The user specified as a definer xxx does not exists

    今天在一个修改过权限的MySQL数据库遇到了"ERROR 1045 (28000): Access denied for user 'xxx'@'xxx.xxx.xxx.xxx' (usin ...

  10. MySQL Crash Errcode: 28 - No space left on device

    一台MySQL服务器突然Crash了,检查进程 ps -ef | grep -i mysql 发现mysqld进程已经没有了, 检查错误日志时发现MySQL确实Crash了.具体如下所示: 注意日志中 ...