BZip2Codec压缩、Map端压缩控制、Reduce端压缩控制……都在这份Hadoop整合压缩知识点里了!...

作者 | Tai_Park

责编 | Carol

来源 | CSDN 博客

封图 | CSDN付费下载于东方 IC

今天来聊聊 Hadoop 的压缩。

压缩:原始数据通过压缩手段产生目标数据,要求输入和输出的内容是一样的(大部分),但体积是不一样的。

对于单机用户来说,磁盘空间的限制导致了文件压缩的需求;对于Hadoop用户来说,由于DataNode的限制,也要对HDFS上的数据进行压缩。压缩的目的是减少存储在HDFS上的数据所占用的空间(磁盘的角度),提升网络的传输效率(网络的角度)。对于分布式计算框架来说,Shuffle是一个主要的技术瓶颈。

大数据处理流程基本上是输入==>处理==>输出,举例来说,在离线处理方面,Spark可以HDFS==>Spark==>HDFS,在实时处理方面,Spark Streaming可以Kafka==>Spark Streaming==>RDBMS。压缩可以使用在输入时,也可以使用在处理时(比如map作为中间状态,它的输出可以压缩以减少Shuffle的量),输出时。

MR在进行压缩数据处理时,不需要手工去处理。但是MR执行过程中,是需要一个动作进行数据压缩、解压的,MR根据后缀名进行处理。在处理压缩、解压的过程中,是有CPU资源的消耗的。如果集群本来CPU使用率很高,就会对其他作业产生影响,不建议使用压缩。

常见的压缩格式有GZIP、BZIP2、LZO、SNAPPY。选择压缩格式要从压缩比、压缩速度考虑。不同的压缩格式对应不同的codec。

BZip2Codec压缩

package com.bigdata.compression;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class CompressionApp {public static void main(String[] args) throws Exception{String filename = "ip.txt";String method = "org.apache.hadoop.io.compress.BZip2Codec";compress(filename,method);}private static void compress(String filename, String method) throws Exception{FileInputStream fis = new FileInputStream(new File(filename));Class<?> codecClass = Class.forName(method);CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(codecClass, new Configuration());FileOutputStream fos = new FileOutputStream(new File(filename + codec.getDefaultExtension()));CompressionOutputStream cos = codec.createOutputStream(fos);IOUtils.copyBytes(fis,cos,1024*102485);cos.close();fos.close();fis.close();}
}
  1. 读取输入流

  2. 通过类名反射出对应的codec

  3. 写出输出流

  4. 通过IOUtils.copyBytes写出去

压缩前后对比:

BZip2Codec解压

private static void decompression(String filename) throws Exception{CompressionCodecFactory factory = new CompressionCodecFactory(new Configuration());CompressionCodec codec = factory.getCodec(new Path(filename));CompressionInputStream fis = codec.createInputStream(new FileInputStream(new File(filename)));FileOutputStream fos = new FileOutputStream(new File(filename) + ".decoded");IOUtils.copyBytes(fis,fos,1024*102485);fos.close();fos.close();fis.close();}

解压前后对比:

Map端压缩控制

mapred-default.xml中有mapreduce.map.output.compress参数,控制map输出时的压缩,mapreduce.map.output.compress.codec控制压缩类型。

代码层面可以用:

configuration.setBoolean("mapreduce.map.output.compress",true);
configuration.setClass("mapreduce.map.output.compress.codec",BZip2Codec.class,CompressionCodec.class);

进行设置即可。

若要在配置层面更改,core-site.xml需要加上:

<property><name>io.compression.codecs</name><value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

 mapred-site.xml添加:

mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.BZip2Codemapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Code

配置文件修改完重启Hadoop即可。

Reduce端压缩控制

mapred-default.xml中有mapreduce.output.fileoutputformat.compress参数,控制reduce端输出时的压缩,

mapreduce.output.fileoutputformat.compress.codec控制压缩类型。

设置同上。

你还有什么 Hadoop 整合压缩相关知识点?欢迎评论告诉我们 ~

《原力计划【第二季】- 学习力挑战》正式开始!即日起至 3月21日,千万流量支持原创作者!更有专属【勋章】等你来挑战

