在实际企业应用中,机器学习平台非常依赖于企业底层的数据平台,虽然这两年 AI 的热潮一波接着一波,但要很好地去落地算法应用,非常依赖于数据平台的基础建设。从 a16z 的一些分析报告 中也可以看出,目前数据平台类公司吸引了非常多的市场和资本关注,也应运而生了 modern data stack 之类的概念。这篇文章我们就来聊聊什么是所谓的云原生数据平台。
在数据获取方面,平台必须能够同时支持批量数据和流式数据的接入。
对于批处理数据,比如各种上传文件,ftp,或者其它无法支持实时消费的第三方 API 数据源。实际上大多数企业目前对接的各种数据源和企业内部的基础数据架构,基本都是以批处理的形式为主的。绝大多数的平台对于这块的支持都还是比较好的。典型的做法是定时触发任务,通过组件去数据源中获取全量或者增量更新的数据内容,存放到数据平台中。如果把这个任务触发设置的比较频繁,我们也可以通过批处理的方式得到一个“准实时”更新的数据内容进行后续分析和使用。
流式数据是近年来非常热门的趋势方向,但在互联网公司之外的应用还相对比较少。大家对于“实时”的理解也各不相同。比如对于分析场景来说,大家普遍的认知是 T+1(第二天看到截至前一天的情况)的数据更新属于批处理,只要一天内有多次数据更新的,就属于“实时”分析了。这类需求完全可以通过前面提到的小批量更新来实现。而对于一些自动决策场景,例如推荐系统,交易风控,即使做到分钟级的“小批量”更新,其时效性也是不满足需求的,必须对接流式数据系统。
一个比较有意思的场景是对接上游业务系统的数据库数据。如果采用批处理接入的方式,一般做法是通过一个更新时间戳去定时查询相关的数据表,然后把增量数据保存到数据平台中。这个做法看起来没啥问题,但实际上如果在更新的时间窗口里,原始的数据条目做了多次变更,例如用户在 5 分钟里先开通了会员,然后取消,通过批量查询的方式,可能两次查询下来用户都是非会员的状态,丢失了中间的状态变更信息。这也是为何现在有越来越多的场景会使用 CDC 的技术来捕捉业务数据的实时变化,通过流式数据的方式对接到数据平台中来,避免有任何的信息丢失。
这块建议的建设路径是先构建稳定的批处理数据接入能力,然后是流式数据获取,最后才是根据实际需求考虑流式数据处理和分析(引入 Flink 这类)。
对于数据获取的组件,需要满足以下几个要求:
数据获取这块可以考虑使用的产品也有不少:
注意涉及到云服务,第三方 SaaS 服务,开源或自研工具选型时,可以参考下图来做权衡评估。越靠近右端如云厂商的产品,需要的运维开发投入就越小,但可控性和可移植性就相对较弱(除非兼容开源框架的标准 API);越靠左的情况则反之,使用开源产品具有非常灵活的定制(但要注意控制私有分支魔改成分)和部署灵活度,但投入的研发运维成本就会高很多。
相关链接:
聊聊云原生大数据平台(一)——数据平台架构 https://www.dtstack.com/bbs/article/428
聊聊云原生大数据平台(二)——数据获取 https://www.dtstack.com/bbs/article/469
聊聊云原生大数据平台(三)——数据存储 https://www.dtstack.com/bbs/article/470
聊聊云原生大数据平台(四)——数据处理 https://www.dtstack.com/bbs/article/471
聊聊云原生大数据平台(五)——元数据 https://www.dtstack.com/bbs/article/472
聊聊云原生大数据平台(六)——数据消费 https://www.dtstack.com/bbs/article/473
聊聊云原生大数据平台(七)——流程编排与 ETL https://www.dtstack.com/bbs/article/474
聊聊云原生大数据平台(八)——数仓最佳实践 https://www.dtstack.com/bbs/article/475
聊聊云原生大数据平台(九)——大数据平台建设 https://www.dtstack.com/bbs/article/476
袋鼠云在大数据领域深耕7年,拥有丰富的大数据平台建设经验和成熟的产品体系,想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack