首页 > 其他分享 >大数据面试题:MapReduce压缩方式

大数据面试题:MapReduce压缩方式

时间:2023-10-06 11:31:36浏览次数:35  
标签:面试题 需要 压缩 MapReduce 支持 Gzip 格式 压缩率


可回答:1)Hadoop常见的压缩算法有哪些?

问过的一些公司:网易云音乐(2022.11),阿里(2020.08)

参考答案:

1、MapReduce支持的压缩方式

压缩格式

hadoop自带?

算法

文件扩展名

是否可切分

换成压缩格式后,原来的程序是否需要修改

DEFLATE

是,直接使用

DEFLATE

.deflate


和文本处理一样,不需要修改

Gzip

是,直接使用

DEFLATE

.gz


和文本处理一样,不需要修改

bzip2

是,直接使用

bzip2

.bz2


和文本处理一样,不需要修改

LZO

否,需要安装

LZO

.lzo


需要建索引,还需要指定输入格式

Snappy

否,需要安装

Snappy

.snappy


和文本处理一样,不需要修改

2、压缩性能比较

压缩算法

原始文件大小

压缩文件大小

压缩速度

解压速度

gzip

8.3GB

1.8GB

17.5MB/s

58MB/s

bzip2

8.3GB

1.1GB

2.4MB/s

9.5MB/s

LZO

8.3GB

2.9GB

49.3MB/s

74.6MB/s

3、压缩方式选择

压缩方式选择时重点考虑:压缩/解压缩速度、压缩率(压缩后存储大小)、压缩后是否可以支持切片。

Gzip压缩

优点:压缩率比较高,而且压缩/解压速度也比较快;Hadoop本身支持,在应用中处理Gzip格式的文件就和直接处理文本一样;大部分Linux系统都自带Gzip命令,使用方便。

缺点:不支持Split

应用场景:当每个文件压缩之后在130M以内的(1个块大小),都可以考虑使用Gzip压缩格式。例如一天或者一个小时的日志压缩成一个Gzip文件。

Bzip2压缩

优点:支持split;具有很高的压缩率,比gzip压缩率都高;hadoop本身支持,但不支持native;在linux系统下自带bzip2命令,使用方便。

缺点:压缩/解压速度慢;不支持native。

应用场景:适合对速度要求不高,但需要较高的压缩率的时候,可以作为mapreduce作业的输出格式;或者输出之后的数据比较大,处理之后的数据需要压缩存档减少磁盘空间并且以后数据用得比较少的情况;或者对单个很大的文本文件想压缩减少存储空间,同时又需要支持split,而且兼容之前的应用程序(即应用程序不需要修改)的情况 。

Lzo压缩

优点:压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;可以在linux系统下安装lzop命令,使用方便。

缺点:压缩率比gzip要低一些;hadoop本身不支持,需要安装;在应用中对lzo格式的文件需要做一些特殊处理(为了支持split需要建索引,还需要指定inputformat为lzo格式)。

应用场景:一个很大的文本文件,压缩之后还大于200M以上的可以考虑,而且单个文件越大,lzo优点越越明显。

Snappy压缩

优点:高速压缩速度和合理的压缩率。

缺点:不支持split;压缩率比gzip要低;hadoop本身不支持,需要安装;

应用场景:当Mapreduce作业的Map输出的数据比较大的时候,作为Map到Reduce的中间数据的压缩格式;或者作为一个Mapreduce作业的输出和另外一个Mapreduce作业的输入。

4、压缩位置选择

压缩可以在MapReduce作用的任意阶段启用

大数据面试题:MapReduce压缩方式_mapreduce

输入端采用压缩

在有大量数据并计划重复处理的情况下,应该考虑对输入进行压缩。然而,你无须显示指定使用的编解码方式。Hadoop自动检查文件扩展名,如果扩展名能够匹配,就会用恰当的编解码方式对文件进行压缩和解压。否则,Hadoop就不会使用任何编解码器。

mapper输出端采用压缩

当map任务输出的中间数据量很大时,应考虑在此阶段采用压缩技术。这能显著改善内部数据Shuffle过程,而Shuffle过程在Hadoop处理过程中是资源消耗最多的环节。如果发现数据量大造成网络传输缓慢,应该考虑使用压缩技术。可用于压缩mapper输出的快速编解码器包括LZO或者Snappy。