推荐阅读:6 个步骤,教你在Ubuntu虚拟机环境下,用Docker自带的DNS配置Hadoop | 附代码
删库跑路事件发生,SaaS云服务如何守护数据安全
释放低代码小宇宙,微软 Power Platform 震撼来袭!
闪电网络的 5 个优点和4 个缺点、本质、来源与工作原理……一文带你读懂闪电网络!
乔布斯遗孀裸捐 250 亿美元财产:没兴趣累积财富
赔偿谷歌1.8亿美元!前Uber自动驾驶主管被告到破产
真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WAF+SLB负载不均衡案例分享

问题演变过程 时间点1&#xff1a;高防WAFSLB2台ECS 时间点2&#xff1a;高防WAFSLB4台ECS 问题描述 在时间点1时&#xff0c;没有发现明显的负载不均衡的情况。在时间点2时&#xff0c;出现大部分请求都打到了其中一台ECS上。需要定位问题原因 问题梳理 问题链路 是SLB后…

架构整洁之道, 看这一篇就够了!

程序的世界飞速发展&#xff0c;今天所掌握的技能可能明年就过时了&#xff0c;但有些知识历久弥新&#xff0c;掌握了它们&#xff0c;你在程序的海洋中就不会迷路&#xff0c;架构思想就是这样的知识。 本文是《架构整洁之道》的读书心得&#xff0c;作者将书中内容拆解后再组…

2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?

培根说&#xff0c;『读书造成充实的人&#xff0c;会议造成未能觉悟的人&#xff0c;写作造成正确的人』。在短信短视频快速迭代的快时代&#xff0c;更深度的思考、更正确的实践&#xff0c;更成体系的写作与分享&#xff0c;尤显可贵。这里&#xff0c;每一篇博文都是开发者…

(进阶篇_01)Oracle数据同步3种场景

文章目录一、场景分析二、实战2.1. 创建原表表结构初始化数据2.2. 创建目标表表结构2.3. 同步前效果图2.4. 连接串2.5. 执行同步2.6.执行后效果图2.7.操作记录三、实战场景2&#xff08;第1种&#xff09;3.1. 原表表结构初始化数据3.2. 目标表表结构3.3. 连接字符串3.4. 数据同…

html背景图片横屏,CSS背景颜色 背景图片 居中 重复 固定样式background经验篇

我们使用CSS Background样式属性&#xff0c;可以设置网页背景单一颜色、网页背景为图片、网页背景图片居中于网页、网页背景图片网页固定位置、网页背景图片中网页中重复平铺等css背景样式介绍与案例讲解。扩展阅读&#xff1a;CSS背景Background基础&#xff1a;http://www.d…

借助混沌工程工具 ChaosBlade 构建高可用的分布式系统

在分布式架构环境下&#xff0c;服务间的依赖日益复杂&#xff0c;可能没有人能说清单个故障对整个系统的影响&#xff0c;构建一个高可用的分布式系统面临着很大挑战。在可控范围或环境下&#xff0c;使用 ChaosBlade 工具&#xff0c;对系统注入各种故障&#xff0c;持续提升…

etcd 在超大规模数据场景下的性能优化

概述 etcd是一个开源的分布式的kv存储系统, 最近刚被cncf列为沙箱孵化项目。etcd的应用场景很广&#xff0c;很多地方都用到了它&#xff0c;例如kubernetes就用它作为集群内部存储元信息的账本。本篇文章首先介绍我们优化的背景&#xff0c;为什么我们要进行优化, 之后介绍et…

时间复杂度的表示、分析、计算方法……一文带你看懂时间复杂度!

作者 | OverRedMaple责编 | Carol来源 | CSDN 博客封图 | CSDN付费下载于东方 IC如果你还在发愁究竟怎么计算时间复杂度和空间复杂度&#xff0c;那你是来对地方了&#xff01;名词解释&#xff1a;在计算机科学中&#xff0c;时间复杂性&#xff0c;又称时间复杂度&#xff0c…

ThreadPoolExecutor中的keepAliveTime详解

文章目录一、keepAliveTime的概念二、keepAliveTime的设置方法2.1. 通过构造函数设置2.2. 通过setKeepAliveTime方法动态设置三、线程是如何根据keepAliveTime进行销毁的阅读这篇文章&#xff0c;你将会知道&#xff1a; keepAliveTime的概念。 keepAliveTime是如何设置的。 线…

OPPO数据中台之基石:基于Flink SQL构建实数据仓库

本文整理自 2019 年 4 月 13 日在深圳举行的 Flink Meetup 会议&#xff0c;分享嘉宾张俊&#xff0c;目前担任 OPPO 大数据平台研发负责人&#xff0c;也是 Apache Flink contributor。本文主要内容如下&#xff1a; OPPO 实时数仓的演进思路&#xff1b;基于 Flink SQL 的扩…

