【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

阿里P8大牛透出,入职阿里必备12套Java面试题,适合从校招到社招

Java 程序员 后端

阿里P8直接甩我一份Java笔记、面试宝典,当我看到目录的一瞬间,简直怀疑人生!

Java 程序员 后端

阿里Redis最全面试全攻略,读完这个就可以和阿里面试官好好聊聊

Java 程序员 后端

使用Eclipse连接SAP云平台上的HANA数据库实例

Jerry Wang

数据库 Cloud SAP 11月日更

阿里三面面试题:分布式服务注册中心该如何选型?我快哭了

Java 程序员 后端

阿里P8大牛整理的300页图解网络知识+计算机底层操作系统

Java 程序员 后端

一个简单的UserCase,带你认识openLooKeng的行级权限控制

openLooKeng

大数据 openLooKeng

阿里-美团-字节面试官必问的Mysql锁机制,你真的明白吗

Java 程序员 后端

阿里P8架构师汇总了史上101个最牛逼的Java技术点

Java 程序员 后端

阿里一面,给了几条SQL,问需要执行几次树搜索操作?

Java 程序员 后端

我终于知道,中国互联网是怎么弯道超车,干翻美国了!

博文视点Broadview

阿里P8十年摸爬滚打,告诉你上古程序猿为何反对使用Redis?

Java 程序员 后端

安装企业级的dokuwiki文档系统

小鲍侃java

11月日更

鸿蒙轻内核源码分析:虚拟内存

华为云开发者联盟

鸿蒙 内存 虚拟内存 OpenHarmony 轻内核

华为全球技术服务引领行业数智创新,共赢未来

阿里P8级大神经验分享,怎样成为一个优秀的架构师?(1)

Java 程序员 后端

阿里P8面试官梳理的2020年999道大厂高频Java面试题(附答案)

Java 程序员 后端

阿里P6程序员的Java之路-或许起点不高,但我从未停止我的脚步

Java 程序员 后端

阿里2020首发一百多道Java高级岗面试题(含答案)

Java 程序员 后端

阿里三面:CAP和BASE理论了解么?可以结合实际案例说下?

Java 程序员 后端

闲下来的学习时光

Java 程序员 后端

用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办

Jerry Wang

JavaScript SAP 11月日更 SAP微信集成

Python爬虫120例之第20例,1637、一路商机网全站加盟数据采集

梦想橡皮擦

11月日更

阿里Java架构师春招面试高频600题:集合+JVM+Redis+并发

Java 程序员 后端

阿里一面就凉了:MySQL+多线程+Redis+算法

Java 程序员 后端

闭关2个月肝完Java7大核心知识(分布式+JVM+Java基础+算法

Java 程序员 后端

阿里P8大佬终于把自己珍藏多年581页JavaJDK9学习笔记分享出来了

Java 程序员 后端

阿里二面被问16道 volatile 问题,玩命补充jvm、多线程、高并发

Java 程序员 后端

技术为本,中科柏诚致力于打造高效供应链金融平台

联营汇聚

一周信创舆情观察(11.1~11.7)

统小信uos

阿里P7告诉你SpringBoot如何防止重复提交?

Java 程序员 后端

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