`

hadoop2.x的编译 & hadoop-snappy编译 & hadoop2.x 配置 snappy压缩

阅读更多

hadoop2.x 默认没有支持snappy压缩,需要我们自己编译 才能支持snappy的压缩。

查看hadoop2.x 的BUILDING文件 ,

 Snappy build options:

   Snappy is a compression library that can be utilized by the native code.

   It is currently an optional component, meaning that Hadoop can be built with

   or without this dependency.

 

  * Use -Drequire.snappy to fail the build if libsnappy.so is not found.

    If this option is not specified and the snappy library is missing,

    we silently build a version of libhadoop.so that cannot make use of snappy.

    This option is recommended if you plan on making use of snappy and want

    to get more repeatable builds.

 

 1.环境准备

  • 安装 jdk1.6
  • 安装maven-3.05
  • 安装gcc,openssl,cmake 等软件

 

sudo yum -y install gcc-c++ libstdc++-devel
sudo yum -y install openssl openssl-devel autoconf ncurses-devel libtool cmake zlib-devel
 

 

  • 安装protobuf-2.5.0

   下载 http://pan.baidu.com/s/1pJlZubT

 

tar -zxvf protobuf-2.5.0.tar.gz
cd protobuf
sudo ./configure
sudo make & make install

#验证:
protoc --version
 

 

 

  • 安装findbugs

 

wget -c http://prdownloads.sourceforge.net/findbugs/findbugs-2.0.3.tar.gz?download
tar -zxvf findbugs-2.0.3.tar.gz -C /opt/modules

#配置FINDBUGS环境变量
sudo vi /etc/profile

 

export FINDBUGS_HOME=/opt/findbugs-2.0.3
export PATH=$PATH:$FINDBUGS_HOME/bin
source /etc/profile

 

 

#验证:

 fb -version

 

 

 

  • 安装snappy压缩库

       下载snappy-1.1.1.tar.gz http://pan.baidu.com/s/1o6vGQ18

 

tar -zxvf snappy-1.1.1.tar.gz
cd snappy-1.1.1 
sudo ./configure
sudo make
sudo make install
 

 

 2.编译hadoop 2.x,对应系统的本地库,其中要包含支持snappy lib

    下载hadoop2.x   我选用hadoop-2.5.0-cdh5.3.3

 

wget -c http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.5.0-cdh5.3.3-src.tar.gz
tar -zxvf hadoop-2.5.0-cdh5.3.3-src.tar.gz -C /opt/compile
cd /opt/compile/hadoop-2.5.0-cdh5.3.3
#必须加上 -Drequire.snappy 参数才能支持snappy压缩
mvn clean package -Pdist,native -Drequire.snappy -DskipTests -Dtar

#编译的native文件 http://pan.baidu.com/s/12QVam

 

3.替换hadoop lib/native包

把编译之后的lib/native文件替换掉$HADOOP_HOME/lib/native文件

注意事项:

替换前后必须保持所有文件的格式一致(所有的.a文件 权限655 ,所有的 *.so.xx.xx 权限 755 ,给*.so.xx.xx 创建软链接)

 

cd $HADOOP_HOME/lib/
mv native backup_native
mkdir native
cp 自己编译的/lib/native/* native/
chmod 644 *.a
rm libhadoop.so libhdfs.so libnativetask.so
chmod 755 libnativetask.so.1.0.0
chmod 755 libhdfs.so.0.0.0
chmod 755 libhadoop.so.1.0.0
ln -s libnativetask.so.1.0.0 libnativetask.so
ln -s libhdfs.so.0.0.0 libhdfs.so
ln -s libhadoop.so.1.0.0 libhadoop.so
#ll  各个文件格式对应如下:
-rw-r--r-- 1 ehp ehp 1178622 Jul  5 08:37 libhadoop.a
-rw-r--r-- 1 ehp ehp 1487052 Jul  5 08:37 libhadooppipes.a
lrwxrwxrwx 1 ehp ehp      18 Jul  5 08:38 libhadoop.so -> libhadoop.so.1.0.0
-rwxr-xr-x 1 ehp ehp  697211 Jul  5 08:37 libhadoop.so.1.0.0
-rw-r--r-- 1 ehp ehp  582056 Jul  5 08:37 libhadooputils.a
-rw-r--r-- 1 ehp ehp  359794 Jul  5 08:37 libhdfs.a
lrwxrwxrwx 1 ehp ehp      16 Jul  5 08:38 libhdfs.so -> libhdfs.so.0.0.0
-rwxr-xr-x 1 ehp ehp  228715 Jul  5 08:37 libhdfs.so.0.0.0
-rw-r--r-- 1 ehp ehp 7684428 Jul  5 08:37 libnativetask.a
lrwxrwxrwx 1 ehp ehp      22 Jul  5 08:39 libnativetask.so -> libnativetask.so.1.0.0
-rwxr-xr-x 1 ehp ehp 3061007 Jul  5 08:37 libnativetask.so.1.0.0

4.编译hadoop-snappy库

下载地址:http://code.google.com/p/hadoop-snappy/(可以无法访问)

我的云盘分享地址 http://pan.baidu.com/s/1pJkj7sB

 

Build Hadoop Snappy

1. Requirements: gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3

2. Build/install Snappy (http://code.google.com/p/snappy/)

3. Build Hadoop Snappy

$ mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]

'snappy.prefix' by default is '/usr/local'. If Snappy is installed in other location than user local set 'snappy.prefix' to the right location.

The built tarball is at target/hadoop-snappy-0.0.1-SNAPSHOT.tar.gz. The tarball includes snappy native library

 

编译后文件:下载地址 http://pan.baidu.com/s/1hq5w7cg

 

放入hadoop2到对应的目录下

$ tar -zxf hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
$ cd hadoop-snappy-0.0.1-SNAPSHOT
$ cp -r lib/native/Linux-amd64-64/* /opt/modules/hadoop-2.5.0-cdh5.3.3/lib/native
$ cp lib/hadoop-snappy-0.0.1-SNAPSHOT.jar /opt/modules/hadoop-2.5.0-cdh5.3.3/share/hadoop/common/lib/

5.设置mapper output 启动压缩和压缩编码

 

#mapred-site.xml
<property>
	<name>mapreduce.map.output.compress</name>
	<value>true</value>
</property>
<property>
	<name>mapreduce.map.output.compress.codec</name>
	<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

 

6.检查snappy是否正确配置

hadoop checknative

7.测试

hadoop fs -rm -R /user/ehp/mapred/wordcount/output

bin/yarn jar \

share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.3.jar \

wordcount \

/user/ehp/mapred/wordcount/input \

/user/ehp/mapred/wordcount/output

 

在uber模式下我们可以看到这么一个问题

 

2015-03-18 21:28:20,153 FATAL [uber-SubtaskRunner] org.apache.hadoop.mapred.LocalContainerLauncher: Error running local (uberized) 'child' : java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
        at org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy(Native Method)
        at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:63)
        at org.apache.hadoop.io.compress.SnappyCodec.getCompressorType(SnappyCodec.java:132)
        at org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:148)
        at org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:163)

 

解决办法:https://issues.apache.org/jira/browse/MAPREDUCE-5799

#yarn-site.xml
<property>
 <name>yarn.app.mapreduce.am.env</name>
 <value>LD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/native</value>
 </property>

 

不修改yarn-site.xml 运行时动态增加配置:

bin/yarn jar \
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.3.jar \
wordcount \
-Dyarn.app.mapreduce.am.env=LD_LIBRARY_PATH=/opt/modules/hadoop-2.5.0-cdh5.3.3/lib/native \
/user/ehp/mapred/wordcount/input \
/user/ehp/mapred/wordcount/output

 

分享到:
评论

相关推荐

    hadoop3.x带snappy(可用于windows本地开发)

    【标题】"hadoop3.x带snappy(可用于windows本地开发)"所涉及的知识点主要集中在Hadoop 3.0版本以及Snappy压缩算法在Windows环境下的应用。Hadoop是一个开源的大数据处理框架,由Apache软件基金会开发,它使得在...

    findbugs-1.3.9.tar.gz + protobuf-2.5.0.tar.gz +snappy-1.1.1.tar.

    标题中的三个压缩包文件分别是`findbugs-1.3.9.tar.gz`、`protobuf-2.5.0.tar.gz`和`snappy-1.1.1.tar.gz`,它们各自代表了不同的开源工具或库,分别在软件质量检测、数据序列化和数据压缩方面发挥着重要作用。...

    编译hadoop-2.5.0-cdh5.3.6 + snappy 源码的native包

    - 配置Hadoop的`core-site.xml`,添加`io.compression.codecs`属性,指定Snappy压缩 codec。 ```xml ... &lt;name&gt;io.compression.codecs &lt;value&gt;org.apache.hadoop.io.compress.DefaultCodec,org.apache....

    snappy-1.1.1.tar.gz

    服务安装包,hadoop2.x的编译 & hadoop-snappy编译 & hadoop2.x 配置 snappy压缩

    hadoop-2.10.0jar.zip

    包含hadoop平台Java开发的所有所需jar包,例如activation-1.1.jar apacheds-i18n-2.0.0-M15.jar apacheds-kerberos-codec-2.0.0-M15.jar api-asn1-api-1.0.0-M20.jar api-util-1.0.0-M20.jar asm-3.2.jar avro-1.7.7...

    hadoop-3.3.0.tar.gz

    3. **Erasure Coding**:这是Hadoop 3.x引入的新特性,它提供了一种数据冗余策略,与传统的RAID不同,Erasure Coding可以以更低的存储成本提供类似的数据保护。在3.3.0版本中,Erasure Coding的性能和可用性得到了...

    hadoop-snappy-0.0.1-SNAPSHOT.tar.gz

    本文将深入探讨"Hadoop hbase支持snappy压缩jar包"的相关知识,包括Snappy的特性、如何编译以及如何在HBase中集成和使用。 一、Snappy压缩库介绍 Snappy是由Google开发的一种快速、轻量级的压缩和解压缩库,主要...

    hadoop2.8.5-windows本地开发

    内容概要:windows环境下添加snappy源码,并对2.8.5的apache版本hadoop包进行编译,生成指定的hadoop.dll、snappy.dll文件,方便Windows环境下利用idea工具进行Hadoop、Spark的local模式下代码调试。 版本更新:...

    hadoop3.3.0在centos7.7环境编译环境资源,附hadoop编译流程详细说明

    hadoop编译流程详细说明 apache-ant-1.9.16-bin.tar.gz cmake-3.22.4.tar.gz protobuf-2.5.0.tar.gz snappy-1.1.4.tar.gz cyrus-sasl-2.1.26-23.el7.x86_64.rpm cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm cyrus-...

    hadoop 2.5.0 编译snappy

    接下来,进入Hadoop的native目录,配置并编译Hadoop的本地库,确保HADOOP_HOME指向你的Hadoop安装路径,并将Snappy的头文件和库文件路径添加到配置中: ```bash export HADOOP_HOME=/path/to/your/hadoop/...

    CentOS6.5编译Hadoop2.7.5(64位)详解,已编译好的64位包下载即可用

    我编译用到的包(protobuf-2.5.0.tar.gz,findbugs-3.0.1.tar.gz,apache-ant-1.9.13-bin.tar.gz,snappy-1.1.1.tar.gz)和编译的过程详解(遇到的错误)都在压缩包中(hadoop源码请到官网下载)。 背景Hadoop官网...

    hadoop snappy编译安装包

    2. 更新Hadoop和HBase的配置文件,启用Snappy压缩。例如,在Hadoop的`core-site.xml`中设置`io.compression.codecs`包含`org.apache.hadoop.io.compress.SnappyCodec`,在HBase的`hbase-site.xml`中启用Snappy压缩。...

    Hadoop集群上Snappy压缩算法的安装配置

    Snappy 压缩算法的安装配置在 Hadoop 集群上 Snappy 压缩算法是一种高效的压缩算法,广泛应用于 Hadoop 和 HBase 等大数据处理系统中。 本篇文章将介绍 Snappy 压缩算法在 Hadoop 集群上的安装配置过程,并分享一些...

    Spring3.2Jar官方jar包

    8. **snappy-java-1.0.4.1.jar**:Snappy是一个高效的压缩和解压缩库,用于提高数据存储和传输的效率,特别是在大数据和Hadoop环境中。 9. **jackson-mapper-asl-1.9.2.jar**:Jackson是一个流行的JSON库,用于Java...

    Hadoop源码编译支持Snappy压缩教程

    ### Hadoop源码编译支持Snappy压缩教程 #### 一、Snappy压缩技术简介 在大数据处理领域,数据压缩技术对于提高存储效率和降低I/O开销具有重要作用。Snappy是一种高效的压缩与解压缩算法,它在压缩比与速度之间取得...

    snappy-1.1.3.tar.gz

    Hadoop需要配置相应的压缩编解码器以支持Snappy。 2. **存储格式**:在创建Hive表时,可以选择Snappy作为默认的压缩格式,例如: ```sql CREATE TABLE my_table (col1 string, col2 int) ROW FORMAT DELIMITED ...

    hadoop-3.3.0-Centos7-64-with-snappy.tar.gz

    这个名为“hadoop-3.3.0-Centos7-64-with-snappy.tar.gz”的压缩包文件,是专为CentOS 7 64位系统优化的Hadoop 3.3.0版本,内含Snappy压缩算法支持。 Hadoop 3.3.0是Hadoop发展中的一个重要里程碑,它引入了许多...

    hadoop集成snappy安装配置文档

    - **编译配置**:运行`./configure`进行编译前的配置。 - **编译**:使用`make`命令开始编译。 - **安装**:`make install`命令用于安装Snappy。 - **默认安装路径**:Snappy默认安装到`/usr/local/lib`。 - **验证...

Global site tag (gtag.js) - Google Analytics