HDFS 压缩算法对比

Hadoop文件压缩格式分析和比较 Hadoop支持压缩格式: 压缩格式 可分割 算法 扩展名 Linux工具 gzip 否 DEFLATE .gz gzip lzo 是(加索引) LZO .lzo lzop snappy 否 阅读详情

Hive 在处理数据时,一般都需要经历文件读取和文件写出的过程,如果按照原文件的大小进行读写和传输,不仅效率查而且带宽的占用也很高,此时就需要我们这里所讲的 存储格式 和 压缩算法

不同的存储格式+压缩算法性能比较

文件存储格式不同对应不同的压缩算法,从而带来不同的性能,我们根据实际使用考虑压缩算法的性能,主要通过以下 3 个指标:

① 压缩比

压缩比越高,压缩后文件越小,所以压缩比越高越好;

压缩比越高,存储磁盘空间占用越小,可以降低单节点的磁盘IO,同时可以减少占用的带宽;

② 压缩时间

越快越好,加快数据在Hadoop集群流动的速度和磁盘 IO 的速度

③ 压缩后的文件是否可以再分割

可以分割的格式允许单一文件由多个Mapper程序处理,可以更好的并行化

压缩方式压缩比压缩速度解压缩速度是否可分割
gzip13.4%21 MB/s118 MB/s否
bzip213.2%2.4MB/s9.5MB/s是
lzo20.5%135 MB/s410 MB/s是
snappy22.2%172 MB/s409 MB/s否

HIVE 中常用的存储格式对比

存储格式是否默认存储方式压缩算法
TextFile是行式存储Gzip、Bzip2
SequenceFile否行式存储NONE、RECORD、BLOCK
Parquet否列式存储Uncompress(默认)、Snappy、Gzip、Lzo
RCFile否数据按行分块,每块按列存储-
ORCFile(RCFile的进化版本)否数据按行分块,每块按照列存储NONE、ZLIB(默认)、SNAPPY
存储方式行查询效率列查询效率压缩效率
行式存储高低低
列式存储低高高

TEXTFILE

HIVE 中默认的存储格式;

一般使用在数据贴源层(ODS 或 STG) ,针对需要使用脚本 LOAD 加载数据到 HIVE 数仓表中的情况;

数据存储时不压缩,因此磁盘的开销和数据解析开销比较大;

TEXTFILE 可以结合 Gzip、Bzip2 等压缩算法使用(系统自动检查,执行查询时自动解压),但使用这种方式,HIVE 不会对数据进行切分,从而无法对数据进行并行操作;

在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比 SequenceFile 高几十倍;

可以直接通过 LOAD 的方式从文件中加载数据到 HIVE 表中;

--- 可以不指定存储格式,默认使用 TEXTFILE
CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
STORED AS TEXTFILE
PARTITIONED BY(ds string COMMENT '按交易日分区')
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
;

当用户的数据文件格式不能被当前 HIVE 所识别的时候,可以自定义文件格式

通过实现 inputformat 和 outputformat 来自定义输入输出格式

CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
STORED AS 
INPUTFORMAT  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
PARTITIONED BY(ds string COMMENT '按交易日分区')
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
;

SEQUENCE FILE

HADOOP API 提供的一种二进制文件,以 key-value 的形式序列化到文件中;

支持切片;

数据加载导入方式可以通过INSERT方式加载数据;

--- 可以不指定存储格式,默认使用 TEXTFILE
CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
STORED AS SEQUENCEFILE
PARTITIONED BY(ds string COMMENT '按交易日分区')
;
CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
STORED AS 
STORED AS 
INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat'

PARQUET

面向列的二进制文件格式,所以是不可以直接读取的;

文件中包括该文件的数据和元数据,因此 Parquet 格式文件是自解析的;

使用场景在 Impala 和 Hive 共享数据和元数据的场景;

CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
STORED AS PARQUET
-- 也可以使用
-- STORED AS PARQUETFILE
PARTITIONED BY(ds string COMMENT '按交易日分区')
;
CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS 
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'

ORCFILE

运用 ORC 可以提高 HIVE 的读、写、计算的性能,主要使用在 DWD、DWB、DWS 层

数据按行分块,每块按照列存储;

压缩快、快速列存取;

效率比 rcfile 高,是 rcfile 的改良版本;

不考虑 ORC 的场景:需要通过 LOAD 方式加载数据到表里;需要把表里数据导出或直接可以查看等场景,这两种场景更适合使用 TEXTFILE ,易读性要比 ORC 高很多;

ORC 文件格式可以使用 HIVE 自带的命令 concatenate 快速合并小文件

CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
-- 也可以使用 STORED AS ORCFILE
-- 指定压缩算法
STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY");
PARTITIONED BY(ds string COMMENT '按交易日分区')
;
CREATE TABLE CUST_INFO
(
   user_id    string   COMMENT '用户唯一标识'
  ,user_name  string   COMMENT '用户姓名'
)
COMMENT '用户信息明细表'
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS 
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
PARTITIONED BY(ds string COMMENT '按交易日分区')
;

使用总结

# 压缩比比较
ORC >  PARQUET > TEXTFILE

# 查询速度
ORC >  TEXTFILE > PARQUET

# 存储格式为ORC,不同的压缩算法比较压缩后的文件大小
ZLIB < SNAPPY < 非压缩

① 数据量较大

如果单个文件比较大,可以使用 Parquet 存储,lzo 压缩,可以避免由于读取不可分割大文件引发的数据倾斜

② 计算逻辑比较少

使用 ORC 存储 + ZLIB 压缩,可以尽量减少占用存储空间

③ 计算逻辑比较多

使用 ORC 存储 + SNAPPY 压缩,可以提高读写速度,从而提高整体计算性能

Hadoop数据压缩总结 觉得有帮助的,请多多支持博主,点赞关注哦~ 文章目录Hadoop数据压缩一、概述二、MR 支持的压缩编码1、压缩格式2、编码/解码器3、压缩性能的比较三、压缩方式选择1、Gzip 压缩2、Bzip2 压缩3、Lzo 压缩4、Snappy 压缩四、压缩位置选择五、压缩位置选择六、压缩实操案例1、数据流的压缩和解压缩2、Map 输出端采用压缩3、Reduce 输出端采用压缩 Hadoop数据压缩 一、... 阅读详情

相关推荐

大数据——Hadoop 知识点整理

1. 大数据的特点(4V特征) Volume(大数据量):90% 的数据是过去两年产生 Velocity(速度快):数据增长速度快,时效性高 Variety(多样化):数据种类和来源多样化 结构化数据、半结构化数据、非结构化数据 Value(价值密度低):需挖掘获取数据价值 2. 谈谈 Hadoop 的优缺点 优点: 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点 高可靠性:Hadoop底层维护多个数据副本 高容错性:Hadoop框架能够自动将失败的任务重新分配 低成本:Had

Vicky_Tang 9699

hdfs存储压缩方式对比

前言: 随着数据规模的增大,集群存储的成本也随着增加,数十 PB 到百 PB 级别大集群存储空间治理成为公司基础设施部门的重中之重。另一方面,在Hadoop中,文件需要存储、传输、读取磁盘、写入磁盘等等操作,而文件的大小,直接决定了这些操作的速度。目前hdfs集群有多种存储压缩方式:gzip、bzip2、lzo、lz4、snappy等,下面介绍具体的压缩方式的对比 压缩方式对比 整体对...

breakout_alex的博客 4510

MapReduce数据压缩

MapReduce数据压缩Hadoop三个阶段Hadoop数据压缩压缩的基本原则MR支持的压缩编码编码/解码器压缩性能使用方式map端输出压缩reduce端输出压缩 Hadoop三个阶段 1)分布式文件系统HDFS 用于存储宏大数据量文件。 2)分布式编程框架MapReduce 用于分布式计算海量数据。 3)yarn框架 分布式调度平台,用于为MapReducer合理分配资源。 Hadoop数据压...

Even710的博客 772

Hadoop之常见压缩格式以及性能对比

1.压缩的好处和坏处 好处 减少存储磁盘空间 降低IO(网络的IO和磁盘的IO) 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度 坏处 由于使用数据时,需要先将数据解压,加重CPU负荷 2.压缩格式 压缩格式 工具 算法 扩展名 是否支持分割 Hadoop编码/解码器 DEFLATE N/A DEFLATE .deflate No org.apache.hadoo...

liweihope的博客 4159

Spark3实战:如何用ZSTD压缩优化Hive表存储(附ORC/Parquet配置示例)

本文详细介绍了在Spark3环境中使用ZSTD压缩算法优化Hive表存储的实战方法。通过对比ZSTD与Snappy等传统算法的性能,阐述了其在提升压缩比(可达20%-30%)与查询效率方面的优势,并提供了针对ORC、Parquet等文件格式的具体配置示例与迁移步骤,帮助大数据团队有效降低存储成本。

github5actions的博客 988

hadoop和mysql对比(优缺点及使用场景)

概述 hadoop有三大组件,hdfs分布式文件系统,map-reduce用于计算,yarn(辅助); 同时mysql也是用来数据存储和和计算的,存储数据到表中, 使用sql语句进行计算; 所以我们可以对比一下他们的优缺点和使用场景. mysql 优点: 1.mysql使用表存储数据,使用sql直接查询和一些聚合(sum,avg..)计算,使用操作简单 2.mysql上手入门门槛低,基本上就是安装,学会使用基本的DDl,DQL就算是入门了 3.mysql只是作为一个存储中间件,一般是单节点,主从节点的结构,

