月球上有什么| 学信网上的报告编号是什么| 心脏有早搏吃什么药好| 女人梦见大蟒蛇是什么征兆| konka是什么牌子| 自古红颜多薄命是什么意思| 儿童登机需要什么证件| 连襟什么意思| 喝冰糖水有什么好处和坏处| 靶向治疗是什么| 右眼皮跳是什么预兆男| 阴道有褐色分泌物是什么原因| 小孩荨麻疹吃什么药| 六神无主是什么意思| 黄芪丹参山楂泡水有什么功效| 天是什么结构的字| 心痛定又叫什么| 孕妇吃鹅蛋有什么好处| 微波炉不热是什么原因| 生日送什么礼物最好| 尿蛋白质弱阳性是什么意思| 左侧肚脐旁边疼是什么原因| 高考移民是什么意思| 三严三实是什么| 女人细菌感染什么原因引起的| 人生苦短是什么意思| 感冒嗓子疼吃什么消炎药| 胎儿脉络丛囊肿是什么原因引起的| 呵呵代表什么意思| lt是什么| 角是什么生肖| 情种是什么意思| 双子座男生喜欢什么样的女生| 惊讶的什么| 吃生洋葱有什么好处| 一什么眉毛填量词| 属兔生什么属相宝宝好| yet是什么意思| 大方得体是什么意思| 幽门杆菌是什么意思| pdc是什么意思| 杀青了是什么意思| 西洋参跟花旗参有什么区别| 利普刀是什么手术| 班门弄斧什么意思| 牛蒡根泡水喝有什么好处| 等是什么生肖| 人格是什么| 自来鸟是什么兆头| 腺肌症有什么症状表现| wht什么颜色| 夏末是什么时候| 缺钾最忌讳吃什么| 右侧肋骨下方是什么器官| 美妞是什么意思| 7月1日什么星座| 掩耳盗什么| 咳嗽吃什么药最好| 吃什么能丰胸| 肌酐高吃什么食物| 言字旁的字和什么有关| 便秘吃什么好| 幽门螺旋杆菌弱阳性是什么意思| ab型和b型生的孩子是什么血型| 乳清粉是什么东西| 石千读什么| 人生格言是什么| 水瓶是什么星座| hbo什么意思| 药石是什么意思| 梦见磨面粉是什么意思| 瑜伽是什么意思| 夏天适合种植什么蔬菜| kissme什么意思| dunk是什么意思| 女人矜持是什么意思| 小猫什么时候驱虫| 惨不忍睹是什么意思| 评价是什么意思| 阿莫西林吃多了有什么副作用| 刻舟求剑是什么生肖| 官星是什么意思| 美甲什么颜色显手白| 出汗多吃什么好| 维生素c弱阳性是什么意思| 琼瑶剧是什么意思| 早孕期间吃什么最营养| 比丘什么意思| 81年属鸡是什么命| 生活补贴是什么意思| 血清碱性磷酸酶高是什么意思| 反响是什么意思| 房颤什么症状| 四肢无力是什么原因| 绿幽灵五行属什么| 左手臂有痣代表什么| 羊球是什么| 女人胃寒吃什么好得快| 环形红斑是什么病| 为什么晚上血压比白天高| 绿色大便是什么原因| 什么是同人文| 太阳穴有痣代表什么| 豆蔻是什么| 吃什么最补血而且最快| 狂犬疫苗什么时候打有效| 心绞痛什么症状| 什么水果解酒| 补肺养肺吃什么食物最好| 酒糟鼻子是什么原因引起的| 梦见土豆是什么意思| 璋字五行属什么| 攒肚是什么意思| 天青色等烟雨是什么意思| 经常的近义词是什么| 乙肝病毒携带者有什么症状| 手指关节痛是什么原因| 鳀鱼是什么鱼| 经常上火口腔溃疡是什么原因| 严重贫血吃什么补的快| 鸭子炖什么好吃| 两个月小猫吃什么食物| 高血压可以吃什么肉| 水瓶女和什么星座最配| 松鼠代表什么生肖| 七七事变是什么生肖| 抑郁症挂什么科| 前什么后仰| 正月初七什么星座| lhrh是什么激素| 橙子是什么季节的水果| porridge什么意思| 弄得什么| 健康是什么| 肾炎吃什么食物好| 欧珀莱属于什么档次| 香油吃多了有什么害处| 甲减是什么病| 眼科属于什么科| 纸可以做什么| 同仁是什么意思| 低gi食物是什么意思| 曜字五行属什么| 经期血量少是什么原因| 时柱代表什么| 有什么办法| 反清复明的组织叫什么| exchange是什么意思| ppa是什么意思| 腾蛇是什么意思| 木芙蓉什么时候开花| 唇炎是什么原因引起的| 小跟班是什么意思| 老人脚肿是什么原因引起的| 儿童吃什么| nike是什么意思| 滴水观音叶子发黄是什么原因| 看见老鼠有什么预兆| 游泳前一定要做好什么运动| ru是什么意思| 胃酸吃什么药效果最好| 骨骼是什么意思| 待见是什么意思| 异淋是什么意思| 痣的位置代表什么| romantic什么意思| 什么是非遗| 胸片可以检查出什么| 一个家庭最重要的是什么| 大枣枸杞泡水喝有什么好处| 子宫外怀孕有什么症状| 女娲是一个什么样的人| 养胃吃什么| ash是什么牌子| 丙肝有什么症状表现| 胆囊切除后吃什么好| 女孩子喜欢什么礼物| 丁五行属什么| 什么叫扁平疣长什么样| 脾胃伏火是什么意思| 身体上有小红点是什么病| 经常做春梦是什么原因| 什么叫收缩压和舒张压| sub是什么意思| 身上出汗多是什么原因| reald厅什么意思| 蜂蜜可以做什么美食| 蛤蚧是什么| 范仲淹号什么| 早泄阳痿吃什么药| 脚趾麻是什么病的前兆| 路上遇到蛇是什么征兆| 男人到了什么年龄就性功能下降| 腰不好挂什么科| 梦见亲人去世是什么意思| 指南针什么时候发明的| 立克次体病是什么意思| 防风通圣颗粒治什么病| 热疹子是什么症状图片| 各什么各什么| 什么什么之年| 治疗晕病有什么好方法| 肚子拉稀是什么原因| 新生儿老打嗝什么原因| 咽峡炎吃什么药| 静五行属性是什么| 功劳叶的别名叫什么| 吃什么助于长高| 罗衣是什么意思| 颈椎病睡什么枕头最好| 吃什么通血管| 霸凌是什么意思| 扶乩是什么意思| 28周检查什么项目| 狒狒是什么动物| 通勤是什么意思| 控制欲是什么意思| 奶油小生什么意思| 择期什么意思| zoom是什么意思| 什么是生化妊娠| 什么手机有红外线功能| 什么颜色加什么颜色是黄色| 流清鼻涕是什么感冒| 荨麻疹用什么药膏| 黑头发有什么好处脑筋急转弯| 什么叫认知能力| 顶到子宫是什么感觉| met是什么意思| 什么鱼最好吃| 什么是条件兵| 前列腺炎吃什么药最好| 控告是什么意思| 烈女怕缠郎是什么意思| 脑梗能吃什么水果| 杜建英是宗庆后什么人| 心主什么| 女攻男受是什么意思| 吃什么对胃最好| 孕检都检查什么项目| 不排便是什么原因| 中耳炎是什么引起的| 遗传物质是什么| 九寨沟在四川什么地方| 低密度脂蛋白高有什么危害| 甲状腺吃什么食物好| 什么是士官| 野兔子吃什么| 脚爆皮是什么原因| 眩光是什么意思| 肾囊性灶是什么意思| 易孕体质是什么意思| 手指甲发黑是什么原因| 鱼吐泡泡是什么原因| 交可以组什么词| 薏米和什么一起煮粥最好| 内退是什么意思| 热裤是什么裤子| 血糖高喝酒有什么影响| 大浪淘沙下一句是什么| 明目张胆是什么生肖| 钥字五行属什么| 重庆为什么叫雾都| 八点半是什么时辰| 百度
大数据中国 首页 大数据技术 云技术 查看内容
业内首个基于Iceberg的“云端仓转湖”生产实践探索
2022-9-8 16:17 | 查看: 3574| 评论: 0

