您的位置:首页 > 移动互联

应用实践 | 物易云通基于 Apache Doris 的实时数据仓库建设

发布时间:2022-07-14 13:03:23  来源:互联网     背景:

  导读:物易云通目前已成为国内产融供应链运营服务平台的领军企业之一,平台年交易额超过 200 亿元,随着公司业务的快速发展,对数据计算分析的时效要求也越来越高。经数据团队的调研对比,于 2021 年引入了 Apache Doris 作为实时数据仓库。实战过程中获得一些经验,在此分享给大家。

  作者物易云通/司机宝大数据负责人 吴凡

  业务背景

联想yoga折叠触屏

  武汉物易云通网络科技有限公司成立于 2015 年 6 月,总部位于湖北省武汉市东湖高新区。作为国内产业互联网的探索先行者,公司致力于将产业互联网思维与新一代信息技术深化应用于煤炭、建筑、再生资源三大业务领域,以标准化、场景化、数字化的供应链综合服务解决能力,开创互联网化的“供应链技术+物流服务+金融场景”的产融协同新生态。目前公司已成为国内产融供应链运营服务平台的领军企业之一,平台年交易额超过 200 亿元。公司入选 2020 年中国互联网企业综合实力 100 强,2021 年武汉市软件收入第一名。

  随着公司业务的快速发展,对数据计算分析的时效要求也越来越高。之前的产品已经无法应对庞大的数据量,为解决这一问题,数据团队通过调研对比,在 2021 年引入了 Apache Doris 作为实时数据仓库。基于 Apache Doris 建设实时数仓的过程中,沉淀了许多经验,借此机会分享给大家。

  数仓架构演进

  公司创业之初,是使用 MySQL 作为 BI 仓库,每天增量卸数后导入,通过定时调度存储过程进行计算。该方案能快速满足公司的跨库数据关联计算的需求,但是随着业务发展,数据和任务不断增多,MySQL 已难以支持,另外该方案局限性比较大,如果业务表存在物理删除或者没有数据更新时间的情况下,则会导致数据不准。

  为了解决上述问题,我们搭建了一套 CDH 作为数据仓库。通过 Canal 订阅 MySQL 的 Binlog 到 Kafka,进行编写消费程序,将数据写入 Hbase,然后增量合并到 Hive 中,通过 Oozie 调度计算脚本。

  然而离线 T+1 的数据只能满足一部分的业务需求,因此我们需要一套能快速查询实时数据的数据仓库,同时可以支持离线需求和实时需求,经过许多产品的调研对比,证明 Apache Doris 可以很好地实现我们的业务需求。

  架构方案对比

  Doris 数仓架构通过 Flink CDC 实时接入生产库数据到 Doris,支持实时 OLAP,然后通过海豚调度器定时执行 SQL 脚本,替代 Hive 的离线数据计算任务。

  新架构的优势

  1、数据处理架构简单

大数据与新能源

  新的架构里我们使用了 Flink CDC 来做数据同步(Flink CDC 内置了一套 Debezium 和 Kafka 组件,但这个细节对用户屏蔽),它不但可以读取增量,还能读取全量数据,然后将数据通过 Stream load 的方式写入 Doris。

  2、一份数据,实时全量

  由于 Hive 查询很慢,所以之前是把 Hive 的数据通过 Sqoop 推送到 MySQL 进行查询,即有多份数据存储在不同的 MySQL 上,维护和存储成本都很高,并且 Hive 里只有 T-1 的数据,需要每天写脚本合并。Doris 支持 MySQL 协议,可直接查询,同时 Doris 支持主键数据去重及更新,有实时的全量数据,解决了实时报表和在线 OLAP 的需求。

  3、架构简单,易于部署维护

  相对于 Hadoop 那一套各种组件来说,Doris 部署维护非常简单。

  4、一键全库接入,结构实时同步

  通过自研的数据易平台,实现了 MySQL 一键全库接入 Doris,即通过页面选择后,一键生成 Flink CDC 任务在 Yarn 上持续运行。而且通过解析 Binlog 里面的 DDL 语句,将其转化为 Doris 语法,利用 Doris 的 online Schema Change 特性,实时同步生产数据库的表结构变更,保障了表结构一致,新增字段数据一致。

  5、秒级查询

  Doris 查询是秒级,Hive 是分钟级,跑批的效率提升了 20-30 倍。而之前用的是 Impala 加速 Hive 的查询,每个表在使用前都要 Refresh 一次,非常麻烦,并且 Count Distinct Impala 近似计算不准确。

  系统重点功能

  数据接入

  第一步选择需要接入的 MySQL 库类型,默认是 A,即最常见的全局库名唯一。

  另外还存在几种其他的情况:

  B、全局有多个名称相同、结构不一致的数据库。比如:部分大表做了数据切割归档到另一台机器上了。 C、全局有多个名称相同、结构一致的数据库,即分库。我们需要将数据合并到一个 Doris 库表中,方便数据分析。 D、全局有多个名称不同、结构一致的库。比如:DB_租户 A 的库, DB_租户 B 的库,我们也是要把数据合并分析。

  第二步,选择 MySQL 库实例,进行提交(如果不想接入全库,可以勾选部分表)。对应的目标数据库是 Doris 里面的 ODS 贴源层,和生产数据保持一致,一个库一个任务,可以视情况调整内存等参数。

  注意:通过列表可以进行任务管理,恢复任务是运用了 Flink CDC 的 Checkpoint 机制,在任务异常挂掉时可以恢复运行。Flink CDC 任务目前是运行在 Yarn 上。

  数据计算

  我们在数据易平台上开发了数据计算任务功能,用户编写 SQL 后,点击 SQL 解析,即可自动识别出脚本里用到了哪些来源表,生成了哪些结果表,最终在海豚调度器里生成对应的任务和上游任务 Depend 关系。

  说明:为了保障各个 T+1 报表的数据一致性,我们做了 ODS 层到 DWD 层的一套计算任务,即每天 0 点将 ODS 层中近 2 天的增量数据 insert into 到 DWD 层进行更新,后续 T+1 的计算任务统一从 DWD 层进行计算。

  注意:需要把物理删除变成逻辑删除,使用时剔除。如果直接在 ODS 里面同步物理删除,会导致 DWD 层里无法通过增量方式同步删除。

