编译本地64位版本的hadoop-2.6.0
官方提供的hadoop-2.x版本貌似都是32位的,在64位机子下使用可能会报错,最好使用官方提供的源码进行本地编译,编译成适合本地硬件环境的64位软件包。
Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。
native位于hadoop-2.x.x/lib/native目录下,仅支持linux和unix操作系统。
hadoop中的zlib和gzip模块会加载本地库,如果加载失败,会提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
可以在core-site.xml中配置hadoop.native.lib值是否使用本地库,默认值为true。
官方提供的hadoop-2.x版本中,native文件都是32位编译的,在实际使用64位环境中,建议本地编译后再使用。
参考:http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/NativeLibraries.html
本次编译环境:CentOS 5.5 + jdk7 + hadoop-2.6.0-src.tar.gz。为了加快编译过程,尽量将CentOS的内存设置的大一些,还有,编译过程中CentOS必须保持连网状态。
1、安装JDK、maven、findbugs(可选步骤)
实验版本:jdk-7u75-linux-x64.tar.gz、apache-maven-3.0.5-bin.tar.gz、findbugs-3.0.0.tar.gz,分别解压到/usr/local目录下,然后配置环境变量:vi /etc/profile,配置内容如下:
export JAVA_HOME=/usr/local/jdk1.7.0_75
export MAVEN_HOME=/usr/local/apache-maven-3.0.5/
export FINDBUGS_HOME=/usr/local/findbugs-3.0.0/
export PATH=.:$MAVEN_HOME/bin:$JAVA_HOME/bin:$FINDBUGS_HOME/bin:$PATH
验证:① java -version;② mvn -version;③ findbugs -version。
2、安装protoc
protoc buffer是hadoop的通信工具,编译过程需要安装。实验版本:protobuf-2.5.0.tar.gz,官网:https://code.google.com/p/protobuf/downloads/list。
安装编译工具:① yum install -y gcc;② yum intall -y gcc-c++;③ yum install -y make,操作系统已安装的不必重复安装。
进入/usr/local,顺序执行命令:① tar -zxvf protobuf-2.5.0.tar.gz;② cd protobuf-2.5.0;③ ./configure --prefix=/usr/local/protoc/;④ make && make install。
安装完成后,配置环境变量,增加:export PROTOC_HOME=/usr/local/protoc/,和export PATH=..:$PROTOC_HOME/bin:..
验证:protoc --version
3、安装其他依赖
执行命令:① yum install -y cmake;② yum install -y openssl-devel;③ yum install -y ncurses-devel。
4、开始编译工作
从官网下载需要编译的hadoop源码版本,本次实验:hadoop-2.6.0-src.tar.gz,官网下载:http://archive.apache.org/dist/hadoop/core/stable/。
进入/usr/local,执行解压操作:tar -zxvf hadoop-2.6.0-src.tar.gz,然后修改一个hadoop-2.x共有的bug(详见https://issues.apache.org/jira/browse/HADOOP-10110),编辑文件:usr/local/hadoop-2.6.0-src/hadoop-common-project/hadoop-auth/pom.xml,第55行左右增加如下内容:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
然后进入目录/usr/local/hadoop-2.6.0-src中,执行命令:mvn package -DskipTests -Pdist,native,docs,其中docs根据需要添加。
编译大概需要二三十分钟,看到一堆的SUCCESS,说明编译成功,编译后的项目在hadoop-2.6.0-src/hadoop-dist/target/hadoop-2.6.0中。
只需要将编译后项目中的/hadoop-dist/lib/native文件夹覆盖至之前32位的项目中即可(当然整个项目覆盖也可以),并在配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh末尾添加:export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"。
编译本地64位版本的hadoop-2.6.0的更多相关文章
- 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]
最近在学习搭建Hadoop, 我们从Apache官方网站直接下载最新版本Hadoop2.2.官方目前是提供了linux32位系统可执行文件,结果运行时发现提示 “libhadoop.so.1.0.0 ...
- VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4
对于一些已经解决的问题,本博客不再讨论.只将本人遇到的问题做简单的说明. 一.VS 2013编译64位版本QT 4.8.6 QT项目官网中,对于QT4,其只提供了windows X86的版本,并且支持 ...
- 介绍 32 位和 64 位版本的 Microsoft Office 2010
在使用 64 位版本的 Office 2010 运行现有解决方案时存在两个基本问题: Office 2010 中的本机 64 位进程无法加载 32 位二进制文件.在使用现有 Microsoft Act ...
- 64位版本为什么叫amd64,而不是intel64
64位版本为什么叫amd64,而不是intel64? 首先了解下常见的几个架构: X86是一个指令集,是刚有个人电脑时候的什么8086,286,386的那个兼容的指令集. “x86-64”,有时会 ...
- Windows 8.1 64位版本安装.Net Framework3.5
最近刚把个人电脑切换成了Win 8.1 64位版本,但在使用某些Ms的某此产品时会提示没有安装.Net Framework3.5,但按照他的提示需要在线安装而且速度很慢,因为之前搞过WinServer ...
- 如何安装NodeJS到阿里云Centos (64位版本V5-7)
如何安装NodeJS到阿里云Centos (64位版本V5-7) (Centos与Red Hat® Enterprise Linux® / RHEL, Fedora属于一类) 1) 安装v0.10版 ...
- CLR调试报错“Visual Studio远程调试监视器 (MSVSMON.EXE) 的 64 位版本无法调试 32 位进程或 32 位转储。请改用 32 位版本”的解决
Win7 64位电脑上进行visual studio的数据库项目的CLR存储过程进行调试时,报错: ---------------------------Microsoft Visual Studio ...
- vs2015编译boost 64位
---恢复内容开始--- step 1: 打开Developer Command Prompt for VS2015命令行窗口 step 2: 执行bootstrap.bat,产生bjam.exe s ...
- 在SSIS 的 64 位版本中不支持 Excel 连接管理器
Microsoft sql server 2008 R2——> SQL SERVER Business Intelligence Development Studio 使用EXCEL数据源或目标 ...
随机推荐
- MongoDB: CURD操作
>> 创建:·db.foo.insert({"bar":"baz"}) //如果文档中没有"_id"键会自动增加一个·db.fo ...
- HDU 5726 GCD
传送门 GCD Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...
- Tyvj P1175 机器人
P1175 机器人 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 设a,b是给定的正整数.现有一机器人沿着一个有n级的楼梯上下.机器人每上升一次,恰好上升a ...
- [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法
在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交 ...
- MyBatis详解 与配置MyBatis+Spring+MySql
MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本 ...
- 关于win7上内存占用较大的说明
1 Win7系统较XP系统内存占用高: 由于xp系统属于轻量化的系统,而win7系统是一个重量型的系统,在两者的内存管理机制上有很大的区别,根据业界和微软对外的发布公告中可以看到,win7系 ...
- PHPExcel使用体会
PHPExcel使用体会 因为毕设导师智能分配系统的需要,系负责人在管理学生和导师时,希望可以使用Excel批量导入学生和导师的信息,学长的报课系统使用的是PHPExcel的类库,于是我也抽空花了2天 ...
- Struts学习总结-02 类型转换
一 类型转换 input.jsp <%@ page language="java" import="java.util.*" pageEncoding=& ...
- jquery selector 基础
转自:http://www.cnblogs.com/zwl12549/archive/2008/08/09/1264163.html query的这套选择符是比较帅气的,借用了XPath2.0和CSS ...
- 深入JVM-java虚拟机的基本结构
本文将介绍Java虚拟机的基本结构,各组成部分的作用,以及相互之间是如何协调的.而要了解这些,首先必须了解Java堆.Java栈.永久区和元数据区的基本概念. 一.Java虚拟机的架构 1.1 类加载 ...