线上集群磁盘不够,集群多次报警,采用snappy压缩格式压缩磁盘文件,缓解集群压力

1.压缩比较

在这只列出两种比较争议的压缩格式比较

lzo压缩

压缩/解压速度也比较快,合理的压缩率;

支持split,是hadoop中最流行的压缩格式(需要建索引,文件修改后需要重新建索引);

支持hadoop native库;

可以在linux系统下安装lzop命令,使用方便;

压缩率比gzip要低一些;

hadoop本身不支持,需要安装;

在应用中对lzo格式的文件需要做一些特殊处理(为了支持split需要建索引,还需要指定inputformat为lzo格式);

因此适用于较大文本的处理

snappy压缩

高速压缩速度和合理的压缩率;

支持hadoop native库;

不支持split;

压缩率比gzip要低;

hadoop本身不支持,需要安装;

linux系统下没有对应的命令

因此1) 当mapreduce作业的map输出的数据比较大的时候,作为map到reduce的中间数据的压缩格式;2)或者作为一个mapreduce作业的输出和另外一个mapreduce作业的输入; 3)snappy 虽然对于文本格式不具有split特性,但是对于SequenceFile 及Avro格式,Parquet存储来说依然具有split特性

为什么选择 sanppy

Cloudera 推荐使用snappy

  • Snappy often performs better than LZO. It is worth running tests to see if you detect a significant difference.
  • For MapReduce, if you need your compressed data to be splittable, BZip2 and LZO formats can be split. Snappy and GZip blocks are not splittable, but files with Snappy blocks inside a container file format such as SequenceFile or Avro can be split. Snappy is intended to be used with a container format, like SequenceFiles or Avro data files, rather than being used directly on plain text, for example, since the latter is not splittable and cannot be processed in parallel using MapReduce. Splittability is not relevant to HBase data.
  • Snappy通常比LZO表现更好。值得运行测试以确定您是否发现了显着差异。
  • 对于MapReduce,如果需要拆分压缩数据,可以拆分BZip2和LZO格式。Snappy和GZip块不可拆分,但可以拆分容器文件格式(如SequenceFile或Avro)中带有Snappy块的文件。Snappy旨在与容器格式(如SequenceFiles或Avro数据文件)一起使用,而不是直接在纯文本上使用,例如,因为后者不可拆分且无法使用MapReduce并行处理。可拆分性与HBase数据无关。

Google官网

On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.

在64位模式的Core i7处理器的单核上,Snappy以大约250 MB /秒或更高速度压缩,并以大约500 MB /秒或更高速率进行解压缩。

2. 使用后的测试

3.安装snappy

查看snappy安装包 yum search snappy

安装snappy

yum install snappy-devel.i686

然后在 whereis libsnappy

4.将snappy 本地库编译入hadoop

下载hadoop-snappy源码

A Hadoop library of Snappy compression

Hadoop-Snappy is a project for Hadoop that provide access to the snappy compression. http://code.google.com/p/snappy/

This project is integrated into Hadoop Common (JUN 2011).

Hadoop-Snappy can be used as an add-on for recent (released) versions of Hadoop that do not provide Snappy Codec support yet.

Hadoop-Snappy is being kept in synch with Hadoop Common.

Snappy压缩的Hadoop库

Hadoop-Snappy是一个Hadoop项目,提供对snappy压缩的访问。http://code.google.com/p/snappy/

该项目已集成到Hadoop Common(JUN 2011)中。

Hadoop-Snappy可以用作最近(已发布)Hadoop版本的附加组件,但尚未提供Snappy Codec支持。

Hadoop-Snappy与Hadoop Common保持同步。

下载hadoop-snappy发现源码官方已取消

往下发现 2011年后 Hadoop-Snappy与Hadoop Common保持同步,

也就是说我们下载Hadoop-Common 就可以了

下载hadoop 源码

https://github.com/apache/hadoop/tree/branch-2.7.3

打包路径

hadoop/hadoop-common-project/hadoop-common

打包 hadoop-common

mvn clean package -Pdist,native -DskipTests -Dtar -Drequire.snappy

编译问题

需要安装protobuf ,下面是jar包

https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0

$ ./configure --prefix=/data/soft/protoc

$ make

$ make check

$ make install

别忘配置环境变量

$ vim ~/.bashrc

export PROTOC_HOME=/data/soft/protoc

export PATH=$PATH:$PROTOC_HOME/lib

然后,

$protoc --version

libprotoc.2.5.0

成功

查看重新编译后的native

hadoop/hadoop-common-project/hadoop-common/target/hadoop-common-2.7.3/lib/native

将重新编译的native 整个复制到 服务器hadoop的 lib/native下

配置文件修改:

配置mapred-site.xml,仅配置map部分:

开启map 输出压缩,会导致spark 启动新任务 发生warn  hadoop snappy 以来缺失 (安全起见也可以不开map 输出压缩,如果 有需要单独开启spark snappy 需要另配,在下一篇博客中会有)

<property>

<name>mapred.compress.map.output</name>

<value>true</value>

</property>

<property>

<name>mapred.map.output.compression.codec</name>

<value>org.apache.hadoop.io.compress.SnappyCodec</value>

</property>

开启 MapReduce 输出压缩