OPPOreno8处理器

  新架构的收益

  降低资源成本

摩托罗拉G200

  当前我们的集群配置为 5 台阿里云 ESC,16 核 64G。在相同集群配置下,1000 个表的每日增量数据合并任务,用 Hive 需要 3-5 小时,用 Spark 需要 2-3 小时,然而同样的需求 Drois 运用 Unique Key 模型完成只需要 10 分钟,大大提前了后续计算任务的开始时间。

  另外,因 Hive 跑得慢,我们后续的几百个 Hive 计算任务,排队情况很严重,不得不把一些优先级低的任务排到下午甚至晚上,日任务全部跑完需要十几个小时。而我们把全部批任务迁移到 Doris 上计算后,全部任务跑完只需要 2 小时不到,后续增加新的需求任务完全无压力。

三星s6edge刷原生安卓

  总而言之,使用 Doris 后,报表数据的更新时间大大提前,临时的数据查询需求响应时长大大缩短,至少节约了每年几万的大数据集群扩容成本,同时获得了各部门的认可。

  提升开发效率

  随着公司业务快速的发展,会不断的有新的数据分析需求,就需要我们接入新库新表,给老表加字段等,这对于 Hive 数仓是非常痛苦的,表要重建、全量数据要抽,这就需要每周有半天时间都在处理这些事情。

  在使用 Doris 作为数仓后,通过我们的数据易平台配置 Flink CDC 任务快速接入 MySQL 库表的全量+增量数据,同时利用 Doris 的 online Schema Change 特性,实时同步 Binlog 里的 DDL 表结构变更到 Doris,数据接入数仓零开发成本。

  另外因为 Doris 支持 MySQL 协议直接对接数据可视化应用,我们不需要再把结果数据从 Hive 推到 MySQL 里提供数据服务,节约了数据库资源,减少了开发步骤。

  体现数据价值

  Doris 有审计日志,我们可以通过日志,分析出每个表每天的查询使用情况,以便我们评估跟进数据价值、下线废弃报表及任务。另外还可以预警资源消耗多、查询慢的查询语句,帮助用户进行语法优化等。

  问题与经验

  1、MySQL 和 Doris 字段类型不一致

  MySQL 的 Blob、Mediumint、Year、Text 等字段类型在 Doris 中没有,需要我们转换成 Doris 对应的字段类型,Varchar 的长度我们对应在 Doris 需扩大成 3 倍。

  2、MySQL DDL 语法兼容性问题

  MySQL 的 Bigint Unsigned、AUTO_INCREMENT、CURRENT_TIMESTAMP 等语法在 Doris 里不支持。

