IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【Hadoop】5.4 Hadoop压缩 -> 正文阅读

[大数据]【Hadoop】5.4 Hadoop压缩

5.4.1 概述

  1. 压缩的好处和坏处

    1. 压缩的优点:

      以减少磁盘 IO、减少磁盘存储空间

    2. 压缩的

      缺点 :增加 CPU开销

  2. 压缩原则

    1. 运算密集型的 Job,少用压缩
    2. IO密集型的 Job,多用压缩
  3. MapReduce支持的压缩编码

    1. 压缩算法对比介绍

      压缩格式Hadoop 是否自带算法文件扩展名是否可切片换成压缩格式后,原来的程序是否需要修改
      DEFLATE是,直接使用DEFLATE.deflate和文本处理一样,不需要修改
      Gzip是,直接使用DEFLATE.gz和文本处理一样,不需要修改
      bzip2是,直接使用bzip2.bz2和文本处理一样,不需要修改
      LZO否,需安装LZO.lzo需要建索引,还需指定输入格式
      Snappy是,直接使用Snappy.Snappy和文本处理一样,不需要修改
    2. 压缩性能的比较

      在这里插入图片描述

5.4.2 压缩方式的选择

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

  1. Gzip压缩
    1. 优点:压缩率比较高
    2. 缺点:不支持Split 压缩 /解压速度 一般
  2. Bzip2压缩
    1. 优点:压缩率高 支持 Split
    2. 缺点:压缩/解压速度慢
  3. Lzo压缩
    1. 优点:压缩/解压速度比较快;支持 Split
    2. 缺点:压缩率 一般 想支持切片需要额外创建索引
  4. Snappy 压缩
    1. 优点:压缩和解压缩速度快
    2. 缺点:不支持Split;压缩率一般

5.4.3 压缩位置的选择

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

在这里插入图片描述

  1. 输入端采用压缩

    1. 无须显示指定使用的编解码方式。Hadoop自动检查文件扩
      展名,如果扩展名能够匹配,就会用恰当的编解码方式对文
      件进行压缩和解压
    2. 企业开发:考虑因素
      1. 数据量小于块大小,重点考虑压缩和解压缩速度比较快
        的LZO/Snappy
      2. 数据量非常大,重点考虑支持切片的Bzip2和LZO
  2. Mapper输出采用压缩

    企业开发中如何选择:为了减少MapTask和ReduceTask之间的网络IO。重点考虑压缩和解压缩快的LZO、Snappy

  3. Reducer输出采用压缩

    1. 如果数据永久保存,考虑压缩率比较高的Bzip2和Gzip
    2. 如果作为下一个MapReduce输入,需要考虑数据量和是否支持切

5.4.4 压缩参数配置

  1. 为了支持多种压缩/解压缩算法,Hadoop 引入了编码/解码器

    在这里插入图片描述

  2. 要在Hadoop 中启用压缩,可以配置如下参数

    参数默认值阶段建议
    io.compression.codecs(在core-site.xml 中配置)无,这个需要在命令行输入hadoop checknative 查看输入压缩Hadoop 使用文件扩展名判断是否支持某种编解码器
    mapreduce.map.output.compress (在 mapred site.xml 中配置)falsemapper这个参数设为true 启用压缩
    mapreduce.map.output.compress.codec (在 mapredsite.xml 中配置)org.apache.hadoop.io.compress.DefaultCodecmapper输出企业多 使用 LZO 或S nappy 编解码器在此阶段压缩数据
    mapreduce.output.fileoutputformat.compress (在mapred site.xml 中配置)falsereducer输出这个参数设为true 启用压缩
    mapreduce.output.fileoutputformat.compress.codec (在mapred site.xml 中配置)org.apache.hadoop.io.compress.DefaultCodecreducer输出使用标准工具或者编解码器,如 gzip 和bzip2

5.4.5 压缩实操案例

  1. Map输出 端采用压缩:

    在Driver类中添加:

    // 开启 map 端输出压缩
    config.setBoolean("mapreduce.map.output.compress", true);
    
    // 设置 map 端输出压缩方式
    config.setClass("mapreduce.map.output.compress.codec",BZip2Codec.class , CompressionCodec.class);
    
  2. Reduce输出 端采用压缩:

    在Driver类中添加:

    // 设置 reduce 端输出压缩开启
    FileOutputFormat.setCompressOutput(job, true);
    // 设置压缩的方式
    //FileOutputFormat.setOutputCompressorClass(job, BZip2Codec.class);
    FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);
    //FileOutputFormat.setOutputCompressorClass(job, DefaultCodec.class);
    
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:39:36  更:2021-08-15 15:41:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:27:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码