写点什么

构建 DeNexus 数据平台:为什么在 Databricks 和 Snowflake 间选型前者

  • 2021-12-23
  • 本文字数:3728 字

    阅读完需:约 12 分钟

构建DeNexus数据平台:为什么在Databricks和Snowflake间选型前者

摘要: 作为 DeNexus 安全服务提供商,需要良好选型的数据平台实现巨量数据的分析和管理。DeNexus 根据自身需求选型了 Databricks 的湖仓一体解决方案,满足自身对数据类型、用户类型、可扩展性、版本管理和 MLOps 上的需求。


正文:


DeNexus 致力于解决威胁全球关键基础设施的网络安全风险,并为承保这些设施的保险公司提供服务。

挑战:可靠的数据

关键基础设施并不仅限于机场、电力设施和能源供给等中心,还包括由复杂运营技术 (OT)构成的生态,以及 IT 网络、工业控制系统(ICS)、企业软件和人员等。


需要关注的是,关键基础设施正面对着愈发严重的网络安全风险。在过去五年中,能源、可再生能源、制造、运输、供应链生态系统等都已成为不断增长的勒索软件和恶意软件攻击的受害者。仅在近两年中,针对ICS和OT的勒索软件攻击就增长了五倍以上。解决网络安全风险挑战的代价高昂,因为其呈现出的巨量数据将会吞噬所投入的大量资金。


针对此,DeNexus 推出了支撑数据的采集、存储和使用的专有数据湖“DeNexus 知识中心”(DeNexus Knowledge Center),为 DeNexus 自研风险量化算法的开发和训练提供数据服务,进而形成了供 DeRISK 使用的产品。DeRISK 是 DeNexus 推出的一款安全、高效、灵活并高度可扩展的风险量化 SaaS 平台



图 1 DeNexus 知识中心”(DeNexus Knowledge Center)结构图

DeNexus 的需求

  1. 支持不同类型用户的数据访问需求:包括执行复杂数据转换的高级用户,以及仅是使用 SQL 的基础用户。

  2. 强大的数据版本控制功能:确保特定文件和表的版本不会在高级建模中发生更改,能记录数据湖中所有的历史交易,可轻松访问和使用历史版本数据。

  3. 支持异构数据:为 DeRISK 的输入输出和各种格式的商业智能数据提供支撑,包括结构化的、半结构化的和非结构化数据。

  4. 高可扩展性:考虑业务的快速增长,设计上需满足 PB 级数据存储。参见在线视频“面向无穷:够大并非总是够好”。

  5. 委托架构:为优化内部人力资源配置,解决方案应尽可能考虑采用 SaaS 或 PaaS。

  6. 机器学习模型运营化(MLOps):该数据湖的一个主要用例,是通过模型应用使用数据。数据平台的用户主要是企业中的数据科学家。为推进开发并加速上线部署,最佳实践需参考MLOps范例

  7. 强安全性和合规性约束:数据存储需具备很好的灵活性和动态性。


DeNexus 在评估了市场上现有的解决方案后,摈弃了基于数据仓库理念的解决方案。因为面对以 Parquet 或 Avro 格式提供的数据,以及 Spark 或 Presto/Trino 等工具,是否依然需要去区分数据湖和数据仓库,这取决于具体的用例。对于 DeNexus 而言,是完全没有必要的。因为 DeNexus 的数据平台事实上是全新构建的,数据主要并非来自 SQL Server、PostgreSQL、MySQL 等关系数据库管理系统,从一开始就不存在任何需要做迁移的数据源。


近数据仓库之父 Bill Inmon 最也阐述了类似的观点:


“一开始,我们会把所有的数据都扔到一个大坑中,称其为“数据湖”。但我们很快就会发现,仅仅将数据扔进坑里是毫无意义的操作。为使数据有用,即加以分析,数据需要相互关联,并为最终用户提供良好设计的数据分析基础设施。除非这两个条件得到满足,否则数据湖就会变成一片沼泽,并在一段时间后开始散发臭味。不符合分析标准的数据湖,就是浪费时间和金钱。”


-- Bill Inmon,“构建湖仓一体

解决方案:湖仓一体

数据仓库的主要优点在于 ACID、版本管理和优化等,而数据湖的主要优点是存储代价低、支持异构数据格式等。DeNexus 的数据管理系统考虑结合二者的优点,因此需要的是仓湖一体平台。DeNexus 选择了 Databricks 产品,一方面考虑其提供了仓湖一体的原生实现,其它方面考虑因素将在下面做展开介绍。



图 2 数据仓库、数据湖和仓湖一体的对比


