写点什么

构建 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:043331

评论

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

MobPush for ReactNative

MobTech袤博科技

React Server Component: 混合式渲染

字节跳动终端技术

react.js 原理分析 服务端渲染 混合式渲染 Server Component

这款全能王网络监控工具绝了,不仅能监控Linux服务器,还能监控网络设备!

wljslmz

Linux 网络监控 11月月更 Observium

为什么我们提供了新的公共镜像库

Jianmu

k8s 镜像 Docker 镜像 容器镜像加速

汽配行业erp系统解决方案!

优秀

低代码 ERP系统 汽配行业

助推专精特新企业数字化的低代码

力软低代码开发平台

详解UDS CAN诊断:什么是UDS(ISO 14229)诊断?

不脱发的程序猿

嵌入式 汽车电子 ISO 14229 CAN诊断 UDS诊断

【万字爆肝】带你了解浏览器原理

FE情报局

JavaScript 前端 浏览器 11月月更

同享明年,共创此时 —— GreptimeDB Roadmap 2023

Greptime 格睿科技

数据库 开源 分布式 云原生 物联网

华为云桌面Workspace,让你的办公更加舒适惬意

清欢科技

数据治理:数据标准建设方法和流程

用友BIP

智慧医疗时代,如何更精准、更智能、更高品质?

澳鹏Appen

人工智能 医疗 数据标注 智慧医疗 AI医疗

PostgreSQL 技术内幕(二) Greenplum-AO表

酷克数据HashData

postgresql greenplum

EasyRecovery2023数据恢复软件下载使用教程

茶色酒

easyrecovery2023

Python数据可视化:类别比较图表可视化

不脱发的程序猿

Python Python数据可视化 数据分析可视化 类别比较型图表

Higress 实战:30 行代码写一个 Wasm Go插件

阿里巴巴云原生

阿里云 云原生 Higress

xxj-job服务端架构流程

IT巅峰技术

得物视频编辑工具优化全指南

得物技术

性能优化 线程 视频特效 视频转码

灰度分布的主流方案

穿过生命散发芬芳

灰度发布 11月月更

面试卡在多线程?那就分享几道Java多线程高频面试题,面试不用愁

钟奕礼

Java 程序员 java面试 java 编程

腾讯生态大会倒计时1天!

ToB行业头条

Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd

阿里巴巴云原生

阿里云 Serverless 云原生

云渲染和渲染农场的区别在哪里?

Finovy Cloud

云计算 云渲染 渲染农场

华为云GaussDB 为企业数字化踩了一脚油门

爱科技的水月

详解UDS CAN诊断:DiagnosticSessionControl Service(SID:0X10)

不脱发的程序猿

嵌入式 汽车电子 ISO 14229 UDS诊断 诊断和通信管理功能单元

AI/ML如何在山林防火中大显身手?

澳鹏Appen

人工智能 工业4.0 工业 数据标注 防火

Kubernetes 多集群管理平台 OCM v0.9.0 发布:进一步改善托管集群安全性问题

阿里巴巴云原生

阿里云 云原生 OCM

Kindling程序摄像头——Trace-Profiling功能正式发布

KINDLING

Java 系统监控 Kubernetes, 云原生, eBPF

元器件科普 | 为什么电感在直流电路中相当于短路?(附视频讲解)

元器件秋姐

元器件知识 电感 电感原理 电感元件 元器件科普

Python数据可视化:如何选择合适的图表可视化?

不脱发的程序猿

Python Python数据可视化 选择合适的图表可视化? 数据分析可视化

Java实战案例-动态调色板

小院里的霍大侠

Java 实战案例 初学者 入门学习

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