1. 摘要

数据平台已经彻底改变了公司存储、分析和使用数据的方式——但为了更有效地使用它们,它们需要可靠、高性能和透明。数据在制定业务决策和评估产品或 Halodoc 功能的性能方面发挥着重要作用。作为印度尼西亚最大的在线医疗保健公司的数据工程师,我们面临的主要挑战之一是在整个组织内实现数据民主化。 Halodoc 的数据工程 (DE) 团队自成立以来一直使用现有的工具和服务来维护和处理大量且多样的数据,但随着业务的增长,我们的数据量也呈指数级增长,需要更多的处理资源。

由于现代数据平台从不同的、多样化的系统中收集数据,很容易出现重复记录、错过更新等数据收集问题。为了解决这些问题,我们对数据平台进行了重新评估,并意识到架构债务随着时间的推移积累会导致大多数数据问题。我们数据平台的所有主要功能——提取、转换和存储都存在问题,导致整个数据平台存在质量问题。

我们现有的数据平台在过去几年中为我们提供了很好的服务,但它的扩展性满足不了不断增长的业务需求。

2. 平台演进

在旧的数据平台中,大部分数据都是定期从各种数据源迁移到 Redshift。 将数据加载到 Redshift 后,执行 ELT 以构建服务于各种业务用例的 DWH 或数据集市表。

数据平台能够满足我们的大部分需求,但随着数据用例的增加,我们看到业务和数据量增长,为满足业务需求数据平台面临多重挑战。

问题如下:

  • 存储和计算紧密耦合。我们主要依赖基于 ELT 的方法,其中 Redshift 计算层被大量用于任何数据转换。我们的 Redshift 集群包含多个 dc2.large 实例,其存储和计算紧密耦合,扩容时存储与计算一起扩容导致成本增加。
  • 数据高延迟。当前管道中的数据延迟几乎超过 3-4 小时,因为数据首先在 Redshift 中加载,然后每隔几个时间间隔执行 ELT 操作。我们的业务和产品团队希望以更低的延迟分析数据,以便他们能够更快地做出关键业务决策。
  • 缺乏数据治理。现有数据平台没有实施适当的数据治理。在 Redshift 中创建Group,并且根据用户的角色将用户分配到每个Group,该方法可以控制数据集访问,但缺乏列或行级别粒度的访问控制。
  • 仪表板基于哪些数据集构建缺乏可见性。由于所有数据集市表都是根据用例创建,并且当用户向 DE 团队请求时,有多个表包含重复数据。由于我们没有遵循数据模型(星型或雪花模式),因此在 Redshift 中维护表之间的关系变得非常困难。
  • 缺少 SCD 管理。SCD 代表缓慢变化维,当有人想知道数据点的历史价值时,SCD 非常重要。在当前的数据集市中,没有实施适当的 SCD,在我们的案例中,像药品价格、医生类别等都是要跟踪的重要特征。
  • 通过 Airflow 内存移动数据。在 Halodoc,大部分数据流通过 Airflow 发生,所有批处理数据处理作业都安排在 Airflow 上,其中数据移动通过 Airflow 内存进行,这为处理不断增加的数据量带来了另一个瓶颈。由于 Airflow 不是分布式数据处理框架,因此更适合工作流管理。相当多的 ETL 作业是用 Python 编写的,以服务于间隔 15 分钟的微批处理管道,并在 Airflow 中调度。
  • 缺少数据目录。数据目录对于任何数据平台提供数据的元信息都非常重要。直接迁移到 Redshift 的表在现有平台中缺少数据目录。仅为存储在 S3 中的数据创建数据目录,这让终端用户检索有关 Redshift 中表的信息成为问题。
  • 没有集成的数据血缘。如果有人有兴趣了解目标数据表的来源和转换阶段,我们没有数据血缘来展示它们。数据血缘对于理解数据流、数据转换很重要,并且如果在目标处生成错误信息,则可以轻松调试数据。
  • 缺少框架驱动的平台。对于每个用例,我们主要构建端到端的数据管道。大多数代码在多个数据管道中重复。数据工程任务中缺少软件工程原则。因此,很难将每一层上的组件解耦并创建一个抽象层来使整个框架端到端自动化。
  • 没有自动模式演进。处理关系数据时模式演进非常重要。源系统中会发生变化,需要在目标系统中反映出来,而管道不会出现任何故障,当前我们手动执行此操作,我们已经建立了一个流程,DBA 将架构更改通知 DE,DE 负责在目标系统中进行更改。我们想要一种自动化的方式来执行这些操作。

由于数据平台的这些限制,我们意识到第一代数据平台已经走到了尽头。正是在这一点上,我们决定退后一步,想想我们需要从我们的数据平台中得到什么。如果必须的话我们并不害怕从头开始构建一个系统。

数据工程团队开始使用支持或减轻上述大部分限制的新数据平台来评估和改进现有架构。我们调研到了 LakeHouse 架构,它在通过具有成本效益的解决方案实现可扩展性以及处理大量数据方面发挥着至关重要的作用。因此我们开始围绕 LakeHouse 架构来构建我们改进后的 Data Platform 2.0。

3. 为什么我们采用 LakeHouse 架构?

LakeHouse 架构基本上是 Datalake 和数据仓库的组合,可以在其中无缝地跨湖和仓库移动数据,并遵循对所有数据集的访问权限的安全合规性。

在 Halodoc,我们希望构建一个可扩展的解决方案,我们可以根据需要独立扩展存储和计算。我们将以下内容列为我们希望数据基础设施具备的核心功能:

  • 解耦存储和计算(高度可扩展)。
  • 可以存储所有类型的数据,如结构化、半结构化和非结构化。
  • 可以作为整个组织中数据的单一事实。
  • 存储/查询可变和不可变数据的能力。
  • 可与 Spark 或 Hive 等分布式处理引擎集成。

在新架构中,我们利用 S3 作为数据湖,因为它可以无限扩展存储。由于我们计划将可变数据也存储在 S3 中,因此下一个挑战是保持可变 S3 数据的更新。我们评估了几个框架,如 Iceberg、Delta Lake 和 Apache Hudi,它们提供了更新可变数据的能力。由于 Apache Hudi 与 EMR 集成度很好,因此我们开始在 Hudi 之上构建数据湖。

4. 为什么选择Apache Hudi

  • 对文件执行 Upsert 操作。
  • 使用各种更新捕获更新历史记录。
  • 支持ACID。
  • 支持不同的存储类型(CoW 和 MoR)
  • 支持多种数据查询方式(实时优化查询、快照查询、增量查询)
  • 数据集的时间旅行。
  • 预装 EMR,开箱即用。

搭建平台的挑战

  • 新架构中使用的大多数组件对团队来说都是新的,因此需要一些学习曲线来动手操作和生产系统。
  • 构建中心化的日志记录、监控和警报系统。
  • 在改进架构的同时支持常规业务用例。

5. 总结

在本博客中,我们介绍了现有数据平台中面临的一些挑战/限制,以及一些缺失的功能。 在接下来的博客中,我们将更多地讨论 LakeHouse 架构,以及我们如何使用 Apache Hudi 以及在发布新平台时面临的一些挑战。随着不断迭代,我们将继续在新平台中添加新功能,以打造更加强大和可靠的数据平台。