机器学习算法并不能很好地适配数据仓库,因为 BI 查询通常仅抽取少量的数据,但 XGBoost, Pytorch, TensorFlow 等实现的机器学习算法需在不使用 SQL 的情况下处理大量数据集。此外,使用 JCBD/ODBC 连接器时会做多次数据类型转换,导致数据读取效率很低,而且一般不能直接兼容数据仓库所使用的内部专有数据格式。另一种做法是将数据以开放数据格式导出为文件,但这增加了额外的 ETL 步骤,增加了复杂性,也不合时宜。


尽管 Snowflake 这类“云原生”数据仓库支持以数据湖格式(开放数据格式)读取外部表,也实现了湖仓一体方法,但是:


  • Snowflake 数据的主要来源是自身的内部数据,存储成本更高。因此在一些情况下仍然需要 ETL 流水线,增加了额外的维护流程,并导致更多的可能故障点。

  • 对数据湖中的数据,Snowflake 并未提供与其内部数据相同的管理功能,例如事务、索引等。

  • Snowflake 的 SQL 引擎的优化,主要针对其内部格式查询数据。


此外,正如前面提及的 Presto/Trino、AWS Athena 等数据湖查询工具,Snowflake 的单一用途工具并不能解决数据整体上的问题。这些工具缺乏正常数据仓库所具有的 ACID 交易、索引等基本数据管理特性。



图 3 DeNexus 数据平台结构图

Databricks 如何满足需求

支持不同类型用户的数据访问:要使用 SQL 访问数据,必须有人去处理原始数据,并做结构化处理。那么是否能用基本的 SQL 语句完成数据转换?答案虽然是肯定的,但只能祝一切好运。


SQL 有其强大之处,但并非适用于一切。SQL 并非一种通用编程语言,因此非常难以实现递归和循环,难以使用变量。鉴于我们无法整体把握实现 DeRISK 产品路线图所需执行的数据转换,因此多样性是一个重要的考虑因素。Databricks 产品支持执行 Spark、Python、Scala、Java 和 R 等语言,甚至支持 SQL,适用于不同类型的用户。完美!



强大的数据版本控制:Databricks 原生支持DELTA格式Delta Lake是完全兼容ACID的,这就解决了 Spark 的不兼容ACID这一主要问题。此外,Delta Lake 支持在流水线出现错误时恢复系统,并易于对数据提供确保,例如确保开发模型中所使用的数据不变(参见 Delta Lake 文档:“数据版本管理”)。此外,Delta Lake是完全开源的


Spark 等 Databricks 产品支持处理各种的类型数据,结构化的、半结构化的,以及非结构化的。


此外,Spark 并不使用特定的数据格式。鉴于Spark是完全开源的,我们可以手工开发连接器,或是使用 Python、Scala、R 和 Java 等语言的原生软件库。毕竟,Databricks 不仅托管了 Spark 一款产品。


卓越技术:除非看到类似Google、Netflix、Uber和Facebook这样的技术领导者从开源系统转向了专有系统,否则尽可放心地使用Databricks这些从技术角度看十分卓越的开源系统。开源系统更具多样性。


Databricks PaaS 本质上是可扩展的,数据平台可使用所有的云资源。例如,使用 S3 可满足更大的存储需求,以及一些新环境中的一次性存储需求;Databricks 可直接满足对更多处理能力的需求,极大节约了企业最具价值资源即软件工程人员的时间;一旦新的数据科学家加入团队,不再需要在本地配置个人计算机;用户可在任何时候细粒度控制在运行的机器数量,及各台机器所具备的功能,同时避免出现意外计费的情况!


此外,Spark DBR(即 Databricks 的商业版 Spark)比常规 Spark 的性能更快,但需要为Databricks Runtimes额外付费。这是物有所值的。



图 4 Spark 开源版与 DBR 版的性能对比(来自 YouTube)


基于 Databricks+托管 MLflow,实现 MLOps 完整解决方案。MLflow 提供了模型开发的环境,以及机器学习全生命周期的平台。MLflow最初是由Databricks创建,之后捐献给Linux基金会。参见 GitHub:mlflow/mlflow:机器学习生命周期的开源平台


MLflow 支持数据科学家轻松追踪实验中使用的数据表版本,并在后期重现指定版本的数据。此外,MLflow 为数据科学家提供了协作环境,支持同事间相互共享模型和代码。MLflow可与Azure-ML和AWS SageMaker等机器学习平台联合使用。在 Databricks 托管 MLflow 中注册的模型,可以轻松地用于 Azure ML 和 AWS SageMaker 中。


此外,使用 Databricks 托管的 MLflow,数据科学家可基于 Spark ML 和 Koalas(即 Spark 中实现的 Pandas)轻松实现算法并行化。


