在hadoop的官方网站,每个发行的版本都提供了 源码包 和 编译后的二进制发行包,那如何选择了?
下载编译后的包,在系统上解压,设置配置文件后就可以直接使用,但在使用hadoop命名过程中,每次都会显示一个警告,如
hadoop fs -ls / WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
提示不能使用本地的lib,使用内部的java class来应用。这个本地的native library是需要根据自己的环境编译的,
虽说不影响使用,但每次都提示,看着也不舒服。另一方面,官方给的编译后的包是基于32位jvm编译的,在64位jvm上运行,不能发挥性能优势
基于上面的原因,为了更好的发挥hadoop性能,还是自己根据本地系统的环境,编译源码比较好
这里使用的是CDH版本的hadoop,这个更稳定一些,也是推荐的版本,cdh官方下载网站http://archive.cloudera.com/cdh5/cdh/5/,
选择相应的版本,如hadoop-2.6.0-cdh5.5.1-src.tar.gz版本,
直接下载,然后解压,操作如下:
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.5.1-src.tar.gz, tar zxvf hadoop-2.6.0-cdh5.5.1-src.tar.gz cd hadoop-2.6.0-cdh5.5.1
more BUILDING.txt,查看编译说明,
Requirements: * Unix System * JDK 1.7+ * Maven 3.0 or later * Findbugs 1.3.9 (if running findbugs) * ProtocolBuffer 2.5.0 * CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac * Zlib devel (if compiling native code) * openssl devel ( if compiling native hadoop-pipes ) * Internet connection for first build (to fetch all Maven and Hadoop dependencies)
必备条件:
unix系统
jdk 1.7以上
maven 3.0版本以上
findbugs 1.3.9版本(如果运行findbugs)
ProtocolBuffer 2.5.0版本
cmake 2.6以上(如果编译本地代码),mac系统上必须是3.0版本以上
zlib devel(如果编译本地代码)
openssl devel(如编译本地hadoop管道)
网络连接(需要获取maven和所有的hadoop依赖)
接下来就按照这些要求,安装所需的软件包,当前系统是64位CentOS 系统
1) 安装 Java
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
tar zxvf jdk-7u79-linux-x64.tar.gz
解压后直接使用,配置环境变量即可
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
2) 安装 maven
wget http://mirror.tcpdiag.net/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar zxvf apache-maven-3.3.9-bin.tar.gz
解压后直接使用,配置环境变量即可
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin
3) 安装findbugs
没有找到直接在linux上下载的版本,所以从http://olex.openlogic.com/packages/findbugs/1.3.9上下载到本地后,上传到linux上
解压,unzip openlogic-findbugs-1.3.9-all-bin-1.zip
配置环境变量
export FINDBUGS_HOME=/usr/local/findbugs-1.3.9
export PATH=${PATH}:${FINDBUGS_HOME}/bin
4) 安装protocolBuffer
git clone https://github.com/google/protobuf.git
cd protobuf
./autogen.sh 下载gmock source,运行automake,autoconf等等,并且生成configure script和各种makefiles模板
./configure
make,然后漫长等待
make install
完成后,查看版本信息 protoc --version
5) 安装cmake,zlib devel,openssl devel
yum install cmake zlib-devel openssl-devel
到此,所需要的软件包都已经安装完毕,由于hadoop可以选择不同的压缩算法来压缩文件,所以还需要安装相关的压缩包,如bzip2, lz4, snappy, zlib
yum install lzo-devel snappy lz4 bzip2
环境变量,配置的是全局的,在/etc/profile里,内容如下:
export JAVA_HOME=/usr/local/jdk1.7.0_79 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export MAVEN_HOME=/usr/local/apache-maven-3.3.9 export PATH=${PATH}:${MAVEN_HOME}/bin export FINDBUGS_HOME=/usr/local/findbugs-1.3.9 export PATH=${PATH}:${FINDBUGS_HOME}/bin
记住,修改完/etc/profile后,需要运行 source /etc/profile,让配置文件立即生效
接下来最重要的事情要出现了,编译源码。在编译前,再看下BUILDING.txt文件,文件中间有个Building distributions,先来看下,
Building distributions: Create binary distribution without native code and without documentation: $ mvn package -Pdist -DskipTests -Dtar Create binary distribution with native code and with documentation: $ mvn package -Pdist,native,docs -DskipTests -Dtar Create source distribution: $ mvn package -Psrc -DskipTests Create source and binary distributions with native code and documentation: $ mvn package -Pdist,native,docs,src -DskipTests -Dtar Create a local staging version of the website (in /tmp/hadoop-site) $ mvn clean site; mvn site:stage -DstagingDirectory=/tmp/hadoop-site
里面有各种编译的用法,我们使用 mvn package -Pdist,native,src -DskipTests -Dtar ,创建二进制分发包,本地code,源码即可,文档就不需要了
运行 mvn package -Pdist,native,src -DskipTests -Dtar , 等待编译结果,编译速度根据网络来定,因为maven需要下载各种依赖包来编译打包,
编译过程中出错
[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.6.0-cdh5.5.1:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc 3.0.0', expected version is '2.5.0' -> [Help 1]
说是期望libprotoc 2.5.0版本,现在是3.0.0的版本,protocolBuffer版本高了还不行,输入protoc --version,的确是3.0版本,只能重新安装,
进入https://github.com/google/protobuf页面,选择2.5版本的分支下载,然后进行安装,过程跟第4步一样,省略。
安装后,执行protoc --version显示还是3.0.0版本,只能寻找其他方式,下载包来安装。
wget protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2 tar jxvf protobuf-2.5.0.tar.bz2 cd protobuf-2.5.0 ./autogen.sh ./configure make make install
输入protoc --version,显示libprotoc 2.5.0,版本正确
接着运行mvn package -Pdist,native,src -DskipTests -Dtar,漫长等待后,还是失败,提示内存不足,搜索无果后,
再次查看BUILDING.txt文件,在中间有这么一段内容:
---------------------------------------------------------------------------------- Handling out of memory errors in builds ---------------------------------------------------------------------------------- If the build process fails with an out of memory error, you should be able to fix it by increasing the memory used by maven -which can be done via the environment variable MAVEN_OPTS. Here is an example setting to allocate between 256 and 512 MB of heap space to Maven export MAVEN_OPTS="-Xms256m -Xmx512m"
大意是说,如果内存不足,设置环境变量MAVEN_OPTS,增加内存,直接运行export MAVEN_OPTS="-Xms256m -Xmx512m"
接着再次编译,经过漫长等待后看到了,BUILD SUCCESS 的信息,说明编译成功,cd hadoop-dist/target能看到编译后的文件包,到此整个编译过程完成。
注意的几点:
1、在编译前,一定要把BUILDING.txt认真看一遍,免得出现不必要的错误,耽误时间。
2、protobuf是从protobuf.googlecode.com下载的,需要xx,已上传到附件中。
3、整个操作过程是用root用户来操作的。
相关推荐
在Hadoop源码编译过程中,它用于提升代码质量和稳定性。解压`findbugs-2.0.3.tar.gz`,安装完成后将其路径添加至PATH环境变量,以便在构建Hadoop时运行FindBugs检查。 4. **Hadoop源码包** `hadoop-2.5.0-src.tar....
通过以上步骤,我们可以看到,"Hadoop CDH 源码编译所需软件"这个主题涵盖了大数据处理的关键组件和最佳实践,如高效的压缩算法和静态代码分析工具。这些工具和技术的使用对于优化Hadoop CDH的性能、稳定性和安全性...
标题中的“Hadoop源码编译需要工具”指的是在本地环境中构建Hadoop源代码时所需的必备组件。Hadoop是一个开源的分布式计算框架,主要用于处理和存储海量数据。为了从源代码编译Hadoop,我们需要一些特定的开发工具和...
接下来,我们按照以下步骤进行Hadoop源码编译和安装: 1. **获取源码**:使用Git命令克隆Hadoop的源码仓库。例如,你可以运行`git clone https://github.com/apache/hadoop.git`来获取最新的源码。 2. **配置环境*...
[root@hadoop101 ~]# tar -zxf hadoop-2.7.2-src.tar.gz [root@hadoop101 ~]# cd hadoop-2.7.2-src/ [root@hadoop101 hadoop-2.7.2-src]# mvn package -DskipTests 5.4 常见问题及解决方案 在 Hadoop 源码编译过程...
编译成功后,你需要替换原有的Native目录,然后通过运行Hadoop的某些命令来验证编译结果,如果没有出现警告或错误,那么恭喜你,Hadoop源码编译已完成。 整个过程可能会遇到各种问题,如依赖冲突、权限问题或者网络...
hadoop源码编译所需要的maven仓库,省去编译时下载时间。
### Hadoop源码编译支持Snappy压缩教程 #### 一、Snappy压缩技术简介 在大数据处理领域,数据压缩技术对于提高存储效率和降低I/O开销具有重要作用。Snappy是一种高效的压缩与解压缩算法,它在压缩比与速度之间取得...
在深入探讨Hadoop源码编译的过程中,我们首先需要了解Hadoop是什么以及它的重要性。Hadoop是一个开源的分布式计算框架,由Apache软件基金会维护,主要由HDFS(Hadoop Distributed File System)和MapReduce两大部分...
接下来,按照以下步骤进行源码编译: 1. **获取源码**:打开终端,使用`git clone`命令从Hadoop的官方仓库克隆源码: ``` git clone https://github.com/apache/hadoop.git ``` 2. **进入源码目录**: ``` cd...
2. **执行编译命令**:打开命令提示符窗口,进入Hadoop源码目录,运行`mvn clean package -DskipTests -Dmaven.javadoc.skip=true -Pdist,native -Dtar`命令来开始编译过程。该命令将跳过测试、Javadoc生成,并编译...
在本篇【Hadoop篇06】中,我们将探讨如何编译Hadoop源码,这是一个对深入了解Hadoop内部机制至关重要的过程。以下是编译Hadoop源码所需的关键步骤和相关知识点: 1. **准备工作** - **CentOS联网**:确保Linux系统...
本资源提供了已经编译好的Hadoop 2.7.3版本的源码,适用于Eclipse环境,方便开发者进行深入学习和二次开发。 首先,让我们来了解一下HDFS。HDFS是Hadoop的核心组件之一,是一个分布式文件系统,设计目标是能够在...
官网荡下的源码,自己亲手编译的hadoop2.x 64位,给大家分享下 文件太大放的是百度网盘链接,目前有hadoop2.3.0,后面的版本我会陆续更新。
在Windows 10环境下编译好的Hadoop源码对于开发者来说是一份宝贵的资源,因为它通常已经解决了在Windows系统上运行Hadoop时可能遇到的兼容性和配置问题。 标题中的"win10系统编译好的hadoop源码"指的是专门为...
Hadoop源码编译和安装的过程也包含了许多知识点。首先,你需要一个Java开发环境,因为Hadoop是用Java编写的。然后,通过Maven或Ant等构建工具来编译源码。在源码包hadoop-2.8.5-src中,包含了一系列的配置文件和源...
### Hadoop源码在Eclipse中的编译指南 #### 一、引言 随着大数据技术的发展,Hadoop作为处理大规模数据集的一种分布式计算框架,其重要性不言而喻。对于开发者而言,深入理解Hadoop的工作原理及其实现机制是非常有...
当你需要对Hadoop源码进行编译时,Maven是必不可少的工具,因为它可以帮助我们自动化构建过程,管理项目的依赖关系,以及执行各种构建生命周期阶段。 编译Hadoop源码的过程涉及到以下几个关键知识点: 1. **Maven...
所以自己就用cdh的hadoop源码编译了一遍,踩了很多坑。最终还是解决了,能在windows中调试mapreduce了。 ps:csdn上看到同样的资源 竟然要10分,下不起 下不起。只能自己做了,5分服务大众。。。