最新要闻
- 世界热讯:BBA直呼内行!吉利“仰望银河”出圈:多家国产品牌跟风“望天”
- 天天时讯:首发1399元!小米小顽智能全自动猫砂盆开售:14天不用管
- 苹果iOS 16.4首个测试版发布 新增15个表情符号被吐槽太丑
- 今日热文:网传杭州取消限行 官方辟谣:假的、Chatgpt撰写生成
- 《狂野之心》IGN 8分:足以媲美《怪猎》狩猎大作
- 如何压缩图片大小?简单的图片压缩方法分享
- 世界视点!一降再降!一汽丰田首款纯电SUV大促:优惠6万到手13.98万起
- 祈福者放生2.5万斤鲇鱼被追责:属外来物种 危害极大
- 合资燃油车危险了!比亚迪秦PLUS DM-i冠军版上市7天订单超3.2万
- 当前动态:促销“狂飙”结束 特斯拉Model Y全系已上涨2000元
- 微软进一步拥抱AI:Win11新功能“记住”用户常用窗口布局
- 营收创6年最大跌幅!苹果被曝裁员外包员工 库克最后手段?
- 时隔3年半漫威重返内地!《蚁人与黄蜂女:量子狂潮》今日上映
- 天天热头条丨《星际争霸2》世界冠军李培楠回国:黄旭东等为其接风
- 当前视讯!三亚3米长搁浅抹香鲸救治无效不幸死亡:或被鲨鱼咬伤
- 全球看热讯:干货分享丨店长管理的五大核心你抓住了吗!
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
快播:ETL的系统核心特征
(资料图)
目录- ETL 系统核心特征
- 数据重跑及其优化
- 重跑的场景
- 重跑的方式
- 重跑的优化
- 自动水平扩展
- 数据重跑及其优化
- 参考链接
ETL 系统核心特征
数据重跑及其优化
重跑的场景
场景 | 导致原因 | 影响 |
---|---|---|
kafka consumer poll消息失败 | 1. 网络问题;2. kafka broker 磁盘坏道,拉取消息一直失败或其他 kafka 原因 | 导致一个或多个topic&partition的消息未消费完整 |
硬件故障,机器重启 | 磁盘满、硬件故障等 | 机器宕机、重启、yarn内部机制会重新在另外一个nodeManager节点重新分配宕机节点的mapper task,可能会造成数据重复 |
task killed | 1. yarn 主动 killed task : ①, mapper 初始化某个逻辑卡住,导致 mappper 超时;如:加载调试设备信息时 mysql 阻塞、加载 lP 库一直Full GC 或者 mapper 获取不到执行资源一直等待等; ② yarn . nodemanager .local-dirs and yarn. nodemanager . log-dirs 配置的磁盘使用率超过 90 % ResourceManager 标记那台 NodeManger 为bad ,把机器上跑的 container 都 kill了,导致 ETL 一个 mapper 被 kill ,然后起一个新的 mapper task ,但是因为 kill mapper task attmept 未正常关闭,导致文件租约 Iease 未安全释放,后面起 Mapper 一直写失败; 2.S手工 killed task ①Hadoop 集群节点负载太高,一些 DataNode 响应慢或者进程值死无响应,导致HDFS 写入一直超时失败等;人工 killed | 这个 mapper 分配执行的所有 topic partition 消息未消费或者消息不完整(影响多个 topic ) ;mapper 执行慢,数据一直写不进去(创建、读写 block 超时) : |
当用户调用 application kill 时会经历三个阶段:
- kill SIGTERM(-15) pid;
- Sleep for 250ms;
- 3.kill SIGKILL(-9) pid 。
重跑的方式
重跑方式 | 优点 | 缺点 |
---|---|---|
1.备份目标目录的数据 2.将 kafka topic &partition 的 offset 重新消费一遍清洗落地; | 简单(由于每个 et l执行消费的offset 都是自己记录维护的.找到当前小时或者当天对应的最小以及最大offset 重新消费即可) | 依赖于 kafka 消息过期时间,过期后无法重新消费;因为大部分时间分区是是按天的.目前重跑一天的数需要 4 +小时.故障后恢复非常慢; |
记录未消费的offset信息,补跑未消费的offset即可 | 速度快(只处理未消费完整的topic&partitioner offset) | 1 )依赖于 kafka 消息过期时间,过期后无法重新消费 2 ) MapTask 被 yarn killed 或者人为 killed ,会导致写数据的 Writer 不正常关闭流,从而引发 hdfs 文件租约 Iease 未释放、 block recovery 等问题,导致后面数据 append 失败; 3 ) MapTask attempt 被 yarn killed 后会自动起另外一个 attemPt (目前来.无法避免,这是 yarn 的机制,需要改源码),可能导致数据重复写入: 4 ) killed 或者机器宕机是无法记录到。offset 消息到哪里,只能每段小段时间记录当前 offset .当 MapTask 被 killed . offset 可能不是最新的,导致补跑时重复写了部分数据; |
1 ) ETL 小时任务,数据落地到临时目录.文件按小时划分.支持覆盖写(保存一段时间) ; 2 )当数据落地成功,检测每个 toPic partition 的消费情况进行处理; 3 )如果 topic partitlon 的消息消费不完整时,告警通知,手工重跑相关 toPic partition 的小时任务; 4 )如果消费完整,将小时数据文件合并到仓库的目标文件(每个 topic 、 partition 单独一个文件) ; 5 )如果合并过程失败.告警通知,手工触发重新将已经落地的小文件合并成一个目标仓库文件; | 支持小时重跑、覆盖写恢复速度较快HDFS block 丢失、可以从小文件新恢复 | 1 )流程比较复杂,多出一个数据合并 Merge 的步骤; 2 )每小时的 ETL 会产生非常多的小文件间定期删除;需要保留一段时 |
如下图所示是第三种重跑方式的整体流程,ETL 是按照小时调度的,首先将数据按小时写到临时目录中,如果消费失败会告警通知并重跑消费当前小时。如果落地成功则合并到仓库目录的目标文件,合并失败同样会告警通知并人工重跑,将小文件合并成目标文件。
graph TB 开始 --> 小时ETL--write -->1{落地临时目录/etl/work/按小时区分}--落地成功-->2{到仓库目录的目标文件每个partition一个文件}--合并成功-->结束 1-->失败消费不完整-->告警通知-->重跑消费当前小时即可-->小时ETL 2-->合并失败-->告警通知-->根据每小时产生的小文件重新合并一个目标文件--合并成功-->结束重跑的优化
流程 | 按天分区的topic |
---|---|
每小时05分调度的ETL正常跑完 | 1.包含之前的数据.如:昨天漏采集的日志.直接在对应日期分区目录下创建一个新的数据文件; 2.今天的日志,直接在今天的日期分区下创建一个新的数据文件; 3.将当前 ETL 产生的小文件直接 append 到对应日期分区以及相同 partition 下的文件; |
一个小时内执行多次ETL | 1.因为目前落地的临时文件都是按 partition +执行时间(yyyyMMddHH )生成的,如: all _ 1 _ 2018031511 . avro ; 2.如果一个小时执行多次 ETL ,每次都会消费新的 offset ( etl _ 0ffsets 会存多条记录),但是临时目录的数据文件的名称相同,这时候通过 append 方式追加数据; 3.如果小时重跑时.会找到当前小时内 topic--partjtion 的最小的 beginoffset 、最大的 endoffset 重新从 kafka 消费,这样保证了数据的完整性; |
小时ETL重跑(前提未进行merge) | 1 )小时三跑,直接找到对应小时 topic--partition 的最小的 beginoffset 、最大的 endoffset 重新从 kafka 消费: 2 )之前已经创建的临时目录的数据文件会以 create overwrite 形式重新写入数据; 3 )最后在将文件 append 到对应日期分区下相同 partition 的文件; |
merge失败(小时ETL产生的临时数据文件已经是完整、可靠的) | 重新根据当天每小时 ETL 产生的临时数据文件合并一个目标仓库文件即可: |
ETL消费消息不完整 | 1.消费不完整的 toPic 、 partition 信息会记录.告警短信通知: 2 )人工重跑对应 topic--partition 小时 ETL 即可(支持细化到 partition 的小时数据重跑,因为是 overwrite ) |
MapTask attempt killed by yarn | 1 ) MapTask attempt 被 yarn 的机制 killed 后.另启的 attempt 会 overwrite 之前的文件(排除一个小时执行多次 ETL 的情况.这时候需要人工重跑).比较好的兼容 hadoop 集群的故障; |
NodeManager carsh by hardware fault | 由于机器硬件故障导致运行 ETL 的 MapTask 的 NodeManager 直接 crash :1 )数据正在写入临时目录,手工重跑对应 topic 一 partition 小时的 ETL 即可: 2 )数据正在 merge ,手工重新 merge 对应 topic date 的数据; |
人为killed整个ETL job | 人工处理未执行的topic :1.数据正在写入临时目录,手工重跑对于topic-partition小时的ETL即可 2.数据正在 merge , 手工重新merge对应 topic--date 的数据: |
自动水平扩展
现在离线 Kafka-ETL 是每小时 05 分调度,每次调度的 ETL 都会获取每个 topic&partition 当前最新、最大的 latest offset,同时与上个小时消费的截止 offset 组合成本地要消费的 kafkaEvent。由于每次获取的 latest offset 是不可控的,有些情况下某些 topic&partition 的消息 offset 增长非常快,同时 kafka topic 的 partition 数量来不及调整,导致 ETL 消费处理延迟,影响下游的业务处理流程:
- 由于扩容、故障等原因需要补采集漏采集的数据或者历史数据,这种情况下 topic&&partition 的消息 offset 增长非常快,仅仅依赖 kafka topic partiton 扩容是不靠谱的,补采集完后面还得删除扩容的 partition;
- 周末高峰、节假日、6.18、双十一等用户流量高峰期,收集的用户行为数据会比平时翻几倍、几十倍,但是同样遇到来不及扩容 topic partition 个数、扩容后需要缩容的情况;
Kafka ETL 是否能自动水平扩展不强依赖于 kafka topic partition 的个数。如果某个 topic kafkaEvent 需要处理的数据过大,评估在合理时间范围单个 mapper 能消费的最大的条数,再将 kafkaEvent 水平拆分成多个子 kafkaEvent,并分配到各个 mapper 中处理,这样就避免单个 mapper 单次需要处理过大 kafkaEvent 而导致延迟,提高水平扩展能力。拆分的逻辑如下图所示:
graph TB 开始 --> 根据ETLSchema选择SplitStrategy-->IsRemaining("SplitStrategy是否配置") IsRemaining -->配置--> 生成对应的SplitStrategy-->根据SplitStrategy拆分KafkaEvent-->oneChosse("消息是否超过阈值") oneChosse -->no["否"]-->KafkaEvent不拆分-->结束 oneChosse -->yes["是"]-->twoChosse("消息是否超过阈值2倍")-->yes2["是"]-->根据倍数进行合理拆分-->结束 twoChosse-->no2["否"]-->KafkaEvent拆分为两个-->结束 IsRemaining -->未配置-->KafkaEvent不拆分-->结束后续我们将针对以下两点进行自动水平扩展的优化:
- 如果单个 mapper 处理的总消息数据比较大,将考虑扩容 mapper 个数并生成分片 split 进行负载均衡。
- 每种格式的消息处理速度不一样,分配时可能出现一些 mapper 负担比较重,将给每个格式配置一定的权重,根据消息条数、权重等结合一起分配 kafkaEvent。
参考链接
https://blog.csdn.net/javastart/article/details/113838240
美图离线ETL实践 - 掘金 (juejin.cn)
快播:ETL的系统核心特征
环球热议:SQL Server创建Oracle链接服务器
电脑自动重启是什么原因?电脑自动重启频繁怎么解决?
CAD布局怎么使用?cad布局背景怎么调成黑色?
gta5怎么切换角色?GTA5怎么刷钱?
deb是什么意思?deb怎么安装?
世界热讯:BBA直呼内行!吉利“仰望银河”出圈:多家国产品牌跟风“望天”
天天时讯:首发1399元!小米小顽智能全自动猫砂盆开售:14天不用管
苹果iOS 16.4首个测试版发布 新增15个表情符号被吐槽太丑
今日热文:网传杭州取消限行 官方辟谣:假的、Chatgpt撰写生成
《狂野之心》IGN 8分:足以媲美《怪猎》狩猎大作
天天视讯!银河麒麟V10系统安装步骤
Java 文件上传
世界新动态:机器学习-集成学习GBDT
如何压缩图片大小?简单的图片压缩方法分享
世界视点!一降再降!一汽丰田首款纯电SUV大促:优惠6万到手13.98万起
祈福者放生2.5万斤鲇鱼被追责:属外来物种 危害极大
合资燃油车危险了!比亚迪秦PLUS DM-i冠军版上市7天订单超3.2万
当前动态:促销“狂飙”结束 特斯拉Model Y全系已上涨2000元
微软进一步拥抱AI:Win11新功能“记住”用户常用窗口布局
世界热点!《分布式技术原理与算法解析》学习笔记Day14
环球最新:Django Cannot assign "A1": "B1" must be a "C1" instance.
把选择语句和重复语句视为块
营收创6年最大跌幅!苹果被曝裁员外包员工 库克最后手段?
时隔3年半漫威重返内地!《蚁人与黄蜂女:量子狂潮》今日上映
天天热头条丨《星际争霸2》世界冠军李培楠回国:黄旭东等为其接风
当前视讯!三亚3米长搁浅抹香鲸救治无效不幸死亡:或被鲨鱼咬伤
全球看热讯:干货分享丨店长管理的五大核心你抓住了吗!
当前要闻:没买车的等等党们:赢了
每日看点!男子购买1200元年货32天快递仍未送达 邮政客服:车还在路上
每日动态!注意!特斯拉宣布召回超36万辆车 会突然停车发生车祸:马斯克火速回应
环球新动态:iPadOS 16:拖后腿了
读Java实战(第二版)笔记12_重构、测试和调试
【环球报资讯】2023开年火药味儿十足 “大内存”机型卷出了新高度
今日播报!期末复习——同步、互斥、死锁
男子卖出游戏账号后3次恶意找回 为何被判盗窃而不是诈骗?
世界热推荐:一年节省185亿度电!中车研制复合材料“超级铜”登上央视
魔兽国服重开遥遥无期 消息称暴雪找不到接盘方:能谈的都试了
每日播报!我想知道知乎现在是怎么了?
女子询问换杯 却被奈雪店员辱骂:拒绝出面道歉
即时看!70城新房价格指数时隔12个月首次止跌
全球观天下!苹果7喇叭灰尘怎么清理 苹果7喇叭灰尘清理的方法
世界微资讯!汉诺塔
观察:真正“搞”懂HTTPS协议19之HTTPS优化
pnpm的基本原理及快速使用
环球焦点!Windows 环境下安装与配置 Node.js
fusion app远程公告(微云)
全球微动态丨北京多个地铁口有人扫码送“大鹅”:小心隐私泄露
游戏《如龙7外传》夜店真人女郎上新:一大波日本纯美小姐姐
二叉树中某一值的路径之 先序遍历 + 二叉搜索树转化为循环双向链表 之 中序遍历
全球快播:设计模式(八)----创建型模式之建造者模式与工厂模式区别
【全球热闻】真实项目开发中高并发实战经验总结
环球讯息:Python 爬虫方法总结
刘德华剧透《流浪地球3》:"数字生命"延续
重点聚焦!被苹果踢出果链后淡化手机业务?欧菲光回应:指纹识别还是龙头地位
天天微头条丨Vue急速入门-3
Python多任务教程
每日短讯:数据结构刷题2023.02.16小记
全球今日讯!Xcode Swift自动格式化
环球观天下!反结账的钱退到哪里_反结账快捷键
豪掷7500万!ChatGPT开发商OpenAI买下极品域名AI.com
环球聚焦:为了搞死《霍格沃茨之遗》“黑巫师”们用尽了魔法
每日动态!【2023.02.16】威佐夫博弈详解
今日热闻!女子丽江60元买2串烧烤仅6只虫2只蝎 景区回应其吐槽:特色小吃贵
精准发力“二次元”群体:盈通推出“樱瞳水着”RTX 4080显卡
当前快讯:女子吃饭后疯狂打嗝 医生:赶紧转急诊
环球热推荐:全球只有18块!极品飞车特别版RTX 4090现身海鲜市场:要价1.6万
python处理xml文件
天天时讯:因衣服长时间放购物车被客服嘲讽 还被拉黑:遭无数网友吐槽
【热闻】交个朋友公司被曝欠薪、恶意裁员 罗永浩回应:第一时间协调妥善解决
每日快看:1099元 微星PRO MP161便携式显示屏来了:15.6寸IPS屏 仅重0.75kg
高速路上一觉醒来车在冒烟无人驾驶:副驾小伙慌忙跳车逃生
世界时讯:联想拯救者Y9000P 2023游戏本性能狂飙:满血RTX 4090、240Hz高刷
江西芦溪:田园春意浓 乡村美如画
记录--TS类型写不好?一起来训练提升吧!
判断一个给定数组是否为二叉搜索树后序遍历
防患未然 | AIRIOT城市管廊智能运维解决方案
全球今亮点!xcodebuild命令行工具使用详解
今日热文:欧洲2035禁售燃油车!专家:电动车难完全取代燃油车
环球焦点!Wind11新预览版25300发布:实时字幕对中国用户更加友好!
当前时讯:新日登北京电动自行车不合格“黑榜”:多批电池管理系统有问题
新消息丨不愧是玩无人机的 大疆车载产品矩阵揭秘:高阶辅助只需摄像头
这合理吗?公厕免费取纸先关注微信公众号
快资讯丨pip设置镜像
天天头条:String详解
世界时讯:开心档之Swift 访问控制
计算机导论学习记录(二)
全球微头条丨8个让你收入翻倍的高质量免费网站
重点聚焦!大疆Inspire 3无人机来了:配全画幅X9相机、可录8K视频
全球速递!用了电信5G 浙大完成中国首例5G超远程机器人肝胆手术:跨越近万里
总投资389亿!2023年第一条高铁获批:沿海超级通道定了
全球速讯:消息称腾讯XR团队全线解散:成立不到1年!
鄱阳湖旗舰店麻辣小龙虾官方大促:1.4 斤29.9元到手
深交所向新亚制程发出关注函
全球看点:USRP-2974上安装Ubuntu20.04 + UHD 3.15 + GNU Radio 3.8 过程全记录
VOP 消息仓库演进之路|如何设计一个亿级企业消息平台
【热闻】【管理您的整个软件供应链】上海道宁与Sonatype助力您以更安全的开源更快地交付产品
快看点丨西部数据推出22TB/44TB My Book桌面硬盘 售价高达1500美元
曝光交个朋友欠薪 当事人最新回应:罗永浩正积极联系公司解决
果粉买不?苹果折叠屏会先拿iPad试水!折叠iPhone风险太高了