数据存储层和处理层的完全解耦。Databricks 实现了计算和存储的分离,可处理在任何位置、以任何格式存储的数据。不需要任何专用的格式或工具,因此数据迁移具有高度的灵活性。

总结

图 5 显示了数据的三个阶段,以及每个阶段所使用的工具:


  • 数据处理:Databricks、Python+AWS Lambda、EC2。

  • 数据发现:Databricks、AWS Athena。

  • MLOps:Databricks、AWS SageMaker。


各阶段的共同点是,都使用了 Databricks 产品。


过程中不存在任何的供应商锁定,除了使用 AWS Glue 数据目录实现外部元数据存储。按使用付费的模式,支持用户根据特定场景选型替代服务。尽管这类场景目前我们尚未遇见,但不排除未来可能遇上。



图 5 整合所有服务的数据平台(译者注:图片来自 CIDR 2021 论文“Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics”)。


如果希望良好的架构和数据模型能解决数据一致性、治理和架构实施上的大部分问题……并且希望能在这些数据上获得更多的功能和灵活性……那么请选型Databricks产品……几乎没有Spark和Delta Lake做不到的事情。


作者简介:

Iván Gómez Arnedo 是一位具有丰富经验的数据工程师,致力于解决架构和可扩展性等具有挑战性问题,以及构建数据密集型应用,取得了良好的业绩。在加入 DeNexus 之前,Iván 曾在 BASF 银行和 Santander 银行参与多项关键数据项目。


原文链接: Building our Data Platform: Why we have chosen Databricks over Snowflake

2021-12-23 19:043392

评论

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

【Node.JS 】path路径模块

坚毅的小解同志

node.js 11月月更

API关键技术——身份认证

阿泽🧸

11月月更 API安全

【web 开发基础】PHP 自定义常规函数的声明及应用 (30)

迷彩

函数 PHP基础 11月月更 自定义函数 常规参数函数

【Node.JS 练习】时钟案例

坚毅的小解同志

11月月更

【Node.JS】buffer类缓冲区

坚毅的小解同志

node.js 11月月更

CleanMyMac X2023苹果电脑系统清理维护软件

茶色酒

CleanMyMac X2023

2022-11-22:小美将要期中考试,有n道题,对于第i道题, 小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。 小美总分是每道题获得的分数。 小美不甘于此,决定突击复习,

福大大架构师每日一题

算法 rust 福大大

Hive 与 HBase 之间的区别和联系

千锋IT教育

java并发编程挑战与原理剖析

想要飞的猪

synchronized volatile原理

浅谈Go语言反射

闫同学

Go 反射 11月月更

Java反射(完)类加载和反射获取信息

浅辄

Java 反射 11月月更

聊聊mybatis的反射之Invoker模块

急需上岸的小谢

11月月更

性能测试知识科普(五):能力分层

老张

性能测试 岗位模型

Node.JS 】http的概念及作用

坚毅的小解同志

node.js 11月月更

筑道与寻术:华为云与汽车产业的时代问答

脑极体

【Node.JS】写入文件内容

坚毅的小解同志

node.js 11月月更

什么是容器编排及编排的优点

穿过生命散发芬芳

容器编排 11月月更

【Node.JS 练习】考试成绩整理

坚毅的小解同志

node.js 11月月更

【Node.JS】事件的绑定与触发

坚毅的小解同志

node.js 11月月更

聊聊如何让办公网络直连Kubernetes集群PodIP/ClusterIP/Service DNS等

大卡尔

#Kubernetes# 工程效能 11月月更

kubernetes1.15极速部署prometheus和grafana

程序员欣宸

Kubernetes Prometheus 11月月更

一文搞懂Go1.18泛型新特性

闫同学

Go 11月月更

融云推送服务:独享推送通道,更高并发能力,应用运营必备

融云 RongCloud

互联网 消息

【愚公系列】2022年11月 微信小程序-页面生命周期

愚公搬代码

11月月更

聊聊mybatis的反射之对象工厂

急需上岸的小谢

11月月更

Spring事务的底层原理

千锋IT教育

融云 IM 和 RTC 服务,「助攻」智能物流等客户打通链路、完善生态

融云 RongCloud

IM RTC

支持向量机-线性SVM用于分类的原理

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

聊聊Mybatis的反射之ObjectWrapper

急需上岸的小谢

11月月更

Alien Skin Exposure2023独立编辑器和PS/LR插件

茶色酒

Alien Skin Exposure

知乎好物推荐文能不能赚钱:如何撰写好物推荐文

石头IT视角

构建DeNexus数据平台:为什么在Databricks和Snowflake间选型前者_开源_Iván Gómez Arnedo_InfoQ精选文章