印尼医疗龙头企业Halodoc的数据平台转型之数据平台V2.0的更多相关文章

  1. 印尼医疗龙头企业Halodoc的数据平台转型之路:数据平台V1.0

    1. 摘要 数据是每项技术业务的支柱,作为一个健康医疗技术平台,Halodoc 更是如此,用户可以通过以下方式与 Halodoc 交互: 送药 与医生交谈 实验室测试 医院预约和药物 所有这些交互都会 ...

  2. 印尼医疗龙头企业Halodoc的数据平台转型之Lakehouse架构

    1. 摘要 在 Halodoc,我们始终致力于为最终用户简化医疗保健服务,随着公司的发展,我们不断构建和提供新功能. 我们两年前建立的可能无法支持我们今天管理的数据量,以解决我们决定改进数据平台架构的 ...

  3. BAT推荐免费下载JAVA转型大数据开发全链路教程(视频+源码)价值19880元

    如今随着环境的改变,物联网.AI.大数据.人工智能等,是未来的大趋势,而大数据是这些基石,万物互联,机器学习都是大数据应用场景! 为什么要学习大数据?我们JAVA到底要不要转型大数据? 好比问一个程序 ...

  4. 奇点云 x 阿里云 | 联合发布综合体数字化转型与数据创新解决方案

    2019年7月25日下午,在阿里云峰会上海站,奇点云入选阿里云首批联合解决方案合作伙伴,并联合发布了“综合体数字化转型与数据创新解决方案”,共同探索综合体的智能服务. 关于综合体的数字化转型,奇点云联 ...

  5. 谈B2B电商平台与大数据

    数据为王,服务为本——谈B2B电商平台与大数据 2013-06-27 11:10:41 作者:B2B行业资讯 标签:                             大数据           ...

  6. NodeMCU透传数据到TcpServer和Yeelink平台

    准备工作 1. NodeMCU  LUA ESP8266 CP2102  WIFI Internet Development Board,仔细看背面可以看出自带cp2102模块,可以通过普通的手机充电 ...

  7. php 品牌全车零件订购平台( 带采集数据 及 账号自动登陆【已绕过https证书加密】,php源码 ,QQ: 876635409 )

    php捷豹路虎 品牌全车零件订购平台  ( 带采集数据 及 账号自动登陆[已绕过https证书加密],php源码 ,QQ: 876635409 [由于咨询用户太多,请备注:汽车配件]) 一.php+m ...

  8. DOIS 2018 — OneAPM 蓝海讯通以数据为中心的 AIOps 平台亮相

    AIOps 近两年开始在运维圈子里面火了起来.一夜间传统和新兴的运维管理软件供应商,IT 运维系统开发商,大数据厂商,人工智能算法提供商,还有 BAT,大家都在谈论这个话题.在短短的不到 1 年时间中 ...

  9. 2018年,Java程序员转型大数据开发,是不是一个好选择?

    近日网上有一篇关于Java程序员职场生存现状的文章“2017年 Java 程序员,风光背后的危机”,在Java程序员圈子里引起了广泛关注和热议. 2017年,Java 程序员面临更加激烈的竞争. 不得 ...

随机推荐

  1. Linux分区问题

    一.基本分区的作用及其大小 /boot分区: 存放引导文件和Linux内核文件等. 引导文件:判断启动哪一个操作系统或启动哪个内核. 内核:管理硬件和软件资源,程序与硬件之间的桥梁. 分区大小:100 ...

  2. okayNav jQuery 插件怎么使用

    首先到 https://github.com/VPenkov/okayNav 这个网站里面把代码下载下来 下载之后解压出来,解压后打开文件app 然后创建一个HTML文档 然后倒入css的样式 样式: ...

  3. 从问题找原因之CSS浮动清除

    问题描述 浮动元素导致的后面img标签居中对齐"失败",如下图 <div> <div class="content1"> <div ...

  4. HTML+CSS基础课程-imooc-【更新完毕】

    6-1 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小.颜色.字体加粗等 ...

  5. 小程序刷新webview小结

    场景 在小程序其它页面做了操作,数据发生改变,回到webview页面时需要更新webview里面的数据.由于小程序没有提供与webview的实时通信能力,因此刷新页面是个可考虑的做法. 方法一 最常见 ...

  6. 创建新的servlet一定要记得修改web..xml文件!!!

    创建新的servlet一定要记得修改web..xml文件!!!

  7. CCF201312-2ISBN号码

    问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其中符号"-&qu ...

  8. wx.getImageInfo和wx.downloadFile下载用户头像报错(小程序canvas以及小程序图片下载部分)

    我先上图 之前我们后台配置的 downloadFile 合法域名是 https://wx.qlogo.cn,   用了好久都没出问题,  前段时间,  用户反馈  分享海报,  用户头像出不来!!!! ...

  9. EMS已有用户分配邮箱方法

    案例任务:已有域用户"test100",为该用户分配邮箱. 分配邮箱前,使用"get-user"命令确认用户类型.域用户"test100"的 ...

  10. 调试了一个早上, 定位了一个chrome的新问题, 新版chrome 不能有效的追踪客户来源Referer了