写点什么

除了实时性,你还应该关注的三个数据科学改进方向

  • 2019-08-21
  • 本文字数:2983 字

    阅读完需:约 10 分钟

除了实时性,你还应该关注的三个数据科学改进方向

近来,我一直在思考过去几年当中我们在数据工程方面取得的进展,以及这个领域接下来的发展方向。大多数想法都孕育自我们几位团队成员在 WePay 项目中的心得,但我坚信接下来将要提到的这套框架将得到广泛应用,而且有必要与大家分享一番。


数据工程的工作内容,主要是帮助组织实现数据的移动与处理。从广义上讲,这通常需要两套不同的系统:数据管道与数据仓库。数据管理负责移动数据,数据仓库则负责处理数据。我承认这样的解释可能太过简单化,因为大家可以在批处理与流处理之间进行提取与加载转换,从而实现管道内处理。“数据仓库”包括目前大家所熟知的多种存储与处理系统(Flink、Spark、Presto、Hive、BigQuery、Redshift 等),外加数据目录、作业调度程序等辅助系统。虽然种类繁多,但我认为其中的范式仍然存在。


整个行业正在努力改变这些系统的构建与管理方式。我个人最希望在未来几年能够看到以下四个方面的改进:


  • 及时性:从批量到实时。

  • 连通性:从一对一定制集成到多对多。

  • 集中化:从集中托管到自助服务工具。

  • 自动化:从手动管理到自动化工具。

从批量到实时

过去,数据管道与数据处理都基于批处理机制。数据以批量 ETL 快照的形式在不同系统之间传输,数据按定期方式接受处理,并由作业调度程序(Airflow、Oozie、Azkaban、Luigi 等)负责管理。


如今,我们正一步步转向实时数据管道与实时数据处理系统。


Debezium 等新型数据捕捉系统以及 Kafka 当中强大的连接器生态系统,使得实时数据管道成为可能。流处理在过去五年中亦经历了复兴,如今已经有更多实时数据处理系统涌现来。这些因素的组合,意味着入口(提取)、处理(转换)以及出口(加载)都能够实时发生。


现在的权衡焦点似乎落在了成本与复杂性上面。如果一家企业正着手建立一套数据仓库,那么整个构建周期大约需要 4 到 6 周,这时采用实时管道无疑会带来沉重的负担。相比之下,批量式解决方案的启动与运行要容易得多。但我预计,随着实时类工具的不断成熟,加上云主机的持续增长,这一切将在未来几年内发生变化。

连通性

以往,将上游数据源接入数据仓库,意味着为系统之间的各个一对一连接添加新的定制化集成方案。Jay Kreps 在开创性的文章《日志:每位软件工程师都应该了解的实时数据统一抽象(The Log: What every software engineer should know about real-time data’s unifying abstraction)》当中,就说明了这一点:



这篇文章还详细介绍了数据集成的未来。虽然文章写于 2013 年,但其中提出的很多预期及设想直到今天才刚刚实现。如今,Confluent、Kafka Connect 以及连接器生态系统的推出,意味着我们已经能够利用多种现成连接器方案接入 Kafka 数据管道。


我觉得这种架构方法可能会逐渐开始落地。具体来讲,将入口与出口分离,二者同时又与转换分离,这意味着数据管道能够充分发挥梅特卡夫定律的优势——向管道中添加新系统的成本将有所降低,但价值回报却进一步提升。


我知道,这里说的主要是 Kafka,但我要强调一点:这种方法不一定是实时的(虽然我相信它会是)。例如,在 Airflow 中,目前的实现方法是一个 GoogleCloudStorageHook、一个 BigQueryHook,然后是一对一运算符:GoogleCloudStorageToBigQueryOperator。这完全分离了入口与出口,因此拥有通用格式的暂存区将得到大大改善,包括基于批量方式的 ETL。