如果你们公司用的hadoop 生态圈组件为数据基础,那么对应 spark,druid,hbase,es等 容器可能会出现一些 文件读取解压等问题,需要进一步配置或者处理(优化方案 不开启MapReduce 输出压缩

<property>

<name>mapred.output.compress</name>

<value>true</value>

</property>

<property>

<name>mapred.output.compression.codec</name>

<value>org.apache.hadoop.io.compress.SnappyCodec</value>

</property>

将集群每个节点做同步,重启集群

5.snappy 验证

hadoop checknative

验证map snappy 输出压缩是否生效,下图选中部分为map输出文件大小

/wordcount/in 自己上传文件到hdfs,我选的是log文件

/wordcount/out2 文件在hdfs 上不能存在

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount/in /wordcount/out2

验证 hbase snappy 是否生效

/wordcount/out2 是在hadoop snappy压缩的文件

bin/hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://hadoopcluster/wordcount/out2/part-r-00000 snappy

Snappy Installer相关推荐

  1. 01-SNAP与snappy介绍及安装

    转载自:https://blog.csdn.net/lidahuilidahui/article/details/99679554 01-SNAP与snappy介绍及安装 前言 关于SNAP SNAP ...

  2. LabVIEW生成应用程序(exe)和安装程序(installer)

    目录 1.生成应用程序(exe) 2.生成安装程序(installer) 使用LabVIEW编写好的程序最后往往需要将程序拿到目标电脑上去运行,如何将程序从开发电脑上移植到目标电脑上呢?有两种方法: ...

  3. Qt Installer Framework实战

    Qt Installer Framework是Qt发布的安装程序支持框架,只需要简单的配置就可以生成安装文件,同时可以通过javascript脚本来定制安装过程. 目录结构 config packag ...

  4. 安装JDK出现Windows Installer程序包有问题,此安装需要的DLL不能运行...

    之前改动了jdk1.6的安装位置,结果卸载的时候无法卸载,重新安装也不行,都提示windows installer 程序包有问题,如图所示 首先确保windows installer服务是开启的,运行 ...

  5. MFC libraries are required for this project. Install them from the Visual Studio installer (Individu

    MFC libraries are required for this project. Install them from the Visual Studio installer (Individu ...

  6. 报错解决:undefined reference to `snappy::MaxCompressedLength(unsigned long)'

    下午在编译phxpaxos的样例时报错了,报错如下: g++ echo_sm.o echo_server.o main.o -o phxecho -L/home/zhang/phxpaxos/.lib ...

  7. 解决Windows Installer的错误

    最近好几个朋友先后遇到了一个奇怪的问题.在安装或卸载一些应用程序时,系统居然提示Windows Installer错,不能完成相应操作.直到前2天我给老板升级Office 2003时也遇到了同样的问题 ...

  8. windows installer清理实用工具

    今天编译了一个程序,一个Windows Service卸载命令写错了,导致这个程序不能正常卸载. 只好手动卸载这个Windows Service,之后再卸载程序,依然不能卸载.最后只好使用MSICUU ...

  9. Advanced Installer 打包程序并支持自动升级

    参考:  Advanced Installer 打包Winform程序 转载于:https://www.cnblogs.com/IKang8701348/p/9988161.html

  10. snappy 在linux安装及使用

    为什么80%的码农都做不了架构师?>>>    Step1 : download and install snappy If you didn't install snappy un ...

最新文章

  1. 使用主机telnet远程管理路由器和交换机的详细过程及截图
  2. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
  3. php里 like什么意思,php – 是LIKE,但是int表示应该检查的字符串
  4. B--Bookshelf 2
  5. Windows Server 2012 DHCP 服务器中的新功能:故障转移和策略
  6. Appium+Python安卓自动化测试之启动APP和配置获取
  7. 【OpenCV】OpenCV函数精讲之 -- 格式化输出方法
  8. 美图回应meitu商标纠纷:不影响主营业务 社交业务商标完备
  9. 笔记+R︱风控模型中变量粗筛(随机森林party包)+细筛(woe包)
  10. 关于DatetTime?
  11. CSDN博客常用代码
  12. java mysql聊天室_java实现聊天室的简单实现
  13. 计算机专业职业适应性考试包括什么内容,2020年分类招生《职业适应性测试(职业技能测试)》大纲...
  14. matlab向量的简单随机抽样,matlab随机抽样
  15. 阿里巴巴巨震,堪比地震
  16. 如何自制虚拟直播,在里分享3种方法,总有一个你喜欢
  17. Java后端面试(四)
  18. pixi.js 制作 流星雨效果
  19. 常见网络聊天术语(中英文对照)
  20. i58400升级可以换什么cpu_宝贝标题关键词顺序可以换吗?关键词顺序对标题有什么影响?...

热门文章

  1. 数据结构与算法学习---数据结构篇(线性表)(默然回首,夯实基础)
  2. java实现word转换pdf并批量生成水印
  3. harmonyos在哪里使用,HarmonyOS 2.0 手机版使用初体验 ——手机开发者 (Beta版)
  4. 99 年妹子开发吊打 x 度网盘的开源神器!
  5. 论文阅读_无监督知识图对齐PRASE
  6. 我的世界服务器无限矿区块指令,我的世界:不用动手也能挖到钻石?来自指令玩家的方法...
  7. 香农三大定理、香农公式
  8. pe服务器制作教程,WINPE系统制作原理教程介绍
  9. canvas火焰效果
  10. html网页制作,前端三剑客一