在Ubuntu12.04 64位上编译hadoop2.2.0
来源:互联网 发布:北京配眼镜 知乎 编辑:程序博客网 时间:2024/04/27 23:18
最近在学习搭建Hadoop,我们从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,结果运行时发现提示 “libhadoop.so.1.0.0 which might have disabled stack guard” 的警告。 Google了一下发现是因为 hadoop 2.2.0提供的是libhadoop.so库是32位的,而我们的机器是64位。 解决的办法就是重新在64位的机器上编译hadoop。
编译环境
OS: Ubuntu 12.04 64-bit
hadoop version: 2.2.0
Java: Jdk1.7.0_45
java环境配置
参考这篇文章:Ubuntu下安装jdk
安装依赖包
这些库啊包啊基本都会在编译过程中用到,缺少的话会影响编译,看到error了再找solution非常麻烦,提前装好一劳永逸。
$ sudo apt-get install g++ autoconf automake libtool make cmake zlib1g-dev pkg-config libssl-dev
因为还要用到ssh,所以如果机器上没有的话,装个openssh的客户端就好啦 (ubuntu 12.04应该预装了)
$ sudo apt-get install openssh-client
当然想装server的话就
$ sudo apt-get install openssh-server
编译过程中还会用到protobuf 貌似需要最新的2.5.0,因此有低版本的也重新安装一下
安装配置 protobuf
下载最新的protobuf: https://code.google.com/p/protobuf/downloads/list
也可以在此下载:protobuf-2.5.0.tar.gz
解压,依次运行
$ ./configure --prefix=/usr$ sudo make$ sudo make check$ sudo make install
检查一下版本
$ protoc --versionlibprotoc 2.5.0
安装配置 maven
ubuntu下用apt-get安装maven
$ sudo apt-get install maven
编译 hadoop 2.2.0
下载 hadoop 2.2.0 http://www.apache.org/dyn/closer.cgi/hadoop/common/
解压到用户目录 /home/hduser/. 进入 hadoop-2.2.0-src 目录
因为已经安装了maven, protobuf, java环境也有了,compiler也有了所以直接运行
$ mvn package -Pdist,native -DskipTests -Dtar
正常应该不会有什么错误了, 参数和其他编译选择请看 hadoop目录下的 BUILDING.txt文件
如果在编译时出现如下的错误:
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD FAILURE
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 1:29.469s
- [INFO] Finished at: Mon Nov 18 12:30:36 PST 2013
- [INFO] Final Memory: 37M/120M
- [INFO] ------------------------------------------------------------------------
- [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
- [ERROR] server = new Server(0);
- [ERROR] /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[94,29] cannot access org.mortbay.component.LifeCycle
- [ERROR] class file for org.mortbay.component.LifeCycle not found
- [ERROR] server.getConnectors()[0].setHost(host);
- [ERROR] /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[96,10] cannot find symbol
- [ERROR] symbol : method start()
- [ERROR] location: class org.mortbay.jetty.Server
- [ERROR] /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[102,12] cannot find symbol
- [ERROR] symbol : method stop()
目前的2.2.0 的Source Code 压缩包解压出来的code有个bug 需要patch后才能编译。否则编译hadoop-auth 会提示上面错误。
解决办法如下:
修改下面的pom文件。该文件在hadoop源码包下寻找:
hadoop-common-project/hadoop-auth/pom.xml打开上面的的pom文件,在54行加入如下的依赖:
<dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <scope>test</scope> </dependency>
然后重新运行编译指令即可。编译是一个缓慢的过程,耐心等待哦。
当看到下面的信息时,编译成功。
安装配置 hadoop 2.2.0
此时编译好的文件位于 hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/ 目录中
- 在Ubuntu12.04 64位上编译hadoop2.2.0
- 在ubuntu12.04上安装hadoop2.6.0
- 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]
- 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]
- 在ubuntu12.04LTS上编译64位hadoop-2.3.0并安装测试 单节点
- CentOS 64位上编译 Hadoop2.6.0
- hadoop2.2.0在64位readhat编译实战
- 在64位ubuntu16.04下编译hadoop2.8.1
- Android4.X在Ubuntu12.04(64位)编译
- Simplescalar在Ubuntu12.04 64位上的安装流程
- 在ubuntu12.04+hadoop2.3.0集群上运行WordCount出错
- hadoop2.6.0 在64位CentOS 6.4系统上的编译
- 32位ubuntu12.04安装hadoop2.2.0伪分布式
- 在32位的ubuntu12.04 上编译android 2.3.4的错误及解决方法
- 在ubuntu12.04上编译 android源代码
- 在Ubuntu12.04上编译MPlayer1.1.1
- 在ubuntu12.04上编译android工程
- ffmpeg 在ubuntu12.04上的编译
- 启动计算机时,记事本启动并带有“[.ShellClassInfo] LocalizedResourceName=@%System
- centos6.4 上ftp服务器搭建
- IOS下的ffmpeg解码
- Java事件机制---自定义事件
- android ndk环境搭建
- 在Ubuntu12.04 64位上编译hadoop2.2.0
- ACE学习一:ACE的体系结构
- Android MediaRecorder实现暂停断点录音功能
- Android GPS定位 获取经纬度
- Eigen 3.2.1相对上一次3.2.0有关键的一些bug修正
- eclipse 改xml大小
- MP3文件格式解析
- eclipse打开报"Failed to load the JNI shared library"解决方案
- 认识Tempdb----排除日常问题