一、业务背景

作业帮成立于2015年,一直致力于用科技手段助力教育普惠,运用人工智能、大数据等前沿技术,为学生、老师、家长提供更高效的学习、教育解决方案,智能硬件产品等。作为大数据中台架构团队,我们一直探索利用有限的资源,较低的开发维护成本、高时效的数据更新和查询,为业务团队提供基础支持。

二、问题&痛点

1.ODS层数据就绪时间晚,DWS/ADS等上层数据和业务报表构建时间少

作业帮ODS层表大概有几千张,TP90就绪时间大概在4点30左右,不同业务团队因工作时间不同,看数时间会有些差异,总体上来说基本都要求数据10点前就绪。这样留给上层数仓及报表数据构建时间大概6小时,随着上层数据看数丰富度增加,在资源不变的情况下,减少ODS层就绪时间将可以给上层数据构建争取更多时间。

2.基于hive的离线数据新鲜度弱,基于Kafka的实时数据构建和维护成本高

目前基于Hive的离线数据多为T+1天时效性,较少部分为T+1小时且多为流量数据。针对核心转化类数据可分析价值更高,目前多以Kafka为介质构建实时数据,但对数、刷数、ExactlyOnce保障、join等场景数据构建和维护成本高。如果可以通过类似Hive sql构建准实时数据,业务可以更容易获得高新鲜度的数据进行分析。

