谈在全场景下构建 Modern Data Stack

2022-04-25 08:11:28 浏览数 (1)

之前老板和我提到了国外的 Modern Data Stack 概念。三个字字字玑珠:

  1. Modern, 就像 C 和 Modern C 一样, 那 Modern Data Stack 和原有被广泛使用的 Data Stack 相比意味着更简单和易用。
  2. Data, 指明了领域,也就是数据处理领域。
  3. Stack,强调了 组合 的概念,也就是说要处理数据,需要一系列软件产品(component)进行组合。因为没有一个技术或者一个产品能够把数据处理环节都做到最好。有 Stack 必然就有衔接,这个也很重要。

国外随着技术生态体系的发展,慢慢形成了一个 Modern Data Stack

(图片来源于文章:https://continual.ai/post/the-modern-data-stack-ecosystem-fall-2021-edition#:~:text=The modern data stack is a collection of cloud-native,about installing and maintaining technology.)

数据处理,其实就几个环节,现在每个环节都有几个产品去填上了:

  1. Data Integration/Event Tracking. 其实就是数据接入层,这些工具处理能力不强,核心强在各类数据源的对接,然后把数据丢到下一个环节去。典型如Fivetran
  2. Data Warehouse/Data Lake 云数仓、云数据湖,典型如 SnowFlake
  3. Transformation/Analytics 这类工具优势在于数据的处理能力强,但在数据源对接方面比较弱,一般仅支持主流云数仓,云数据湖。典型如 DBT。
  4. AI/BI 数据处理完成后,其实主要就是应用于数据智能和数据可视化,这个环节是数据实际产生价值的环节。

说完 Stack 里的每个环节以及对应的 Component, 这里其实还有两个需要其他 component 来解决的问题:

  1. 环节的衔接 衔接主要是基于云服务的 Catalog 来完成,比如像 glue之类的。
  2. 整条数据 Pipeline 的质量

可以看到 modern data stack 的几个特点:

  1. 以云为基础环境,以云数仓/云数据湖 为存储核心
  2. 是对云上的 component 的组合
  3. 每个 component 使用云上 catalog 来进行衔接
  4. 每个 component 只专注在自己的环节
  5. 每个 环节的 component 应该都是易于替换的

这里也可以看到 modern data stack 和 传统 data stack的核心区别其实是 modern data stack 其实就是一堆云上组件的组合以及使用这些组件的一些指导思想。

modern data stack 给用户带来的价值就是我可以在每个环节选择一个或者多个自己喜欢的组件,然后可以没有(或者很低)开发成本的将他们组合,最后完成整个数据的 pipeline. 这个确实也是传统 data stack 劣势的地方。因为

  1. 传统 data stack 各个 component 的组合成本其实是有点高的,而且如果不是云,维护运营成本也高。
  2. 传统 data stack 中各个 component 诞生的时候其实并没有考虑生态位,所以不同 component 的功能重叠比较多, 复杂度也更高。

不过我个人认为,完全云化也是不现实的。我相信公有云,私有云,传统私有部署都有其各自的价值以及适用场景。唯一变化的是三种形态的版图此消彼长而已,但他们三者中的某一种都不会消亡。

Warning: 后续内容利益相关, Kylin/Byzer 是我所在公司开源产品。

那接下来我们就会想,这三种场景,是不是有一些产品组合在三种场景下都构成类似 modern data stack 的技术栈?我觉得是有的。

  1. Data integration/Event Tracking 数据接入层生态位可以是 Byzer JuiceFS。 JuiceFS 可以很好的承接实时日志的收集, Byzer 可以对接各种数据源,实现数据的采集和分析。
  2. Transformation/AI 生态位可以是 Byzer OpenMLDB。 OpenMLDB 可以很好的强化 Byzer 在特征工程领域的能力。
  3. 数仓/数据湖 生态位可以是 Kyligence Cloud/Enterprise/Kylin
  4. BI 方向也是 Kyligence Cloud/Enterprise/Kylin, 他能够很好的衔接已有的各种 BI 工具。

这里我们看到了, KC/KE/Kylin 很好的覆盖了数仓/数据湖和BI方向。 Byzer 则很好的覆盖了数据接入和数据处理以及AI方向。以这两个产品为核心,结合其他的一些开源软件产品,几乎就可以涵盖整个 Data Stack。 Byzer 和 Kylin 的开源版本可以很好的满足私有云,传统部署。

此外,两者既可以做一个轻量的整合(衔接),也可以几乎不做修改的整合(衔接)。

轻量整合,比如我这篇文章里提及的 MLSQL 一分钟让 Kylin 装备 ETL 能力!

这里我们可以直接在 Kylin 的查询界面编写一段 Byzer 代码完成前置的 ETL 数据处理。 无代码整合,则是使用 Byzer Notebook 去完成 ETL 处理,数据写入 Hive 供 Kylin 后续建模处理,然后 Kylin 可以对接各种 BI 流程。

前面我们提到的 Data integration/Event Tracking 数据接入层生态位,可以参考我这篇文章 如何使用开源 Byzer 和 JuiceFS 做实时Nginx日志分析,相比 ELK 或者传统的基于 flume Kafka Flink/Spark 体系,都有很大的优势。

最后,用户不妨使用我上面提及的技术,构建自己的 Modern Data Stack。

0 人点赞