摩托罗拉edge s新机测评

  3、多个大表 Join 计算时,内存使用过大,导致 BE 挂掉,影响数据写入。

  目前 Doris 新版本已对内存控制这部分进行优化。

  4、Hive 和 Doris 差异

  将 Hive 计算脚本改成 Doris 计算脚本时遇到一些语法问题,如:

  Doris 不支持 Lateral View ,升级新版本已解决。

  之前的一些 Hive UDF 函数是 Java 写的,Doris 不支持,我们用另外的程序对数据做的二次加工处理,后续 Doris 新版本会支持。

  Doris 缺少一些函数,如 Last_Day 通过取日期下个月的第一天再减一天来实现, Collect_Set 通过先去重再 Group_Concat 实现等。

  5、分析函数问题

  分析函数 XX() over(partition by) 在外层和子查询中同时存在时,报 errCode = 2, detailMessage = can't support。我们通过将子查询数据放入临时表解决该问题,后面 Doris 1.0 版本已解决该问题。

  多个 lag PARTITION by 函数和 min PARTITION by 一起使用时,有乱码的情况。撰文时该 Bug 已修复,等待合并发版。

  6、Doris 动态分区

  动态分区字段必须为 Date 到月、周、日,不能根据写入的数据自动创建分区,目前我们通过建表时指定初始化的分区数解决此问题。

  7、Stream Load 写入过于频繁报错

携号转网正式实施

  Stream Load 写入 Doris,写入太频繁会报错误码 235 问题,同样的表 Routine Load 不会出现这个问题,我们通过批量提交解决,Doris 新版本已优化该问题。

  以上问题在向社区反馈后,得到了社区的快速响应。截止目前,上述问题基本上都已经得到修复,并且将在即将发布的新版中上线。

  写在最后

  首先感谢 Apache Doris 社区的 PPMC 张家锋和多个 Committer 的大力支持,有任何问题都能很快得到响应。也感谢公司领导对我们方案的认可和支持,做技术改造不仅要花费很多金钱和精力,而且还需改变的勇气和坚定的信念。也感谢各位同行在使用 Apache Doris 上给了我们很多经验和信心。最后祝愿 Apache Doris 社区发展越来越好!

  SelectDB 是一家开源技术公司,致力于为 Apache Doris 社区提供一个由全职工程师、产品经理和支持工程师组成的团队,繁荣开源社区生态,打造实时分析型数据库领域的国际工业界标准。基于 Apache Doris(incubating)研发的新一代云原生实时数仓 SelectDB,运行于多家云上,为用户和客户提供开箱即用的能力。

  相关链接:

  SelectDB 官方网站:

  https://selectdb.com (We Are Coming Soon)

  Apache Doris 官方网站:

  https://doris.incubator.apache.org

  Apache Doris Github:

  https://github.com/apache/incubator-doris

  Apache Doris 开发者邮件组:

  dev@doris.apache.org

应用实践 | 物易云通基于 Apache Doris 的实时数据仓库建设

海南免税店苹果12promax



返回网站首页

本文评论
高性能全集成激光雷达芯片_Socionext开发超小型60GHz毫米波雷达传感器
  SoC设计与应用技术领导厂商Socionext Inc.(以下“Socionext”)宣布成功开发「SC1240系列」60GHz毫米波雷达传感器。该系列产品是一款电路内置,可用于人体位置、活动检测...
日期:08-20
为什么购买锂电电动车要选小牛电动?_小牛电动车的锂电池跟普通电动车电池
  虽然电动车已经成为城市短距离出行的不二之选,但是在选购电动车时,电动车的续航和电池的使用寿命,成为衡量一辆电动车够不够好的第一标准。因为电动车的核心就是电池,只有续...
日期:07-14
欢聚集团发布2022年Q2财报: 第二季度净盈利5150万美元 盈利水平稳健增长
  北京时间2022年8月30日,欢聚集团(NASDAQ:YY,简称“欢聚”/“集团”)发布2022年第二季度财报。第二季度,欢聚实现营收5.961亿美元,BIGO营收5.026亿美元。不考虑已剥离的YY L...
日期:08-31
够新鲜才能赢,海信冰箱真空·实验室即将上演“甜蜜撞击”「海信真空超薄冰箱」
  你见过娇嫩的草莓化身“冲撞型选手”上演火药味十足的撞击大赛吗?6月13日-6月15日,海信真空冰箱将发布“真空·实验室”,为用户趣味验证真空保鲜科技的硬核保鲜实力,展现“...
日期:07-14
用友建筑业财转换中台助力浙建集团业财一体化建设
  全新的数字经济时代,数字化、智能化正在加速改变商业世界。用友领航企业服务33年,并且在建筑行业深耕20载,已经为全国超70%的大型建筑企业提供产品及服务。  十四五规划...
日期:07-25
官宣!小狗吸尘器第4代旗舰新品全球首发!_小狗吸尘器官方旗舰店
  10月17日,国内专业吸尘器品牌小狗吸尘器发布了一则悬疑海报,透露其第4代旗舰新品即将全球首发。海报中,一个炫目的蓝圈高速旋转,充满了科技感和未来感。虽然海报并未露出更...