3.业务查数速度慢,分析效率低

业务基本都是基于DWS/ADS等上层数据进行分析,经过分析历史sql发现查询所用维度相对固定,面对大表加载数据仍然是主要耗时点,这个过程业务老师基本都是处于等待状态,工作效率出现明显瓶颈。

三、基于Iceberg承载批流一体实现数据“仓转湖”探索

考虑到Iceberg优雅的架构设计、相对开放和完备的数据格式定义,有较强的可塑性和扩展能力更方便进行特定场景的优化。同时腾讯云EMR团队针对Iceberg在计算框架适配、性能等方面做了优化。所以我们选择Iceberg来承载批流一体实现数据“仓转湖”探索。

作业帮数据仓库ODS层构建都是由数据中台来完成,我们把ODS层作为切入点来逐步引入Iceberg,因流量侧ODS层数据量相对较大,在场景和性能方面探索的代表性更全,最终决定用此部分数据作为探索数据,同时需要探索以下关键问题的解决方式:

1.数据流转批:数据湖仓共存,以减少对上层业务使用的影响。

2.表格式无缝迁移:解决云上环境Hive表格式迁移Iceberg的诸多问题。

3.查询性能提升:改进传统Hive特定高频分析场景时间过长的问题。

四、流数据转批

基于Hive+COS 构建的ods表都是按照天级别或小时级别来构建。DWD层的任务均是按照ODS层的表分区是否就绪来触发的。这个场景在Hive上实现很简单,因为Hive 天然支持按照日期字段进行分区。但切换成Iceberg 表后,通过Flink 实时写入的数据,已经commit的snapshot所包含的数据就可读。Iceberg提供的这种边写边读的能力在构建实时数仓的过程中非常有用,但这种能力在我们实际切换过程中成为了卡点,因为我们必须保证ODS层某天的数据完全就绪后,才能对外提供对应天级别的查询能力。

基于这样的需求,我们在Iceberg中引入savepoint 概念,即基于事件时间的快照点。下图展示了新的元数据设计:

本质上,每个savepoint也是一个snapshot。但不一样的是,savepoint是根据数据的事件时间生成。举一个简单的例子:随着数据的不断摄入,Iceberg表生成了若干个连续的snapshot,但只有在整点时刻(例如按小时间隔)才会生成一个savepoint。区别于传统的基于snapshot的数据查询机制,我们从savepoint中进行数据查询。由于savepoint是根据事件时间周期(例如按小时间隔)生成的,只有当Iceberg表的小时段数据写入完成,上层业务才可以查询对应的分区数据。下图演示了各种查询条件下的数据可见性情况:

其中:

Query 1和6只能查到天级别的完整数据

Query 2,3,4和5只能查到小时级别的完整数据

