zoukankan      html  css  js  c++  java
  • hadoop源码编译——2.5.0版本

    强迫症必治:

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

    为了去掉这个警告!

    这个本地库是需要根据当前所用的环境编译的,否则就会出现这个警告,但是对我们的任务处理没什么影响。

    (但有博主提出:官方给的编译后的包是基于32位jvm编译的,在64位jvm上运行,不能发挥性能优势),既然不能发挥性能优势,那更不能忍了。

    1 下载源码包和基本环境

    https://archive.apache.org/dist/hadoop/common/

    我本次编译采用的是:hadoop-2.5.0

    下载hadoop-2.5.0-src.tar.gz文件即可

    上传源码文件到目录/home/xuan/opt/softwares下

    赋予执行权限:

    chmod u+x hadoop-2.5.0-src.tar.gz

    解压:

    tar –zxf hadoop-2.5.0-src.tar.gz

    进入解压后的目录,可以看到一个BUILDING.txt文件

    查看其内容,可以看到:

    Requirements:

    1* Unix System

    2* JDK 1.6+

    3* Maven 3.0 or later

    4* Findbugs 1.3.9 (if running findbugs)

    5* ProtocolBuffer 2.5.0

    6* CMake 2.6 or newer (if compiling native code)

    7* Zlib devel (if compiling native code)

    8* openssl devel ( if compiling native hadoop-pipes )

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

    条件1:我这里用的系统是CentOS6.4 (64位)

    条件2:JDK已经安装,版本: java version "1.7.0_67"

    条件3:Maven也已安装:Apache Maven 3.0.5

    (maven下载地址https://archive.apache.org/dist/maven/maven-3/,配置可以参考官网、博客,跟java的环境变量配置是类似的)

    条件9:必须我们的虚拟机系统必须能联网

    2编译准备

    切换到root用户

    安装svn

    yum install svn

    (这步可以不做的其实,我们的源码都已经下载好了,不需要通过它去下载,未必有我们自己下载快呢)

    条件4:非必须的,适用于查找BUG的

    条件6:安装autoconf automake libtool cmake(6,7,8是编译native code需要的)

    yum install autoconf automake libtool cmake

    条件7:安装ncurses-devel

    yum install ncurses-devel

    条件8:安装openssl devel

    yum install openssl-devel

    安装gcc

    yum install gcc*

    如果使用yum安装上述软件的时候,出现y/n,则直接按下键盘的y就好啦,这个是是否下载一些依赖包吧,其实应该加上-y参数的,反正都要下的。(也有的博主是没做这一步的)

    条件5:安装protobuf(必须的)

    protoc buffer是hadoop的通信工具

    这里要求的是2.5.0版本,但是https://code.google.com/p/protobuf/downloads/list

    嗯,之前google code不是不做了嘛。而且翻墙也难,于是在

    http://www.tuicool.com/articles/jM7Nn2/

    上述文章中给的地址中下载了该历史版本

    (事实上现在移动到了在github上,的确也能下载到protobuf,点击分支branch,再点击tags,就可以找到2.5.0啦,而且,有的博主使用3.0的版本还报错了呢)

    上传到linux的/home/xuan/opt/softwares下

    赋予执行权限,解压,并进入所在目录。

    执行如下命令安装(要记得进入目录再执行这些命令哦)

    ./configure

    make

    make check

    make install

    这个是源码包的安装方式

    http://zyjustin9.iteye.com/blog/2026579

    其中make check不是必要的吧,只不过是为了检查是否被第三方给修改了

    这个过程有点长哈,不要紧张,哈哈。

    (有的博文说要安装完成后,配置环境变量PROTOC_HOME的,我参考的文档没设置,大部分是不设置滴)

    其实不设置,直接protoc –version,就可以看到返回:

    libprotoc 2.5.0

    3编译源码

    进入我们源码解压后的目录/home/xuan/opt/softwares/hadoop-2.5.0-src,直接执行如下的命令:

    mvn package -Pdist,native -DskipTests –Dtar

    这个命令,在中也给我们写好啦:

    Create source and binary distributions with native code and documentation:

      $ mvn package -Pdist,native,docs,src -DskipTests -Dtar

    我们主要是native,而不是获取code and documentation,所以就省去,docs,src啦

    这个命令的执行过程很长,要求保持网络畅通(我居然从11:30一直编译到近13:00)

    (第一次运行该命令的时候我去吃饭啦,回来发现出错,于是…看着黑客表演看了一个半小时呢~(≧▽≦)/~)

    好吧,我的网速是有多慢……………….二三十分种是真的嘛?

    4

    编译完成后

    在/home/xuan/opt/softwares目录的hadoop-2.5.0-src/hadoop-dist/target目录下(即/home/xuan/opt/softwares/hadoop-2.5.0-src/hadoop-dist/target),可以看到

    [xuan@xuan-hadoop target]$ ll

    total 390200

    drwxr-xr-x 2 root root      4096 Aug  1 13:07 antrun

    -rw-r--r-- 1 root root      1637 Aug  1 13:07 dist-layout-stitching.sh

    -rw-r--r-- 1 root root       654 Aug  1 13:07 dist-tar-stitching.sh

    drwxr-xr-x 9 root root      4096 Aug  1 13:07 hadoop-2.5.0

    -rw-r--r-- 1 root root 132941160 Aug  1 13:07 hadoop-2.5.0.tar.gz

    -rw-r--r-- 1 root root      2745 Aug  1 13:07 hadoop-dist-2.5.0.jar

    -rw-r--r-- 1 root root 266585127 Aug  1 13:07 hadoop-dist-2.5.0-javadoc.jar

    drwxr-xr-x 2 root root      4096 Aug  1 13:07 javadoc-bundle-options

    drwxr-xr-x 2 root root      4096 Aug  1 13:07 maven-archiver

    drwxr-xr-x 2 root root      4096 Aug  1 13:07 test-dir

    (必要的时候应当改变其所属用户和组吧)

    再深入路径,可以在

    /home/xuan/opt/softwares/hadoop-2.5.0-src/hadoop-dist/target/hadoop-2.5.0/lib下找到

    native,将此目录替换掉

    /home/xuan/opt/modules/hadoop-2.5.0/lib下的native目录就好了(当然,原来的那一个要备份啦,不然出问题后悔就来不及啦)

    sbin/start-dfs.sh

    sbin/start-yarn.sh

    再运行一个wordcount示例检验之

    bin/Hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/xuan/mapreduce/wordcount/input /user/xuan/mapreduce/wordcount/outputTest

    bin/Hadoop dfs –cat /user/xuan/mapreduce/wordcount/outputTest/part*

    于是发现,好啦。

    这里还有一个坑,编译完测试完,在写本篇作业笔记的时候,发现:

    JDK的版本不对了啊,查看了下/etc/profile,发现JAVA_HOME配置是对的

    再用echo ${PATH}查看path,并没有发现痕迹,但是卢哥和戴哥指出,在/etc/profile中改为:export PATH=$JAVA_HOME:$PATH就可以啦,因为path本来是从前往后读的,这点我也想到了呀,不然我也不会去查找path,但是path中没发现明显的迹象。而实际上,

    [root@xuan-hadoop bin]# pwd

    /usr/bin

    [root@xuan-hadoop bin]# ll /usr/bin|grep java

    -rwxr-xr-x  1 root root       5000 May 10 17:38 gjavah

    lrwxrwxrwx  1 root root         22 Aug  1 10:48 java -> /etc/alternatives/java

    参考:

    http://hyz301.iteye.com/blog/2235331

    嗯,source /etc/profile。再次查看java –version,一切就Ok啦。

    主要参考:

    http://www.cnblogs.com/shishanyuan/p/4164104.html#undefined(本文参考)

    http://www.cnblogs.com/hanganglin/p/4349919.html(辅助,对照验证)

    https://www.zybuluo.com/awsekfozc/note/213815(可以修改jar包下载的来源,提高编译的速度)

    http://linxiao.iteye.com/blog/2269047(从github上下载的protobuf,装了findbugs,没装gcc,估计是它系统就有)

    http://liubao0312.blog.51cto.com/2213529/1557657(从集群角度)

    http://my.oschina.net/jeeker/blog/619275

  • 相关阅读:
    Your branch and 'origin/master' have diverged, and have # and # different commits each, respectively
    testng dataprovider 的几种用法以及Java中的二维数组
    python 类属性 实例属性 类方法 实例方法 静态方法(转载)
    Webdriver中PageFactory的正确用法
    Selenium webdriver在最开始打开的时候浏览器的地址栏会出现data的解决方法
    Selenium webdriver如何处理confirm对话框的问题
    SoapUI 引用第三方jar包和引用Groovy脚本
    git rebase -i 合并commit
    Git 撤销commit的注意事项
    单进程执行
  • 原文地址:https://www.cnblogs.com/xuanlvshu/p/5727149.html
Copyright © 2011-2022 走看看