分享

hadoop2.2.0在centos6.5 64位系统上编译

 大数据与云计算 2014-10-20
1、安装JDK1.7

在hadoop官方提供的SVN或FTP目录下,只有32位的hadoop源码或编译包,没有64位的,如果需要64位的可以在网上下载,但可能还是存在问题,最好的办法就是在自己的64位系统上进行编译。

说明:

1、  机器得连网,如果没联网找可以联网的机器下载,但是编译时还是要下载一些东西,所以,实在不行。最好找相同平台(可以是虚拟机)能上网的机器做下面工作,弄好了再把编译好的代码包拷回来。

2、  下面所有的命令操作中,‘#’开头的是在root用户进行,‘$’开头的是在普通用户下进行

工具/原料

  • CentOS-x86_64位系统
  • 保持电脑联网

一、预先安装必要软件

  1. 1

    需要的软件:java, svn, autoconf, automake, libtool, ncurses-devel, openssl-devel, gcc, lzo-devel, zlib-devel, znt, maven, protobuf, cmake

     

    检测系统中是否已安装了某一软件命令:rpm -qa|grep 软件名,如检测系统中是否安装了svn:

    $ rpm -qa|grep svn

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
  2. 2

    如果已安装,则跳过,如果没有安装,用命令:yum install svn进行安装,如:

    $ yum install svn

     

    如果yum命令安装失败(找不到相应的包),则需手动下载相应的软件包进行安装,比如maven, protobuf这两个个软件;

    END

二、安装maven

  1. 1

    软件包:apache-maven-3.0.5-bin.tar.gz

    不要使用最新的Maven3.1.1,与Maven3.0.x存在兼容性问题,所以老是出现java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter之类的错误。选择3.0.5版本:apache-maven-3.0.5-bin.tar.gz

    将apache-maven-3.0.5-bin.tar.gz移动到/usr目录(软件包所在目录):

    # mv ./apache-maven-3.0.5-bin.tar.gz /usr

     

    进入/usr目录,解压(/usr目录):

    # tar –zxvf apache-maven-3.0.5-bin.tar.gz ./

     

    删除解压后的压缩包(/usr目录):

    # rm –rf apache-maven-3.0.5-bin.tar.gz

     

    将/usr / apache-maven-3.0.5/bin加到环境变量中

    # vi /etc/profile

    在PATH行的最后加上“:/usr/apache-maven-3.0.5/bin”

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
  2. 2

    使配置生效:

    # source /etc/profile

     

    验证是否安装成功:

    # mvn –version

     

    若打印以下图相关信息,则成功:

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
    END

三、安装protobuf

  1. 1

    软件包:protobuf-2.5.0.tar.gz

    将protobuf-2.5.0.tar.gz移动到/usr目录(软件包所在目录):

    # mv ./ protobuf-2.5.0.tar.gz /usr

     

    进入/usr目录,解压(/usr目录):

    # tar –zxvf protobuf-2.5.0.tar.gz ./

     

    删除解压后的压缩包(/usr目录):

    # rm –rf protobuf-2.5.0.tar.gz

     

    进入/usr/protobuf-2.5.0目录:

    # cd /usr/protobuf-2.5.0

     

  2. 2

    依次执行下列命令:

    # ./configure

    # make

    # make check

    # make install

     

    检测是否安装成功:

    # protoc --version

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
    END

四、下载hadoop-2.2.0源码并编译

  1. 1

    在/usr目录进行

    用svn下载hadoop-2.2.0源码,命令:

    $ svn checkout 'http://svn./repos/asf/hadoop/common/tags/release-2.2.0'

     

    源码下载完成后,在/usr目录下会有一个release-2.2.0目录,进入该目录:

    $ cd /usr/release-2.2.0

    $ ls –la

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
  2. 2

    编译源码:

    $ mvn package -Pdist,native -DskipTests –Dtar --不生成文档

    $ mvn package -Pdist,native,docs,src -DskipTests –Dtar --生成文档,需要安装findbugs,并设置FINDBUGS_HOME环境变量

    编译的时间比较久,编译过程中会联网下载所需要的包,机子没联网是不会成功编译的。

     

    编译结束,最后打印的信息如下,每一项均是‘SUCCESS’,则编译成功:

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
  3. 3

    编译好的代码包在/usr/release-2.2.0/hadoop-dist/target目录下:

    $ cd /usr/release-2.2.0/hadoop-dist/target

    $ ls –la

    在CentOS-x86_64位机器下编译hadoop-2.2.0源码
  4. 4

    因为是在64位系统下编译的,所以编译出来的代码包是64位版本的;可以直接将/usr/release-2.2.0/hadoop-dist/target目录下的hadoop-2.2.0或者hadoop-2.2.0.tar.gz拷贝到其他linux64位平台进行搭建hadoop集群

    END

五、可能遇到的问题

  1. 1、Apache Hadoop Auth ................................ FAILURE

    最新的2.2.0 的Source Code 压缩包解压出来的code有个bug 需要patch后才能编译。否则编译hadoop-auth 会提示下面错误:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure:[ERROR] /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[84,13] cannot access org.mortbay.component.AbstractLifeCycle[ERROR] class file for org.mortbay.component.AbstractLifeCycle not found

     

    在Apache Hadoop Auth 这一步会失败:

    [INFO] Apache Hadoop Auth ................................ FAILURE  [9.266s]

    [INFO] Apache Hadoop Auth Examples ....................... SKIPPED

    ……

    ……

     

    解决办法:

    根据补丁Patch :https://issues./jira/browse/HADOOP-10110 所述:

     

    在 /usr/release-2.2.0/hadoop-common-project/hadoop-auth/pom.xml文件中,添加以下内容:

        <dependency>

          <groupId>org.mortbay.jetty</groupId>

          <artifactId>jetty-util</artifactId>

          <scope>test</scope>

    </dependency>

     

  2. 2、[INFO] Apache Hadoop Pipes ...............................FAILURE [5.295s]

    编译Pipes失败,报错信息:

    [INFO] Apache Hadoop Pipes ...............................FAILURE [5.295s]

    [INFO] Apache Hadoop Tools Dist.......................... SKIPPED

    ……

     

    一般是未安装ncurses-devel, openssl-devel造成

    解决办法:

    # yum install ncurses-devel

    # yum install openssl-devel

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多