日期:10-21
重磅官宣!168电竞成为EHOME电子竞技俱乐部全球官方合作伙伴「凤凰电竞俱乐部」
  在中国电竞高速发展的当下,6月23日,全球顶尖的体育电竞综合平台“168电竞”正式与EHOME电子竞技俱乐部达成战略合作,成为EHOME的全球官方合作伙伴。两家顶级品牌将携手征战...
日期:07-29
大显示新生态 UDE显博会定档9月深圳
  由中国电子视像行业协会指导,上海舜联会展有限公司主办的UDE2022第四届国际显示博览会(简称:UDE显博会)将于2022年9月21-23日在深圳国际会展中心(宝安新馆)举办,恰逢秋...
日期:07-04
高效生产力拉满 三星Galaxy S22 Ultra给你更自如的办公、创作体验_三星 Galaxy S22 Ultra
  三星S Pen手写笔的诞生堪称移动体验演进过程中一项里程碑式的创新,它将生产力和创造力联系到了一起,让人们能够获得更高的办公效率,并随时记录灵感。经过十余年的迭代和升...
日期:07-29
接棒CentOS 华云数据×麒麟软件打造CentOS替换云解决方案
  作为全世界厂商和开发者青睐的开源操作系统,CentOS拥有免费、稳定、硬件兼容性好等特性,应用范围极为广泛。然而自社区宣布按不同时间节点会相继停服以来,引发行业内的重点...
日期:10-10
想要提升生活幸福感?这几个吸尘器选购要点一定切记!_吸尘器使用感受
  当人们越来越重视提升生活的幸福感,普通的清扫工具已经满足不了家庭日常清洁的深度需求。高效便捷、省时省力的吸尘器就成为人们摆脱清洁难题的得力工具。市面上吸尘器产...
日期:07-29
新世相——全平台新型互联网公司和内容品牌「新世相官网」
  傍晚,苏西(化名)正躺在床上盯着手机屏幕,那是一篇关于亲情的微信公众号文章,此刻她眼睛微红,含着眼泪…… 其实这样的场景比比皆是,随着互联网原住民逐渐成为社会主力,与之共...
日期:07-27
ALPD激光光源对比全色激光更加成熟,ALPD激光投影首选当贝投影_alpd激光厅和杜比激光区别
  投影仪已经逐渐成为家用主流的大屏播放设备之一,但很多消费者在选购时经常感到一头雾水,LCD投影、LED投影、单色激光、全色激光、ALPD激光......不同投影仪之间有什么区别...
日期:12-22
科大讯飞翻译机怎么样?讯飞双屏翻译机让工作生活更容“译”(科大讯飞同步翻译机)
  你好、hello、こんにちは、안녕하세요、hallo、bonjour……以上是世界上不同语言对于“你好”的说法,是不是除了前面的“你好”和“hello”以外,你一个都不认识呢?当今世...
日期:12-18
负离子和臭氧_负离子与臭氧的今天明天
  对于臭氧对灭活新冠病毒的有效发生原理,在之前的《臭氧能灭活新冠病毒?这并非无稽之谈》文章中进行了详细的解释,这次我引入一位“新朋友”——负离子。论及负离子和臭氧...
日期:07-25
广药集团李楚源依托乡村振兴优势,全方位赋能推动贵州共同富裕
  近年来,贵州省充分发挥了自身绿色、生态、有机的资源特色,以打造特色化、品牌化的拳头产品为驱动,开拓了“产扶融合”的新思路,打造了刺梨、茶、辣椒、食用菌、石斛、水果、...
日期:07-27
讯众股份智能坐席辅助入围百度智能客服产品生态
  近日,讯众股份智能坐席辅助成功进入百度智能客服产品生态,将为百度金融、能源、交通及政企客户提供坐席智能语音辅助业务场景支撑。这标志着讯众股份在呼叫中心智能化产品...
日期:07-14
SoulApp超萌捏脸 开启“萌”社交模式_soul捏脸搞怪
  ​  各类App消息轮番轰炸终于让从前对手机爱不释手的我们变得不再手机控;同事、亲戚笑里藏刀加绵里藏针式的关心照顾更是令人毛骨悚然,这个时代中的各种压力与焦虑正在...
日期:07-28
世界地球日 绿色出行_世界无车日为地球“减负”,腾讯地图绿色出行引领低碳生活
  踩一辆单车,骑行穿梭在城市街角;打卡公交、地铁,让你的“爱车”闲置一天;乘坐5G概念公交、智能公交,体验智慧出行温度……9月22日“世界无车日”到来,今天你绿色出行了吗? ...
日期:09-23
右滑一下,全新荣耀负一屏开启手机智慧空间「荣耀打开负一屏」
  手机装载的APP太多,关键时候怎么都找不到就很焦虑?定好的航班、约好的会议,一不留神就忘记了时间?快递查询不知道该看短信还是APP?扫码付款,操作就消耗了大量时间......这...
日期:07-14