基于以上设计,我们可以实现上层T+1的表数据构建业务无缝透明地从Hive迁移到Iceberg上,并且不会对业务使用方带来任何的理解偏差。

五、Hive表格式无缝迁移

作业帮数据中台持续的为多个业务线提供数据支撑,在引入Iceberg之前已存在大量的Hive表供各个业务方使用。作为底层数据提供方,不可能因为要引入一项新的技术,就让下游业务使用方跟着做改动,所以我们需要让下游业务方查询时并不关心查询的是Hive表还是Iceberg表,对业务方透明。基于这样的诉求,我们需要将Hive表无缝转化成Iceberg表。

Iceberg社区提供了表格式迁移工具,即migrate工具。它通过构建Iceberg所需的元数据来实现Hive表格式转换,避免了数据的导出导入成本。不过在实际使用中还是在一些特定场景下的不兼容问题:

1.作业帮的离线数据全部存储在COS中,并且根据一定的规则,这些COS数据会进行逐级冷处理,即从标准存储类型转换成归档存储类型。但开源大数据数据接口的事实标准不支持COS归档存储,导致Iceberg表格式迁移工具无法正常使用。

2.作业帮的Hive表分区目录存在多级子目录。Iceberg表格式迁移工具不支持分区目录的子目录结构,导致在生成manifest元数据时会丢失大量的数据文件记录。

3.作业帮的Hive表存量数据非常大,甚至有PB级别。社区版迁移工具的文件处理能力有限,针对这种超大规模表迁移耗时会非常长。

针对这些云上特定场景,腾讯云EMR对Iceberg迁移工具进行了兼容适配和优化:

1.兼容归档存储类型。当归档文件转标准文件之后,支持通过工具修正manifest元数据。

2.兼容分区子目录结构。

3.支持executor-side的文件处理能力,更高的并发能力,更快的迁移速度。

基于以上优化,我们可以快速高效地实现将COS中的Hive表迁移到Iceberg上。

六、查询性能提升

ODS层的数据多是一些结构化的原始数据,DWD层是基于ODS层来筛选出不同主题的数据,这种模式下,不管某个主题筛选的数据量多少,都需要扫描ods层的全部文件,过滤出符合条件的数据。这种模式不仅会产生大量无用的IO操作,还浪费资源,查询性能差。

基于这样的诉求,我们使用Z-Order数据重排来减少查询时无用的文件扫描。Iceberg在数据查询时会使用data-skipping技术,跳过那些不存在目标数据的文件,从而节省IO带来查询提升。但实际使用中,data-skipping技术发挥的余地会非常小。这是因为数据的某种“无序”分布,导致查询条件的目标数据会分布在大部分文件甚至所有文件,这就导致简单的查询需要扫描全表的原因。Z-Order是一种数据组织算法,它可以实现按照给定字段(即Z-Order字段)的数据聚集性或者说局部性。经过Z-Order之后的表数据文件会呈现比较明显的可区分度,这样根据Z-Order字段的查询会略过大量的无关文件。

ZOrder天然地也会进行小文件合并。小文件合并以及数据组织优化两个方面共同实现提升查询性能的目的。我们结合作业帮业务场景进行了性能评估。

1.集群配置:10台 8核32GB、500GB 云SSD

2.SSB Scale:100

对比原始表和小文件合并,性能提升是非常大的,一个主要优化点就是过滤了大量无用文件扫描。基于以上优化,我们在生产环境中的查询性能也得到了成倍提升。

除了以上工作,腾讯云EMR团队联合作业帮还对Iceberg进行了如下特性开发和内核优化:

1.支持Hive on Spark写入Iceberg表

2.Hive查询支持Map类型的Filter下推

3.Z-Order 索引构建优化和复杂数据类型支持

4.优化数据倾斜场景Z-Order的数据构建性能

5.外部Metastore:支持Iceberg表元数据同步到外部DB

七、总体效果

基于这些特性和优化,作业帮开展部分流量表进行灰度实验。通过本次灰度,我们实现了:

1.存储格式切换为Iceberg能力,上层业务无成本迁移。上层业务对底层存储升级的无感切换:业务表没有任何改造成本,数据表的业务理解无任何变化等等。

