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本地开发)"所涉及的知识点主要集中在Hadoop 3.0版本以及Snappy压缩算法在Windows环境下的应用。Hadoop是一个开源的大数据处理框架,由Apache软件基金会开发,它使得在...
标题中的三个压缩包文件分别是`findbugs-1.3.9.tar.gz`、`protobuf-2.5.0.tar.gz`和`snappy-1.1.1.tar.gz`,它们各自代表了不同的开源工具或库,分别在软件质量检测、数据序列化和数据压缩方面发挥着重要作用。...
- 配置Hadoop的`core-site.xml`,添加`io.compression.codecs`属性,指定Snappy压缩 codec。 ```xml ... <name>io.compression.codecs <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache....
服务安装包,hadoop2.x的编译 & hadoop-snappy编译 & hadoop2.x 配置 snappy压缩
包含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...
3. **Erasure Coding**:这是Hadoop 3.x引入的新特性,它提供了一种数据冗余策略,与传统的RAID不同,Erasure Coding可以以更低的存储成本提供类似的数据保护。在3.3.0版本中,Erasure Coding的性能和可用性得到了...
本文将深入探讨"Hadoop hbase支持snappy压缩jar包"的相关知识,包括Snappy的特性、如何编译以及如何在HBase中集成和使用。 一、Snappy压缩库介绍 Snappy是由Google开发的一种快速、轻量级的压缩和解压缩库,主要...
内容概要:windows环境下添加snappy源码,并对2.8.5的apache版本hadoop包进行编译,生成指定的hadoop.dll、snappy.dll文件,方便Windows环境下利用idea工具进行Hadoop、Spark的local模式下代码调试。 版本更新:...
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的native目录,配置并编译Hadoop的本地库,确保HADOOP_HOME指向你的Hadoop安装路径,并将Snappy的头文件和库文件路径添加到配置中: ```bash export HADOOP_HOME=/path/to/your/hadoop/...
我编译用到的包(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官网...
2. 更新Hadoop和HBase的配置文件,启用Snappy压缩。例如,在Hadoop的`core-site.xml`中设置`io.compression.codecs`包含`org.apache.hadoop.io.compress.SnappyCodec`,在HBase的`hbase-site.xml`中启用Snappy压缩。...
Snappy 压缩算法的安装配置在 Hadoop 集群上 Snappy 压缩算法是一种高效的压缩算法,广泛应用于 Hadoop 和 HBase 等大数据处理系统中。 本篇文章将介绍 Snappy 压缩算法在 Hadoop 集群上的安装配置过程,并分享一些...
8. **snappy-java-1.0.4.1.jar**:Snappy是一个高效的压缩和解压缩库,用于提高数据存储和传输的效率,特别是在大数据和Hadoop环境中。 9. **jackson-mapper-asl-1.9.2.jar**:Jackson是一个流行的JSON库,用于Java...
### Hadoop源码编译支持Snappy压缩教程 #### 一、Snappy压缩技术简介 在大数据处理领域,数据压缩技术对于提高存储效率和降低I/O开销具有重要作用。Snappy是一种高效的压缩与解压缩算法,它在压缩比与速度之间取得...
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”的压缩包文件,是专为CentOS 7 64位系统优化的Hadoop 3.3.0版本,内含Snappy压缩算法支持。 Hadoop 3.3.0是Hadoop发展中的一个重要里程碑,它引入了许多...
- **编译配置**:运行`./configure`进行编译前的配置。 - **编译**:使用`make`命令开始编译。 - **安装**:`make install`命令用于安装Snappy。 - **默认安装路径**:Snappy默认安装到`/usr/local/lib`。 - **验证...