表治理-Iceberg小文件合并测试
总结
指标
|
合并前
|
合并后(因测试中多次合并,数据会偏多)
|
---|---|---|
查询速度 | 246秒 | 13秒 |
表总大小 | 9.2G | 26.4G |
单个文件大小 | 1-25MB | 60MB左右 |
metadata目录文件数 | 37 | 75 |
data目录文件数 | 900 | 1501 |
小文件合并后历史版本数据不会自动清理,需要做快照清理
快照清理参考:Iceberg过期快照清理
一、合并前性能统计
1、查询速度(4分钟多)
select count(1) from order_info1;
2、表总大小
hdfs dfs -du -h /user/hive/warehouse/data_lake_ods.db/order_info1
3、单个文件大小例子
4、文件数量
hdfs dfs -du -h /user/hive/warehouse/data_lake_ods.db/order_info1/data
路径:/user/hive/warehouse/data_lake_ods.db/order_info1/data
文件数:900
路径:/user/hive/warehouse/data_lake_ods.db/order_info1/metadata
文件数:37
二、合并任务资源使用情况
1、处理数据表中已删除的数据(仅超1亿大表才执行)
如果是大表,则先执行max-file-group-size-bytes=1处理删除文件。max-concurrent-file-group-rewrites设置为maxExecutors个数最快
CALL iceberg_catalog.system.rewrite_data_files(
table => 'data_lake_ods.order_info1',
options => map(
'max-concurrent-file-group-rewrites','15',
'max-file-group-size-bytes','1',
'rewrite-all','true'
)
);
|
任务使用的10并行度,单executor执行一个任务,大概20秒左右处理一个数据文件
共计2.8亿条数据表,任务执行时长15分钟左右。
2、开始合并小文件(分组大小1GB,生成文件64MB)
CALL iceberg_catalog.system.rewrite_data_files(
table => 'data_lake_ods.order_info1',
options => map(
'max-concurrent-file-group-rewrites','15',
'max-file-group-size-bytes','1073741824',
'target-file-size-bytes','67108864',
'rewrite-all','true'
)
);
合并方法2大宽表直接合并:
CALL spark_catalog.system.rewrite_data_files(
table => 'data_lake_ods.order_info1',
options => map(
'partial-progress.enabled', 'true',
'rewrite-job-order', 'bytes-asc',
'partial-progress.max-commits', '10000',
'max-file-group-size-bytes', '1073741824',
'rewrite-all','true'
)
);
合并小文件执行时长2分钟左右
官网文档:https://iceberg.apache.org/docs/latest/spark-procedures/
其它优化参数
( 1 )rewrite-job-order=bytes-asc 说明:根据该值强制指定重写作业顺序 bytes-asc:则首先重写最小的作业组。 bytes-desc:则首先重写最大的作业组。 files-asc:则首先重写文件最少的作业组。 files-desc:则首先重写文件最多的作业组。 none(默认):则按照计划的顺序重写作业组(无特定顺序)。 ( 2 )target-file-size-bytes 说明:目标输出文件大小 默认值: 536870912 ( 512 MB) 可以修改成: 67108864 (64MB) |
三、合并后性能统计
1、查询速度(13秒)
2、表总大小(26.4G)
3、单个文件大小例子
4、文件数量
hdfs dfs -du -h /user/hive/warehouse/data_lake_ods.db/order_info1/data
路径:/user/hive/warehouse/data_lake_ods.db/order_info1/data
文件数:1501
路径:/user/hive/warehouse/data_lake_ods.db/order_info1/metadata
文件数:75
参考文章:
1、Spark 合并 Iceberg 小文件内存溢出问题定位和解决方案
https://xie.infoq.cn/article/50259945d7663d7194a5e2763
2、通过flink、spark优化iceberg表小文件项目
表治理-Iceberg小文件合并测试的更多相关文章
- iceberg合并小文件冲突测试
基于iceberg的master分支的9b6b5e0d2(2022-2-9). 参数说明 1.PARTIAL_PROGRESS_ENABLED(partial-progress.enabled) 默认 ...
- hive小文件合并设置参数
Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量.但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小.而且这些 ...
- Hadoop经典案例(排序&Join&topk&小文件合并)
①自定义按某列排序,二次排序 writablecomparable中的compareto方法 ②topk a利用treemap,缺点:map中的key不允许重复:https://blog.csdn.n ...
- Hive merge(小文件合并)
当Hive的输入由非常多个小文件组成时.假设不涉及文件合并的话.那么每一个小文件都会启动一个map task. 假设文件过小.以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费.甚至 ...
- Hadoop MapReduce编程 API入门系列之小文件合并(二十九)
不多说,直接上代码. Hadoop 自身提供了几种机制来解决相关的问题,包括HAR,SequeueFile和CombineFileInputFormat. Hadoop 自身提供的几种小文件合并机制 ...
- HDFS操作及小文件合并
小文件合并是针对文件上传到HDFS之前 这些文件夹里面都是小文件 参考代码 package com.gong.hadoop2; import java.io.IOException; import j ...
- MR案例:小文件合并SequeceFile
SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.可以使用这种文件对小文件合并,即将文件名作为key,文件 ...
- 第3节 mapreduce高级:5、6、通过inputformat实现小文件合并成为sequenceFile格式
1.1 需求 无论hdfs还是mapreduce,对于小文件都有损效率,实践中,又难免面临处理大量小文件的场景,此时,就需要有相应解决方案 1.2 分析 小文件的优化无非以下几种方式: 1. 在数据 ...
- hive优化之小文件合并
文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响: set hive.merge.mapfiles = true ##在 map on ...
- Hadoop实战项目:小文件合并
项目背景 在实际项目中,输入数据往往是由许多小文件组成,这里的小文件是指小于HDFS系统Block大小的文件(默认128M),早期的版本所定义的小文件是64M,这里的hadoop-2.2.0所定义的小 ...
随机推荐
- 分布式配置中心之Apollo
Apollo(阿波罗)是携程开源的一款可靠的分布式配置管理中心,它能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场 ...
- PHP7.4之编译安装
虽然之前写过很多编译安装PHP的文章, 但是隔段时间还是会重新安装一些PHP的版本,再次记录一下 1. 下载安装编译工具 yum groupinstall 'Development Tools' 2. ...
- uni-app 简单上手
1.前言 uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/ ...
- PLC编程—数据类型
CPU 型号不同,实际的有效数据类型与文中略有不同(大同小异) 数据类型概述 基本数据类型(二进制数.整数.浮点数.定时器.DATE.TOD.LTOD.CHAR.WCHAR) 复杂数据类型(DT.LD ...
- cmd操作license服务
配置客户机的时候,有时候需要自启动相关服务,例如ArcGIS License Manager. 关于启动服务,参考了别人的意见.点击打开链接 最终用了net start 服务名和net sop 服务名 ...
- 《前端运维》五、k8s--4机密信息存储与统一管理服务环境变量
一.储存机密信息 Secret 是 Kubernetes 内的一种资源类型,可以用它来存放一些机密信息(密码,token,密钥等).信息被存入后,我们可以使用挂载卷的方式挂载进我们的 Pod 内.当然 ...
- 前端每日一知之让Chrome支持小于12px的文字
脑图在线链接 本文内容依据[js每日一题]公众号精彩文章总结而来
- LLM应用实战-财经新闻自动聚合
1. 背景 这段时间项目比较忙,所以本qiang~有些耽误了学习,不过也算是百忙之中,抽取时间来支撑一个读者的需求,即爬取一些财经网站的新闻并自动聚合. 该读者看了之前的<AI资讯的自动聚合及报 ...
- vue前端代码npm install报错的解决方法
npm install,报错: npm WARN tarball tarball data for has-bigints@https://registry.npmmirror.com/has-big ...
- 【工具】navcat无限使用
1.打开无限试用工具所在文件夹,打开navcat安装所在文件夹 2.将破解dll文件移动到navcat安装目录下 然后就去试用软件吧,如果软件试用到期了或者快要到期就运行这个脚本就行. 按道理来说这个 ...