这种模式还将帮助我们获得细粒度数据系统。一旦能够以低成本方式将新系统添加至管道当中,那么生态系统内新增专用系统的价值就将超过相关支出。因此,我相信未来将有更多用户开始使用小众数据处理系统,例如图数据库、实时 OLAP 系统、搜索索引等。这种模式还鼓励进行更多实验,因为我们能够以远低于以往的成本,尝试将新系统添加至管道并观察其能否解决实际问题。


云服务的普及也为连接问题带来了有趣的影响。目前,我们还无法利用 AWS 控制台中的几个简单勾选框就搞定数据集成,而且我认为在短时间之内,各大云服务供应商的系统之间也很难实现完全集成。相比之下,我觉得建立一套点击式用户界面,并借此统一管理各家云服务供应商的产品倒还比较靠谱。最后,云与非云(或者第三方托管)系统之间的集成仍然需要大量努力。


出于上述原因,我认为基于云的第三方解决方案(例如 Stitch)仍将具有价值。这也意味着对于有能力构建并加以运营的高水平用户而言,我在前文中提到的实时 Kafka 架构仍将是最成熟的解决方案。

自动化与权力下放

作为清单中的后两项,自动化与集中化可以说是齐头并进。大多数组织都拥有一支数据工程与/或数据仓库团队,专门负责管理数据管道与数据仓库。当上峰的指令下达至这些团队时,他们需要通过两项标准对请求做出评估:


  • 我们能做什么(技术)

  • 我们可以做什么(政策)


根据我的个人经验,集中式团队当中往往会包含部分自动化方法,但主要集中在技术自动化层面。这可以理解,毕竟它更像是工程团队的轮椅——这部分工作一般体现在利用自动化机制取代手动操作层面,例如添加新的连接器、设置监视或数据质量检查、创建新的数据库或表、授予权限等等。


然而,我认为第二种劳动力数据工程类型还没有实现自动化,即政策性负担。这类差事主要是管理谁有权访问哪些数据、数据应该保留多长时间、允许将哪种敏感数据保存在哪些数据系统当中,以及数据可能存在于哪些地理位置等等。数据工程通常不是最终回答这些问题的团队,但在寻找答案的过程中,他们一般需要扮演联络人或者领航员的角色。具体来讲,他们往往需要将请求一路引导通过组织内的其它部分(例如安全性、合规性以及合法性)。


随着 GDPR 及 CCPA 等监管要求的出台,这方面工作正变得愈发重要。把政府监管同远超传统软件企业的技术扩展速度结合起来,特别是在医疗与金融等敏感领域,可以想见自动化工作将成为政策流程中极为关键甚至不可或缺的一环。


政策自动化的实质,在于关注不太成熟的数据生态系统当中那些经常被忽视的领域。Lyft Amundsen、Apache Ranger 以及谷歌 Data Catalog 等工具链将成为必要选项,帮助我们在审计、DLP、敏感数据检测、保留执行以及访问控制管理等政策的实施层面建立起全面的自动化体系。


随着自动化在技术与政策两大领域的逐步成熟,接下来需要回答的问题自然是:我们为什么需要一支单独的团队来管理这方面任务?如果说工具自己就能实施政策方针并自动操作数据管道,为什么不授权组织内的相关团队直接管理自己的数据管道与数据仓库?


在数据管道方面,权力下放意味着任何团队都可以自主决定如何调整现有数据管道——前提是符合自动实施的技术与政策指导原则。在数据仓库当中,团队可以根据需求创建数据库、数据集、数据市场以及数据存储库等(其中一些现在已经得到广泛应用)。这会带来大量复杂性、混乱且重复的元素。正因为如此,以上述工具为代表的管理方案才会成为权力下放的重要先决条件。


由于管理高复杂度数据生态系统会带来认知负担,因此我觉得唯一具备可扩展性的有效方法就是推动自动化加权力下放。在一定程度上,这可能更像是过去十年当中我们在应用层面所熟知的 CI/CD 以及从整体式到微服务架构的迁移。