如何实现7*24小时灵活发布?阿里技术团队这么做

研发效能分为两块&#xff0c;一是用技术的更新来提升效率&#xff1b;二是提高整个技术生态中的协同效率&#xff0c;激发技术活力。阿里巴巴技术团队在此基础上要实现的终极目标是打造7*24小时灵活发布的通道&#xff0c;以及提供更快的业务代码迭代能力。今天&#xff0c;阿…

不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码...

作者 | chen_01_c责编 | Carol来源 | CSDN 博客封图 | CSDN付费下载于视觉中国hadoop介绍Hadoop 是 Lucene 创始人 Doug Cutting&#xff0c;根据 Google 的相关内容山寨出来的分布式文件系统和对海量数据进行分析计算的基础框架系统&#xff0c;其中包含 MapReduce 程序&#…

数据科学家是个性感的工作?我信你个鬼!

数据科学家40%是个吸尘器&#xff0c;40%是个清洁工&#xff0c;剩下20%是个算命的。作者 | Jingles译者 | 香槟超新星&#xff0c;责编 | 夕颜出品 | CSDN&#xff08;ID:CSDNnews&#xff09;根据《哈佛商业评论》的说法&#xff0c;数据科学家是21世纪最性感的工作。在现在这…

深入搜索引擎原理

之前几段工作经历都与搜索有关&#xff0c;现在也有业务在用搜索&#xff0c;对搜索引擎做一个原理性的分享&#xff0c;包括搜索的一系列核心数据结构和算法&#xff0c;尽量覆盖搜索引擎的核心原理&#xff0c;但不涉及数据挖掘、NLP等。文章有点长&#xff0c;多多指点~~ 一…

印度版的“大众点评”如何将 Food Feed 业务从 Redis 迁移到 Cassandra

Zomato 是一家食品订购、外卖及餐馆发现平台&#xff0c;被称为印度版的“大众点评”。目前&#xff0c;该公司的业务覆盖全球24个国家&#xff08;主要是印度&#xff0c;东南亚和中东市场&#xff09;。本文将介绍该公司的 Food Feed 业务是如何从 Redis 迁移到 Cassandra 的…

利用Packer自定义镜像创建容器集群

阿里云容器服务Kubernetes集群支持CentOS操作系统&#xff0c;在绝大多数情况下可以满足客户的要求。但是有些客户由于业务系统对操作系统依赖比较高&#xff0c;希望定制化一些操作系统参数&#xff0c;则可以用自定义镜像来创建Kubernetes集群。 创建自定义操作系统镜像有两…

“远程”、“协作”风靡之际,你对TA知晓多少?

作者|晶少 转载|CSDN博客 2.4亿人在线使用文档协作无延宕…… 6万名武汉中小学生实力打造“远程课堂”活学高效…… 疫情以来&#xff0c;“远程”、“协作”持续大热&#xff0c;此局毋庸置疑。 根据QuestMobile最新发布的《2020中国移动互联网“战役”专题报告》显示&am…

蚂蚁金服OceanBase性价比是传统数据库的十倍

200名数据库领域从业三年以上的会员投票和专业的评委评选&#xff0c;在如此严苛的条件之下&#xff0c;蚂蚁金服金融级分布式关系数据库OceanBase 2.0依然获得了专家评审团的一致青睐&#xff0c;荣获2019中国数据库技术大会的“年度最佳创新产品”奖。 蚂蚁金服资深总监韩鸿源…

战疫内外,京东智联云如此“一鸣惊人”!

作者|晶少 转载|CSDN博客 鼠年春节&#xff0c;一场疫情突如其来地打破了人们平静的生活&#xff1b;但在滨州&#xff0c;一款名为“疫情助手”的上线软件却为滨州市民的疫情生活带来“雪中送炭”的丝丝温情&#xff0c;细微知著中人们深深感受到了京东诠释而来的“ABCDE”技…

亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型

背景 互联网快速发展的今天&#xff0c;社交类应用、消息类功能大行其道&#xff0c;占据了大量网络流量。大至钉钉、微信、微博、知乎&#xff0c;小至各类App的推送通知&#xff0c;消息类功能几乎成为所有应用的标配。根据场景特点&#xff0c;我们可以将消息类场景归纳成三…