一、Hadoop的数据压缩

  1.概述

    在进行MR程序的过程中,在Mapper和Reducer端会发生大量的数据传输和磁盘IO,如果在这个过程中对数据进行压缩处理,可以有效的减少底层存储(HDFS)读写的字节数,,并且通过减少Map和Reduce阶段数据的输入输出来提升MR程序的速度,提高了网络带宽和磁盘空间的效率;

    数据压缩可以有效的节省资源,它是MR程序的优化策略之一;  

    数据压缩会增加cpu的计算负担,但是能很大程度较少磁盘的IO。由于数据压缩占用cpu资源很小,总体还是利大于弊的。

  2.数据压缩使用原则:

    运算密集型的任务尽量少用压缩、IO密集型的任务多用压缩。

  3.MapReduce支持的压缩编码

hadoop中的压缩格式 是否自带 文件的拓展名 是否可以切分
DEFAULT .default
Gzip .gz
bzip2 .bz2
LZO .lzo
Snappy .snappy

  4.编码解码器

DEFAULT org.apache.hadoop.io.compress.DefaultCodeC
Gzip org.apahce.hadoop.io.compress.GzioCodeC
bzop2 org.apache.hadoop.io.compress.bzio2CodeC
LZO com.apache.hadoop.compression.lzoCodeC
Snappy org.apache.hadoop.io.compress.SnappyCodeC

  5.压缩性能

压缩格式 原始文件 压缩后文件 压缩速度 解压速度
Gzip 8.3G 1.8G 17.5MB/s 58MB/s
bzip2 8.3G 1.1G 2.4MB/s 9.5MB/s
LZO 8.3G 2.9G 49MB/s 74.6MB/s

二 、Hadoop压缩的使用

  1.应用在WordCount程序中

   1)在map端对数据进行压缩

    在Driver类中的获取job对象后加入配置信息:

//开启map端的输入压缩
conf.setBoolean("mapreduce.map.output.compress",true);//设置压缩方法
//默认
conf.setClass("mapreduce.map.output.compress.codec",DefaultCodeC.class,CompressionCodec.class);
//Bzip2
conf.setClass("mapreduce.mapt.output.compress.codec",Bzip2Codec.class,CompressionCode.class);
//LZO
conf.setClass("mapreduce.map.output.compress.codec".LZOCodec.class,CompressionCodec.class);

    注意:在map端开启压缩并不能从结果文件中看到结果的改变,只要程序运行成功就代表设置没问题!

   2)在reduce端对数据进行压缩

    在设置reduce输出数据类型之后加入配置信息:

//开启reduce端的输出压缩
FileOutputFormat.setCompressOutput(job,true);
//设置压缩方法
//默认
FileOutputFormat.setOutputCompressorClass(job,DefaultCodec.class);
//Bzip2
FileOutputFormat.setOutputCompressorClass(job,Bzip2Codec.class);
//Gzip
FileOutputFormat.setOutputCompressorClass(job,GzipCodec.class);

    三种选择一种即可,可以看到对应的结果文件看到被压缩的结果文件。

  2.自定义压缩方法

/*** @author: PrincessHug* @date: 2019/4/8, 9:49* @Blog: https://www.cnblogs.com/HelloBigTable/*/
public class TestCompress {public static void main(String[] args) throws IOException, ClassNotFoundException {Compress("G:\\weblog.log","org.apache.hadoop.io.compress.BZip2Codec");}//自定义压缩方法private static void Compress(String fileName,String method) throws IOException, ClassNotFoundException {//获取输入流FileInputStream fis = new FileInputStream(new File(fileName));//通过反射获取压缩方法并初始化Class cName = Class.forName(method);CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(cName, new Configuration());//定义输出流FileOutputStream fos = new FileOutputStream(new File(fileName + codec.getDefaultExtension()));//创建压缩输出流CompressionOutputStream cos = codec.createOutputStream(fos);//流的拷贝IOUtils.copyBytes(fis,cos,2*1024*1024,false);//关闭资源fis.close();cos.close();fos.close();}
}

  

  

转载于:https://www.cnblogs.com/HelloBigTable/p/10668931.html

