集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > 大数据 >

成都hadoop培训:Hadoop的数据压缩

发布者: 成都达内     浏览次数:     发布时间:2019-04-19 10:16:38

在进行MR程序的过程中,在Mapper和Reducer端会发生大量的数据传输和磁盘IO,如果在这个过程中对数据进行压缩处理,可以有效的减少底层存储(HDFS)读写的字节数...

  成都hadoop培训:Hadoop的数据压缩

  一、Hadoop的数据压缩

  1.概述

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

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

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

  2.数据压缩使用原则:

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

  3.MapReduce支持的压缩编码

  成都hadoop培训:Hadoop的数据压缩

  4.编码解码器

  成都hadoop培训:Hadoop的数据压缩

  5.压缩性能

  成都hadoop培训:Hadoop的数据压缩

  二 、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();

  }

  }

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56