因为搭建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. UVA Stacks of Flapjacks 栈排序

    题意:给一个整数序列,输出每次反转的位置,输出0代表排序完成.给一个序列1 2 3 4 5,这5就是栈底,1是顶,底到顶的位置是从1~5,每次反转是指从左数第i个位置,将其及其左边所有的数字都反转,假 ...

  2. 那些年,被我蠢哭了的php代码小错误~~~

    首先,我爱敲代码!!!而且我很喜欢修改bug,在看到那些bug的时候,我是兴奋的,毕竟当你解决这个bug之后感觉是很爽的. 在学习的过程中,看到无数的bug,有一些错误是很微小的,一般在PHP中都能通 ...

  3. Python开发第三篇

    函数 一.函数参数传值 形参:函数在定义的时候给定的参数 实参:函数在运行时赋给的参数: def func(i):#i为定义时的参数,为形参 pass func(name)#name为运行时的参数,为 ...

  4. Linux下bash的快捷键

    Ctrl + A  :切换到命令行开始 Ctrl + E :切换到命令行末尾 Ctrl + L : 清屏,相当于clear Ctrl + U :清除剪切光标前的内容 Ctrl + K :剪切清除光标后 ...

  5. 关于mongodb的日志

    mongodb的日志与profile相似,在启动mongod时 可以用verbose这个参数配置他的日志详细程度,分为一个v到5个v,其中v越多,详细度越高   mogod.conf port = d ...

  6. 2018.2.2 java中的Date如何获取 年月日时分秒

    package com.util; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; pub ...

  7. “System.AccessViolationException”类型的未经处理的异常在 System.Data.dll 中发生 其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏

    用管理员身份运行CMD:netsh winsock reset就可以解决

  8. BZOJ2118: 墨墨的等式(最短路 数论)

    题意 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. So ...

  9. <%%>用法初步认识

    <%%>是用于向客户端插入服务器代码所使用的一种标记 例如为了在HTML页面上展示由服务器提供的当前用户的某条信息或名字等便可使用 前台 <a href="home.asp ...

  10. python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...