Hadoop的数据压缩相关推荐

  1. Hadoop:数据压缩、Yarn、企业优化

    文章目录 一.Hadoop数据压缩 1.1 概述 1.2 压缩策略和原则 1.3 MR支持的压缩编码 1.4 压缩方式选择 1.5 压缩位置选择 1.6 压缩参数配置 1.7 压缩实操案例 二.Yar ...

  2. 3.Hadoop Hive服务

    接上文-----> 目录: 一.安装 二.have基本命令操作 三.hive数据仓库 四.hive表的类型: 五.hive中重要的元数据表 六.hive的连接方式 七.使用jdbc编写外部程序操 ...

  3. 大数据与云计算——牛客网大数据面试问题总结

    本文是个人从牛客网中的大数据的面试的面经中筛选出来与大数据的的相关的面试的问题:包括以下的技术栈: Flume Zookeeper Hbase Hive Hadoop  Spark Flink  HD ...

  4. W05 - 999、云小蜜人工智能训练师

    初学耗时:999h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 『   因为要去见那个不一般的人,所以我就不能是一般人.』  W99.阿里大学征服路 - W系列总纲   ...

  5. HDFS的文件压缩格式

    Hadoop默认支持Gzip和BZip2的解压缩方式,可直接读取(hadoop fs -text命令),但hive只能用TEXTFILE格式的表加载,然后再insertoverwrite 到其他格式的 ...

  6. Hadoop之Hadoop数据压缩

    Hadoop之Hadoop数据压缩 目录 概述 MR支持的压缩编码 Gzip压缩 Bzip2压缩 Lzo压缩 Snappy压缩 压缩位置选择 压缩参数配置 1. 概述 压缩技术能够有效减少底层存储系统 ...

  7. Hadoop Hive概念学习系列之hive的数据压缩(七)

    Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直 ...

  8. HADOOP与HDFS数据压缩格式

    HADOOP与HDFS数据压缩格式 1.cloudera 数据压缩的一般准则 一般准则 是否压缩数据以及使用何种压缩格式对性能具有重要的影响.在数据压缩上,需要考虑的最重要的两个方面是 MapRedu ...

  9. 大数据培训课程Hadoop数据压缩

    Hadoop数据压缩概述 压宿支术能够有效咸少底层存储系统(HIDFS)读写字节数.压缩提高了网 络带宽和磁盘空间的效率.在运行MR程序时,I/O操作.网络数据传输.Shuffle 和Merge要花大 ...

最新文章

  1. 青源 LIVE 第 28 期 | 北大燕博南:下一代AI芯片—存内计算的硬核与软着陆
  2. linux 新用户 界面登录,如何在Linux系统登录界面加入个性化提示信息
  3. .net框架读书笔记---引用参数(ref/out)
  4. Codeforces 550D. Regular Bridge 构造
  5. 漫画科普:天线的原理?
  6. No such file or dirctionary:/ufeff.....关于ufeff错误的解决办法
  7. 怎么样用 Python 玩转 Redis !过来 咱一起聊聊!
  8. 好看的按钮集合HTML + CSS各种好看按钮组件
  9. [Xamarin] 客製化的ListView之章 (转帖)
  10. 一款度盘高速下载工具
  11. android ipad 免费思维导图软件,推荐一款 iPad 能用的思维导图软件
  12. 白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)
  13. mysql reconnect_在设置了MYSQL_OPT_RECONNECT之后,mysql_ping是否还有必要?
  14. 织梦后台登录页面显示空白怎么解决
  15. JS——如何利用js实现流星雨效果?
  16. 系统可用性量表(SUS )
  17. Docker基础(上)
  18. Uedit32-视图-查看方式(高亮),显示失效.
  19. 学习笔记:MOOC 文献管理与信息分析
  20. 张勋说:简述球磨机内介质(钢球|钢棒|衬板)运动动力学(图文)

热门文章

  1. python图片镜像翻转_python中镜像实现方法
  2. 高中数学公式必背的50条秒杀技巧(学霸必备)
  3. Unity在Canvas上画线(Draw Line)实现
  4. JavaScript中的常用浏览器对象
  5. Springboot的@Aspect使用
  6. VLink的简单验证过程
  7. VS2010编译静态链接MFC的OCX遇到的问题:nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 LIBCMTD.lib(dllm
  8. 剧本--反内卷委员会
  9. 如何构稳健的商品期cry组合
  10. java计算机毕业设计体育用品购物系统源程序+mysql+系统+lw文档+远程调试