因为搭建Hadoop环境的时候,所用的系统镜像是emi-centos-6.4-x86_64,是64位的,而hadoop是默认是32的安装包。这导致我们很多操作都会遇到这个问题(Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /opt/hadoop-2.4.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.)
为了解决此问题,需要重新编译hadoop。把生成的 hadoop-2.4.0-src/hadoop-dist/target/hadoop-2.4.0/lib/native 覆盖到 /opt/hadoop-2.4.0/lib/native。

以下是具体的编译步骤:

1. 安装下面的软件

[root@hd1 software]# yum install lzo-devel zlib-devel gcc autoconf automake libtool ncurses-devel openssl-deve

2. 安装Maven

[hxiaolong@hd1 software]$ wget http://mirror.esocc.com/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
[hxiaolong@hd1 software]$ tar zxf apache-maven-3.0.-bin.tar.gz -C /opt [hxiaolong@hd1 software]$ vi /etc/profile
export MAVEN_HOME=/opt/apache-maven-3.0.
export PATH=$PATH:$MAVEN_HOME/bin

3. 安装Ant

[hxiaolong@hd1 software]$ wget http://mirror.bit.edu.cn/apache/ant/binaries/apache-ant-1.9.4-bin.tar.gz
[hxiaolong@hd1 software]$ tar zxf apache-ant-1.9.-bin.tar.gz -C /opt [hxiaolong@hd1 software]$ vi /etc/profile
export ANT_HOME=/opt/apache-ant-1.9.
export PATH=$PATH:$ANT_HOME/bin

4. 安装Findbugs

[hxiaolong@hd1 software]$ wget http://prdownloads.sourceforge.net/findbugs/findbugs-2.0.3.tar.gz?download
[hxiaolong@hd1 software]$ tar zxf findbugs-2.0..tar.gz -C /opt [hxiaolong@hd1 software]$ vi /etc/profile
export FINDBUGS_HOME=/opt/findbugs-2.0.
export PATH=$PATH:$FINDBUGS_HOME/bin

5. 安装protobuf

[hxiaolong@hd1 software]$ tar zxf protobuf-2.5..tar.gz
[hxiaolong@hd1 software]$ cd protobuf-2.5.
[hxiaolong@hd1 software]$ ./configure
[hxiaolong@hd1 software]$ make
[hxiaolong@hd1 software]$ make install

说实话,上面这种编译、安装方式挺麻烦的。很容易碰到各种依赖问题。这里推荐用yum install来安装。

[root@hd1 protobuf-2.5.]# yum install protobuf

6. 编译Hadoop

1) 在name节点上先编译hadoop

[hxiaolong@hd1 software]$ wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0-src.tar.gz
[hxiaolong@hd1 software]$ cd hadoop-2.4.-src [hxiaolong@hd1 software]$ mvn package -DskipTests -Pdist,native -Dtar

中间过程出错了,错误信息如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-common: An Ant BuildException has occured: Execute failed: java.io.IOException: Cannot run program "cmake" (in directory "/home/hxiaolong/software/hadoop-2.4.0-src/hadoop-common-project/hadoop-common/target/native"): error=, No such file or directory
[ERROR] around Ant part ...<exec dir="/home/hxiaolong/software/hadoop-2.4.0-src/hadoop-common-project/hadoop-common/target/native" executable="cmake" failonerror="true">... @ : in /home/hxiaolong/software/hadoop-2.4.-src/hadoop-common-project/hadoop-common/target/antrun/build-main.xml
[ERROR] -> [Help ]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help ] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :hadoop-common

网上看了下,是因为cmake没安装引起的。安装一下再试。

[root@hd1 hadoop-2.4.-src]# yum instsall cmake

重新编译,最终成功了。

[hxiaolong@hd1 software]$ mvn package -DskipTests -Pdist,native -Dtar

main:
[exec] $ tar cf hadoop-2.4..tar hadoop-2.4.
[exec] $ gzip -f hadoop-2.4..tar
[exec]
[exec] Hadoop dist tar available at: /home/hxiaolong/software/hadoop-2.4.-src/hadoop-dist/target/hadoop-2.4..tar.gz [INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: :.833s
[INFO] Finished at: Wed Jul :: UTC
[INFO] Final Memory: 159M/646M
[INFO] ------------------------------------------------------------------------

2) 把编译后的hadoop的native目录copy到/opt/hadoop-2.4.0/lib/

[hxiaolong@hd1 lib]$ rm -rf /opt/hadoop-2.4./lib/native
[hxiaolong@hd1 lib]$ cp -R /home/hxiaolong/software/hadoop-2.4.-src/hadoop-dist/target/hadoop-2.4./lib/native /opt/hadoop-2.4./lib/

这是非常重要的一个步骤。

3) 把编译后的hadoop的native目录scp其它节点

[root@hd1 lib]# scp -r /home/hxiaolong/software/hadoop-2.4.-src/hadoop-dist/target/hadoop-2.4./lib/native/ hd2:/opt/hadoop-2.4./lib/
[root@hd1 lib]# scp -r /home/hxiaolong/software/hadoop-2.4.-src/hadoop-dist/target/hadoop-2.4./lib/native/ hd3:/opt/hadoop-2.4./lib/

