NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

实操指南:如何为 SAST 工具设置误报基准?

SEAL安全

应用安全 静态应用安全测试 SAST 应用安全测试 软件供应链安全

一招教你如何高效批量导入与更新数据

华为云开发者联盟

数据库 sql 后端 企业号九月金秋榜

阿里云视觉智能开放平台商品图智能生成开启邀测啦

夏夜许游

人工智能 AI 电商 图像分割

iofod - Echart 图表全支持

iofod jude

Java 前端 低代码

FreeRTOS记录(十、FreeRTOS实现带 I2C 通讯的 ModbusRTU 协议从机实例)

矜辰所致

FreeRTOS 9月月更 ModbusRTU

为超级品牌打造「上瘾算法」|Whale 帷幄发布全新 DAM & VAP 内容数字化产品

科技热闻

阿里云视觉智能开放平台离线人脸识别SDK开启邀测啦

夏夜许游

人工智能 AI 人脸识别 离线包

论监控中事件管理的艺术

穿过生命散发芬芳

事件管理 9月月更

住宅代理IP在网络攻击中的作用

郑州埃文科技

代理IP 安全检测 撞库攻击

MODBUS RTU 485 协议简要说明

矜辰所致

Modbus RS485 9月月更

奇点云数据云平台发布DataSimba R3.8长期支持版

奇点云

奇点云

阿里云视觉智能开放平台2D视频转3D视频开启邀测啦

夏夜许游

人工智能 AI 3D

mysql 查询执行过程

急需上岸的小谢

9月月更

活动报名| MongoDB 核心功能及其原理分析

MongoDB中文社区

mongodb

现代数据栈如何降低数据平台的复杂度?

Kyligence

数据分析 云原生 指标中台 指标自动化

计算机网络——码元、波特

StackOverflow

编程 计算机网络 9月月更

Pipy + Sentinel 实现 Redis 的高可用

Flomesh

Service Mesh 服务网格

数据库发展史2--数据仓库

数据库 数据仓库 叶正盛 玖章

送你5个MindSpore算子使用经验

华为云开发者联盟

人工智能 算子 企业号九月金秋榜

Redis复制的实现

急需上岸的小谢

9月月更

华为云宣布全面建设全球初创生态,3年内赋能10000家高潜初创企业

华为云开发者联盟

云计算 创业 创新创业 企业号九月金秋榜

压测平台在全链路大促压测中的实践

得物技术

中间件 全链路压测 QPS 企业号九月金秋榜

PSYNC 命令的实现

急需上岸的小谢

9月月更

PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件

OpenHarmony开发者

Open Harmony

一步步搞懂MySQL元数据锁(MDL)

京东科技开发者

MySQL 数据库 元数据 数据库锁 mdl

荣耀帐号服务,让用户获取变得更简单

荣耀开发者服务平台

手机 物联网 安卓 移动开发 honor

力扣151 - 反转字符串中的单词【双指针与字符串的火花】

Fire_Shield

双指针 LeetCode 9月月更

【HTML-CSS】小游戏--渣灰哥的愿望之砍砍渣灰

Sam9029

JavaScript HTML5, CSS3 9月月更

编译器优化:何为别名分析

华为云开发者联盟

开发 编译器 企业号九月金秋榜

【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大

Java快了!

资源使用率提高25%,成本降低90%,云函数是怎么做到的?

最新动态

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