weixin_38312719的博客 6965

HDFS 文件压缩算法

优先选择Zstd:在现代Hadoop集群中,Zstd在压缩比、速度和可分片性上表现均衡。避免Gzip用于计算:除非存储成本是首要考虑,否则不可分片的压缩格式会拖慢作业。监控资源:压缩会转移瓶颈从IO到CPU,需确保Datanode的CPU足够(如16核以上)。欢迎关注我的微信公众号,获取第一时间的内容推送。

学无止境焉 522

HDFS数据压缩实战:节省存储空间的5种压缩算法对比

在大数据时代,HDFS作为分布式存储的基石,面临着数据量爆炸式增长带来的存储成本和性能挑战。本文深入探讨HDFS数据压缩的实战应用,通过"原理解析-算法对比-实战配置-性能优化"的四步方法论,全面剖析Gzip、Snappy、LZO、Bzip2和LZ4五种主流压缩算法。我们将通过生动比喻、可视化图表和真实案例,帮助读者理解各算法的工作机制,掌握在不同场景下的选型策略,并提供从配置到监控的完整实施指南。

软件工程实践的博客 837

HDFS面试题

HDFS面试题 1、Hdfs的block和spark的partition有什么区别吗? 在hdfs中的block是分布式存储的最小单元,等分,并且可以设置冗余,这样设计会出现一部分磁盘空间的浪费,但是整齐的block大小,便于快速找到,读取对应的内容,例如快手利用hdfs来进行存储视频。 Spark中的parition是弹性分布式数据集中rdd的最小单元,rdd是由分布在各个节点上的partition组成的。partition是指在spark计算过程中,生成的数据在计算空间内的最小单元,同一份数据,par

百看不如一RUN 1623

大数据领域 Hadoop 数据压缩算法的选择与应用