如果不把重新编译过后的native目录同步到其它节点,那在其它节点也会遇到同样的问题。

4) 验证

[hxiaolong@hd2 native]$ hadoop fs -ls /
Found items
drwxr-xr-x - hxiaolong supergroup -- : /input

OK了,不会报错了。

今天偶然发现这个镜像mirror.bit.edu.cn还蛮快的,而且比较稳定。看了下,是北理的。赞一个~
 

CentOS6.4编译Hadoop-2.4.0的更多相关文章

  1. mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项

    1.jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 htt ...

  2. 64位CentOS上编译 Hadoop 2.2.0

    下载了Hadoop预编译好的二进制包,hadoop-2.2.0.tar.gz,启动起来后.总是出现这样的警告: WARN util.NativeCodeLoader: Unable to load n ...

  3. 在docker容器中编译hadoop 3.1.0

    在docker容器中编译hadoop 3.1.0 优点:docker安装好之后可以一键部署编译环境,不用担心各种库不兼容等问题,编译失败率低. Hadoop 3.1.0 的源代码目录下有一个 `sta ...

  4. 利用Docker编译Hadoop 3.1.0

    前言 为什么要使用Docker编译,请自行百度 操作系统环境:Centos 6.8 uname -r 内核版本:2.6.32-642.el6.x86_64 除非有把握否则不要在Centos6.8中直接 ...

  5. 64位centos 下编译 hadoop 2.6.0 源码

    64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...

  6. CentOS 6.4 64位 源码编译hadoop 2.2.0

    搭建环境:Centos 6.4 64bit 1.安装JDK 参考这里2.安装mavenmaven官方下载地址,可以选择源码编码安装,这里就直接下载编译好的wget http://mirror.bit. ...

  7. CentOS 64位上编译 Hadoop 2.6.0

    Hadoop不提供64位编译好的版本号,仅仅能用源代码自行编译64位版本号. 学习一项技术从安装開始.学习hadoop要从编译開始. 1.操作系统编译环境 yum install cmake lzo- ...

  8. Centos 6.5 X64 环境下编译 hadoop 2.6.0 --已验证

    Centos 6.5 x64 hadoop 2.6.0 jdk 1.7 protobuf-2.5.0 maven-3.0.5 set environment export JAVA_HOME=/hom ...

  9. ubuntu 环境下编译 hadoop 2.6.0的简单方法

    由于服务器一般都64位系统, hadoop网站的release版本32位native库不能运行,所以需要自己在编译一下.以下是我采用的一个编译的过程,比较简单,不用下载各种版本及环境配置,通过命令就能 ...

  10. Centos6下编译安装gcc6.4.0

    Centos6自带的gcc4.4.7不支持c++11, 于是编译安装最新版的gcc wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz .tar ...

随机推荐

  1. firefox 提示 ssl_error_unsupported_version 的解决方法

    访问一些HTTPS网站时尤其是国内网站 中文提示: 无法安全地连接 Firefox 无法保证您在 sx.ac.10086.cn 上的数据安全性,因为它使用 SSLv3,一个目前安全性欠佳的安全协议.专 ...

  2. jQuery中常用的元素查找方法总结

    $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("div&q ...

  3. IOS Modal(切换另外控件器方式)

    ● 除了push之外,还有另外一种控制器的切换方式,那就是Modal ● 任何控制器都能通过Modal的形式展示出来 ● Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止 ...

  4. codeforces 600C Make Palindrome

    要保证变化次数最少就是出现次数为奇数的相互转化,而且对应字母只改变一次.保证字典序小就是字典序大的字母变成字典序小的字母. 长度n为偶数时候,次数为奇数的有偶数个,按照上面说的搞就好了. n为奇数时, ...

  5. POJ 2104 K-th Number(分桶,线段树,主席树)

    一道比较经典的数据结构题.可以用多种方式来做. 一,分桶法(平方分解). 根据数字x的大小和区间内不大于x的数字数量cnt的单调性,可知第k大数kth对应的cnt应该满足cnt≥k, 且kth是满足条 ...

  6. Android(java)学习笔记87:Android音视频MediaRecorder用法

    1. Android语音录制可以通过 MediaRecorder 和 AudioRecorder:  MediaRecorder本来是多媒体录制控件,可以同时录制视频和语音,当不指定视频源时就只录制语 ...

  7. JS判断单、多张图片加载完成

    转:http://www.daqianduan.com/6419.html 试想,如果模板中有图片,此时如何判断图片是否加载完成? 在此之前来了解一下jquery的ready与window.onloa ...

  8. 干净的架构The Clean Architecture_软件架构系列

    本文转载自:https://www.jdon.com/artichect/the-clean-architecture.html ,这个博客站很有历史了,博主经常翻译Github大牛的文章,值得墙裂推 ...

  9. React后台管理系统-后台接口封装

    1新建文件夹 service ,里边建4个文件,分别是statistic-service.jsx 首页数据统计接口, user-service.jsx用户接口, product-service.jsx ...

  10. 去除select下拉框默认样式

    去除select下拉框默认样式 select { /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ border: solid 1px #; /*很关键:将默认的select选 ...