2.基于Z-Order优化,查询性能获得提升。对于那些分析重度使用的表,通过迁移到Iceberg并做了Z-Order优化后,查询性能得到几倍甚至几十倍的提升,查询时间下降到分钟级。

3.数据分区时效性提高。通过Flink流式写入数据,实时生成Savepoint,从而实现真实数据就绪的近实时。

4.元数据接入更加便捷。腾讯云EMR提供的Iceberg外部Matastore功能降低了作业帮元数据采集和查询的成本,几乎零改造实现Iceberg元数据接入。

八、探索的意义

作业帮离线数仓是基于腾讯对象存储cos + EMR存算分离的方式来落地的,实时数仓多以Flink+Kafka方式落地的,虽然可以解决业务对数据的诉求,但是也引入了其他问题例如实时数据故障排查难、可靠性不易实现、开发维护成本高,离线数据增量计算支持弱、查询速度慢、数据时效性低,离线实时对数难等问题。

数据湖技术在原理层面看是可以帮助我们缓解以上问题的,同时数据湖发展已有一段时间各种功能也逐步支持,但对于作业帮而言还缺乏更深入的认识,此次探索模拟了部分迁移过程可能遇到的技术问题、业务感知、功能匹配度进行了摸底灰度测试,为最终的湖仓一体化建设提供了较高的参考价值。

九、未来规划

下一阶段,作业帮将联合腾讯云EMR团队探索解决以下一些问题:

1.运维成本高:不管是快照清理还是Z-Order优化,都需要手动配置,运维成本高。

2.多引擎支持:当前部分新特性支持了Hive,Spark和Flink引擎,但trino等引擎没有完全支持。

3.Z-Order列选举门槛高:需要业务侧参与配合完成Z-Order优化工作,往往业务侧也不是很清楚选举那些列进行Z-Order比较合适,这就有可能导致Z-Order选择不对,对业务查询提升无意义,平白增加额外计算开销。

4.无法构建基于Iceberg的流式pipeline:缺少关键的表间CDC能力。

免责声明: 除非特别声明,文章均为投稿或网络转载,仅代表作者观点,与大数据中国网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。如果本文内容有侵犯你的权益,请发送信息至ab12-120@163.com,我们会及时删除

最新评论

关闭

站长推荐上一条 /1 下一条

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2025-8-4 09:56 , Processed in 0.050067 second(s), 23 queries .

返回顶部
月黑风高什么意思 吃什么食物补钙最快 倒车雷达什么牌子好 布洛芬属于什么类药物 夏季风寒感冒吃什么药
风热感冒用什么药好 dickies是什么牌子 做nt挂什么科 工资5k是什么意思 什么是保健食品
耷拉的近义词是什么 pro是什么氨基酸 鸡汤放什么调料 支原体和衣原体有什么区别 六根不净是什么意思
什么血型是万能血型 什么是疤痕体质 尿频尿急挂什么科 信息是什么意思 女性气血不足吃什么调理
什么至什么来hcv7jop4ns5r.cn 合是什么生肖hcv8jop3ns2r.cn 吃什么能降胆固醇zhongyiyatai.com 沸点是什么意思hcv8jop3ns7r.cn 宋美龄为什么没有孩子zhongyiyatai.com
什么金属最贵hcv9jop0ns2r.cn 隆胸有什么危害和后遗症吗hcv9jop0ns3r.cn 吃飞醋是什么意思hcv9jop4ns4r.cn 梦见大水牛是什么兆头hcv7jop6ns5r.cn 宫颈纳囊是什么hcv8jop5ns1r.cn
脑脱髓鞘改变是什么病hcv7jop9ns6r.cn 孕妇吃什么蔬菜对胎儿好hcv9jop2ns8r.cn 晔字为什么不能取名hcv9jop7ns5r.cn 专业服从是什么意思xinjiangjialails.com 975是什么意思hcv7jop9ns9r.cn
脖子疼什么原因hcv8jop8ns1r.cn 地衣是什么clwhiglsz.com 冬天有什么水果huizhijixie.com 输卵管造影什么时候检查最好hcv9jop4ns1r.cn 女性胆囊炎有什么症状hcv7jop5ns1r.cn
百度