本文将从“为什么需要压缩”讲起,带你系统理解Hadoop数据压缩的核心价值;然后逐一拆解主流压缩算法(Gzip、Snappy、LZO、Bzip2、LZ4)的原理、特性与适用场景;接着通过关键指标对比(压缩比、速度、可分割性等)建立选型框架;再手把手教你在Hadoop各组件(HDFS、MapReduce、Hive、Spark)中配置和应用压缩;最后通过实战案例(日志数据、结构化数据、归档数据)演示如何根据实际场景选择最优算法,并给出性能优化建议。Hadoop支持自定义压缩编解码器(通过实现。

AI Python 编程之道的博客 844

浅谈大数据领域 HDFS 的数据压缩算法比较

HDFS作为大数据存储的基础设施,面临海量数据存储成本高、数据传输带宽瓶颈、MapReduce任务IO延迟等挑战。数据压缩通过减少数据存储空间和传输量,成为缓解这些问题的核心手段。本文聚焦HDFS支持的5种主流无损压缩算法(Gzip、Bzip2、Snappy、LZ4、ZSTD),全面对比其技术特性、性能指标及适用场景,为实际生产环境的算法选型提供理论与实践指导。核心概念:解析HDFS压缩架构与算法分类算法原理:深入剖析5种算法的技术实现数学模型:量化压缩效率的关键指标。

AI 算法实战派 381

【HDFS入门】HDFS性能调优实战:压缩与编码技术深度解析

Hadoop分布式文件系统(HDFS)作为大数据生态系统的存储基石,其性能直接影响整个数据处理流程的效率。在实际生产环境中,合理的性能调优可以显著提升HDFS的吞吐量、降低存储成本并优化资源利用率。

IT成长日记的博客 1506

大数据领域 HDFS 数据压缩算法比较与选择

在大数据时代,数据量呈现爆炸式增长,HDFS 作为大数据存储的重要基础,面临着巨大的存储压力。数据压缩是缓解存储压力、降低传输成本的有效手段。本文的目的就是深入比较 HDFS 中常用的数据压缩算法,明确它们各自的特点和适用场景,为大数据开发者和运维人员提供选择合适压缩算法的参考。范围涵盖了常见的几种压缩算法,如 Gzip、Snappy、LZO 等。本文首先会引入一个有趣的故事来引出数据压缩的概念,接着详细解释核心概念,包括不同的数据压缩算法。

软件工程实践的博客 1161

[hadoop]我的问号

1.hadoop中飞飞对原始的hdfs文件进行了压缩,采用的 LZO压缩算法,理由是这种压缩比高,LZO 是什么,需要了解一下 下面摘自《hadoop开发者》书刊中的一张图片 2. 飞飞对map 的输出也使用了一种压缩 - snappy,这种压缩的压缩比不是太高,但解压和和压缩的速度快,需要了解一下。       http://www.infoq.com/cn/news/2011/0

czw698的专栏 497

CST中PEC结构涂覆吸波材料的RCS仿真与优化

本文详细介绍了在CST Studio Suite中对PEC结构涂覆吸波材料进行RCS仿真的完整流程与优化策略。通过精确的材料参数设置、涂层厚度优化和仿真技巧,有效降低目标的雷达散射截面,提升隐身性能。文章结合实战案例,为工程师提供了一套高效的RCS仿真与优化解决方案。

c2d3e4f的博客 691

保姆级避坑指南:用Docker在Ubuntu 22.04上部署Isaac Sim 5.1.0,搞定宇树G1仿真环境

本文提供了一份详细的保姆级避坑指南,帮助用户在Ubuntu 22.04上通过Docker部署Isaac Sim 5.1.0,并成功搭建宇树G1仿真环境。文章涵盖了环境准备、Docker与NVIDIA容器工具包的配置、Isaac Sim镜像的定制化拉取与配置,以及宇树G1仿真环境的实战调试,旨在帮助开发者高效解决部署过程中的常见问题。

weixin_33728268的博客 205

hadoop3.x生态圈及学习指南完整版 知识点及其框架

hadoop3.x生态圈及学习指南完整版 知识点及其框架

qq_27528193的博客 320

不用买VR设备!用UE5内置模拟器开发虚拟现实项目的完整教程

本文提供了一套无需购买昂贵VR硬件的虚拟现实开发最佳实践方案。详细介绍了如何利用虚幻引擎5内置的XR模拟器,从零开始配置开发环境、模拟操作、构建场景并实现核心交互逻辑。通过这套纯软件方案,开发者可以高效学习VR开发核心,大幅降低入门门槛和成本。

weixin_29019241的博客 611

超高速压缩引擎:LZ4在HDFS分布式存储中的极致优化配置

在大数据时代,HDFS(Hadoop Distributed File System)作为分布式存储的核心,面临着数据爆炸式增长带来的存储成本与读写性能双重挑战。传统压缩算法如Gzip虽能节省空间,但高达10倍的压缩延迟成为MapReduce作业的性能瓶颈;Snappy虽在速度上有提升,但压缩比不足导致存储成本居高不下。你是否正在寻找一种能平衡压缩速度、压缩比与解压缩性能的解决方案?本文将系统讲解...

gitblog_00928的博客 927

FME入门系列教程3-带你玩转GIS数据搬运与处理

FME(Feature Manipulation Engine)就像GIS界的"瑞士军刀",它能轻松解决90%的数据处理难题。我最初接触FME是因为要处理200多个不同格式的CAD地形图,传统方法需要1周时间,用FME只花了2小时!:支持300+数据格式(Shapefile、GeoJSON、CAD、Excel等)添加Reader(数据源):选择示例数据roads.shp。添加Writer(输出):设置输出为GeoJSON格式。:将常用流程保存为Template(.fmwt)

weixin_41234946的博客 1241

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 712

Hadoop IO总结和文件系统

一、IO总结1.HadoopIO操作意义Hadoop自带一套用于I/O的原子性的操作(不会被线程调度机制打断,一直到结束,中间不会有任何context switch) 特点:基于保障海量数据集的完整性和压缩性 Hadoop提供了一些用于开发分布式系统的API(一些序列化操作+基于磁盘的底层数据结构)2.HDFS数据完整性用户希望储存和处理数据的时候,不会有任何损失或者损坏。 Hadoop提供

hhl19961013的博客 543

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

hadoop

Hadoop是一个开源的分布式管理计算系统,旨在处理大规模数据集的存储和处理问题。它由Apache软件基金会维护和开发,是基于Google的MapReduce和Google文件系统(GFS)论文的思想而构建的。HDFS是一个分布式文件存储系统,用于在大型集群上存储数据。它将数据分成块并在集群中的多个节点上分布存储,以实现高可用性和容错性。HDFS的设计适用于存储大文件,通常用于批量处理任务。MapReduce是Hadoop的计算模型,用于并行处理和分析大规模数据。

weixin_46574337的博客 511

从NASA官网到分析图:MOD09A1地表反射率数据的完整处理流程(含QC筛选)

本文详细介绍了MOD09A1地表反射率数据的完整处理流程,从NASA官网数据下载到QC筛选,再到NDVI图生成。特别强调了质量控制(QC)信息在筛选可靠像元中的关键作用,帮助研究人员获取高质量遥感数据。

weixin_42542669的博客 109

深度学习实战35-图卷积神经网络GCN模型的搭建与应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战35-图卷积神经网络GCN模型的搭建与应用,GCN是一种用于处理图结构数据的深度学习模型,它可以捕捉节点之间的拓扑关系和局部特征,并进行图级别的预测和分类任务。下面将介绍如何搭建并应用GCN模型。

微学AI的博客 2224
上一篇: HIVE 数据仓库容量清理
下一篇: HIVE 生成过多小文件的问题
半吊子Kyle
博客等级 码龄7年 209粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值