总结

这种种趋势,都让我对数据工程的未来抱有乐观心态。其中有很多工作要做,也蕴藏着大量机会。我希望组织内的数据工程能够满足这些需求。开源社区将继续扩展,并建立起新的项目与初创企业。而所有这一切,都有望给组织整体带来巨大的效率提升,并建立起更严格的数据管理实践。


原文链接


The Future of Data Engineering


2019-08-21 16:1010445

评论

发布
暂无评论
发现更多内容

测试用例编写方法

与风逐梦

面面俱到!阿里巴巴2021最新Java面试参考权威指南泰山版震撼来袭

Java 架构 面试 后端 计算机

这个夏天,这群大学生奔波在盐场里忙啥?

科技热闻

云上数据不安全主要原因是什么?保障云上数据安全用什么软件好?

行云管家

云计算 数据安全 企业上云 云数据

惊艳!阿里自爆用480页讲清楚了44种微服务架构设计模式

Java~~~

Java spring 架构 面试 微服务

牛掰!阿里人用7部分讲明白百亿级高并发系统(全彩版小册开源)

Java~~~

Java 架构 面试 多线程 高并发

uniswap市值管理机器人系统开发

PancakeSwap市值管理机器人APP系统开发价格

回款金额自动分配

明道云

云小课|VMware备份上云学习专列来了,快加入吧~

华为云开发者联盟

云备份 VMware备份 备份上云

别问了,我真的不喜欢这个注解!

why技术

Java

叹服!阿里自述SpringCloud微服务:入门+实战+案例

Java~~~

Java spring 架构 面试 Spring Cloud

九阴真经MySQL版:一条查询语句如何执行的

MySQL 数据库 程序员 架构

Swap市值管理机器人系统软件开发资料

美团架构师熬夜整理:Netty权威指南2.0版+英雄传说项目

Java~~~

Java 架构 面试 Netty 架构师

快速解决运维过程中碰到的难题,就用行云管家!

行云管家

运维 运维人生 IT运维 企业运维

netty系列之:搭建HTTP上传文件服务器

程序那些事

Java Netty HTTP 文件服务器 程序那些事

LeetCode题解:897. 递增顺序搜索树,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

限量!腾讯高工用4部分讲清楚了Spring全家桶+微服务

Java~~~

Java spring 架构 面试 微服务

顶级!13位专家力荐Spring5为企业级开发提供一站式方案

Java~~~

Java spring 架构 面试 Spring Boot

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

Java~~~

Java redis 架构 面试 分布式

高光时刻!美团推出Spring源码进阶宝典:脑图+视频+文档

Java~~~

Java spring 源码 架构 面试

RVB2601应用开发实战系列五: 网络播放器设计(一)

Roy夹馍

物联网 risc-v 嵌入式开发

阿里一面 五问 @Transactional

skow

Java Spring Boot 后端

大厂的 SDK 写法,偷学到了!

程序员鱼皮

Java c++ Python 架构 大前端

GameFi/DeFi+NFT软件系统开发方案

限时!字节Java程序性能优化宝典开源,原来这才叫性能优化

Java~~~

Java 架构 面试 JVM 性能调优

进大厂为何要学Zookeeper?

冰河

zookeeper 分布式 一致性 服务注册与发现 协同系统

膜拜!首次公布Java10W字面经,Github访问量破百万

Java~~~

Java 架构 面试 微服务 多线程

🚄【Redis 干货领域】让你彻底会使用“Redis中最陌生且最强大的集合”(ZSET)【上部】

码界西柚

redis Zset 9月日更 Redis指令

细节爆炸!腾讯用13个案例实战讲明白MySQL,没想到这么全

Java~~~

Java MySQL 数据库 架构 面试

除了实时性,你还应该关注的三个数据科学改进方向_AI&大模型_Chris Riccomini_InfoQ精选文章