reducer输出采用压缩

在此阶段启用压缩技术能够减少要存储的数据量,因此降低所需的磁盘空间。当mapreduce作业形成作业链条时,因为第二个作业的输入也已压缩,所以启用压缩同样有效。

标签:面试题,需要,压缩,MapReduce,支持,Gzip,格式,压缩率
From: https://blog.51cto.com/u_15553407/7722901

相关文章

  • Linux常见面试题,应对面试分享
    操作系统基础1.cpu占⽤率太⾼了怎么办?排查思路是什么,怎么定位这个问题,处理流程其他程序:1.通过top命令按照CPU使⽤率排序找出占⽤资源最⾼的进程2.lsof查看这个进程在使⽤什么⽂件或者有哪些线程3.询问开发或者⽼⼤,是什么业务在使⽤这个进程4.是否可以将这台机器隔离,不影响......
  • YOLOv5:对yolov5n模型进一步剪枝压缩
    YOLOv5:对yolov5n模型进一步剪枝压缩前言前提条件相关介绍具体步骤修改yolov5n.yaml配置文件单通道数据(黑白图片)修改models/yolo.py文件修改train.py文件剪枝后模型大小参考前言由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入YOLO系列专栏、自然语言处理专栏......
  • 【Linux笔记】tar——压缩与解压
    #【Linux笔记】tar——压缩与解压打包与压缩打包文件(生成新的tar文件):tar-cfnewTar.tarfile.txt打包并压缩文件(生成新的.tar.gz文件):tar-zcfnewTar.tar.gzfile.txt注:打包和压缩是不一样的概念gzip这种压缩方式默认只能压缩一个文件,所以当有多个文件需要压缩时,就......
  • MapReduce之学习规约
    1、概念2、代码实现自定义一个类:在JobMain(与之前的基本一样)里面:......
  • MapReduce的排列和序列化的学习
    1、概念和原理--结构化对象转换为字节流2、编程流程(举例说明)1、读取文件为键值对<偏移量,文件内容>2、Map阶段3、排序4、Reduce阶段5、保存结果--使用TextOutputFormat类3、代码编写1、自定义类型和比较器--自定义命名为SortBean并实现接口WritableComparable,还需......
  • MapReduce分区的学习
    1、概念和原理同一个分区的数据会发送给同一个reduce;可以简单解释为————标记一样,放到一个reduce里面:2、代码编写步骤(以中奖编号是否>15进行分区)1、定义Mapper可以自定义名称为PartitionMapper,并继承Mapper类:并重写map方法:2、自定义partitioner可以自定义名称为MyPa......
  • MapReduce运行模式
    1、yarn集群运行先将之前写好的MapReduce程序进行打包--Maven-->package;打包完成之后的jar包在target目录下可以找到!!!之后将jar包上传到我们的虚拟机文件夹里面去;之后输入命令:hadoopjarjar包名称jar包主类的全路径名称回车之后开始运行;在hdfs的浏览器界面(9870)能够找到......
  • MapReduce学习二之WordCount案例
    一、案例概述1、第一步--变成偏移量的K1,V1(这一步不需要我们自己写)2、进入Map阶段输出新的<K2,V2>的键值对;3、Shuffle阶段分区、排序、规约、分组输出新的键值对:4、Reduce阶段转换为<K3,V3>的新的形式的键值对;利用TextOutputFormat的类实现结果的输出;二、具体实践1......
  • MapReduce学习一
    1、相关介绍--分而治之MapReduce分布在Yarn集群2、设计构思(以wordcount为例)第一步-->读取文件,读取为键值对类型,偏移量,该行的内容;第二步(Map阶段)-->转换成为另一种键值对模式,单词,1;第三步(Suffle阶段)-->转换成另一种键值对模式,单词,<有几个这个单词,便有几个1用逗号隔开>;第四步......
  • Redis 常见面试题总结
    什么是Redis?Redis(RemoteDictionaryServer)是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的非关系型数据库。传统数据库遵循ACID规则。而Nosql(非关系型数据库)一般为分布式而分布式一......