Databricks 是一个基于 Apache Spark 的强大数据分析平台,将数据工程、数据科学、机器学习、人工智能、数据可视化和数据治理等统一在一个平台上。它可在主要的云平台上使用,包括微软 Azure、亚马逊 AWS 和谷歌云平台(GCP)。每个云提供商都提供了独特的功能、集成选项、原生服务和硬件支持。
不过,哪个云最适合运行Databricks的?
在这篇文章中,我将比较不同超大规模云服务商中Databricks的使用情况,以帮助解答这个问题。此外,我还将探讨多云解决方案的建设潜力,并讨论组织可采用的退出方案。
Databricks 的架构Databricks旨在与Azure、AWS和GCP等云平台无缝集成,提供统一的大数据和中型数据处理及分析环境。其架构主要由两个组件组成:控制平面和计算平面,这两个组件协同工作,确保灵活的数据处理和分析、资源管理和安全的访问权限控制。
Databricks架构图:
控制平面由 Databricks 完全管理,负责管理集群生命周期的编排、调度作业、处理用户身份验证、管理访问控制以及确保数据访问的安全。它托管 Databricks 的网页应用、用户界面和 API,是平台服务的中央枢纽。
计算平台(Compute Plane)计算平面执行数据处理任务,并运行在您云账户基础设施之中。例如,在Azure中,您可以在Databricks资源组里找到计算平面。Databricks提供了两种计算选择。
- 无服务器 — 完全由 Databricks 管理,自动配置资源,无需手动管理资源,自动配置。
- 经典 — 运行在您的云账户内的计算资源,让您完全掌控网络配置、安全策略和扩展策略等。
在 Azure、AWS 和 GCP 上快速对比 Databricks
从用户的角度来看使用 Unity Catalog、Databricks 工作流程、卷、特征存储库、模型等时,无论 Databricks 是托管在 Azure、AWS 还是 GCP 上,都没有明显的差异。无论是通过表还是卷访问数据,编排工具(Databricks 工作流程)在整个平台上都保持一致。尽管 Delta 文件存储在不同类型的云存储中,Databricks 抽象了这些不同,用户不会注意到这些差异。
不过,功能上有一些差异。例如,截至目前,GCP上的无服务器计算服务仅在几个区域可用。但核心功能保持一致,用户可能遇到一些限制,或不同的功能扩展路径。
计算基础设施Databricks 使用每个云提供商特有的基础设施资源。
- Azure: 基于 Azure 的虚拟机
- AWS: 基于 EC2 的
- GCP: Google Kubernetes 引擎 (GKE) 的
Databricks的计算成本与DBUs和基础设施成本是分开的,这些成本会根据虚拟机(VM)的价格变化。在谷歌云平台(GCP)上,使用谷歌容器引擎(GKE),每个工作区(Workspace)因为需要专用集群,每月大约会产生额外的200美元费用。
存东西Databricks 使用以下云存储解决方案存储数据:
- Azure: 存储帐户(ADLS Gen2 或 Blob 帐户)
- AWS: S3
- GCP: Google Cloud Storage
虽然云存储服务的功能类似,但在数据组织上有所不同。S3 和 Azure Blob Storage 将文件视为无层次结构的对象。相比之下,Azure 文件存储 和启用的 GCP 文件存储 使用层次结构模型,将数据组织成类似传统文件系统的文件夹结构。
存储费用因提供商而异,应结合数据传输费、存档费和检索费等因素进行考虑。
社交网络Databricks支持使用虚拟网络来实现资源隔离并确保安全连接。
- Azure: VNet (虚拟网络 xūnǐ wǎngluò)
- AWS: VPC (虚拟网络 xūnǐ wǎngluò)
- GCP: VPC (虚拟网络 xūnǐ wǎngluò)
每个提供商都提供了不同的本地连接方式,需要特定配置且成本也各不相同。
搭建一个Databricks解决方案在选择用于Databricks的云提供商时,了解超大规模云提供商提供的原生服务至关重要。Azure、AWS和GCP包括数据处理、集成、AI/ML和数据治理在内的广泛服务。与您的数据源集成可能需要使用这些云原生服务。此外,您还应考虑是否使用Databricks Mosaic AI或类似Vertex AI的其他选项。
流程编排可能需要使用云原生或开源解决方案,而不是Databricks工作流解决方案,甚至需要与Databricks工作流集成。这些决策可能需要提升团队技能水平或聘请具有必要专业知识的专业人员以满足需求。您的团队可能也有偏好云原生服务以及它们与Databricks的集成。
Databricks 在 Azure 上Microsoft Azure 全面支持 Databricks,实现与原生 Azure 服务的无缝集成。这样可以让用户更好地理解。作为原生的第一方服务,Azure 上的 Databricks 提供统一的计费、与原生服务的集成以及访问最新的功能。
在 Azure 中使用 Databricks 构建数据平台可以做到以下几点:
- Azure 数据工厂 (ADF): 一个集成了多种数据源的集成工具,包括 SQL 数据库、NoSQL 数据库、云存储、API 以及 SAP 和 Salesforce。ADF 还支持自托管集成运行时,用于本地数据传输和流程编排和调度,包括提取数据、执行笔记本和触发工作流。
- 事件中心 (Event Hub): 支持实时数据流和处理。
- Microsoft Fabric: 支持集成,可以通过镜像等方式实现,利用了两个工具的功能。Microsoft Fabric 与 Databricks 类似,支持 Apache Spark 和 Delta Lake 格式,同时提供了低代码数据工厂、Python 笔记本、简单配置等额外功能。
- Power BI: 可作为商业智能报表工具,通过导入方式或直接查询方式与 Databricks SQL 仓库集成。
- Azure Key Vault: 支持通过 Databricks 的密钥范围安全存储敏感信息,包括密码、密钥和加密密钥。
- Azure ML: 微软的云服务,专为机器学习项目设计。
- Azure DevOps: 支持 Databricks 以及其他 Azure 服务的 CI/CD 流程。
使用 Unity Catalog 和 Lakehouse Federation ,你可以连接到 Azure 内部以及其他外部的数据源,提供统一的数据访问方式。
您可以使用 Azure Synapse Analytics 来管理数据和编排流程,既可以替代 Databricks,也可以作为其辅助工具。然而,由于 Microsoft 正在专注于 MS Fabric 的开发,这里不涉及这部分内容。
在 AWS 上的 DatabricksAWS 上的 Databricks 可以通过 AWS QuickStart 创建。只需登录 AWS 管理控制台并选择 CloudFormation 模板和区域,填写所需的参数值,然后部署即可。您可以下载和自定义模板,或使用 Terraform 创建 Databricks 工作区。还可以创建 Unity Catalog 并配置对 AWS S3 存储的访问。
在Azure、AWS和GCP上,Databricks的界面和平台使用起来都是一样的。
在 AWS 中,可以集成各种原生服务来进行数据摄入,例如:
- AWS AppFlow: 一个完全托管的集成服务,用于在 Salesforce、SAP、Google Analytics、Facebook Ads 和 ServiceNow 等 SaaS 应用之间传输数据,并将数据存储在 AWS S3 中。这有助于向数据的初始层供数据,并可以使用 Databricks 来处理这些数据。
- 数据库迁移服务 (DMS): 支持关系数据库、数据仓库、NoSQL 数据库和其他数据存储的迁移。使用 DMS,您可以实现更改数据捕获 (CDC) 过程,将源系统中的更改导出到 S3 中的 Parquet 格式,以供 Databricks 进行数据摄入。
- AWS Glue: 一个基于 Apache Spark 的无服务器的数据集成服务,支持超过 70 种不同的数据源,并与 AWS 数据目录集成。它可以作为数据摄入工具使用。
- AWS Kinesis: 支持实时数据流和处理。
- AWS Secret Manager: 支持密钥和密码的存储。
AWS 提供了诸如 AWS Athena 和 AWS Redshift(数据仓库服务) 这样的即席分析和报告工具
- AWS Athena: 允许以扫描的数据量付费的方式查询存储在 S3 中的数据。数据可以通过爬虫程序发现和注册,在 AWS 数据目录中注册。
- AWS Redshift: 利用 Redshift Spectrum 从 S3 读取数据,并提供数据仓库解决方案。它可以作为 Databricks SQL 仓库的替代方案,虽然需要进行更深入的分析来评估其适用性,但这是一个值得考虑的选择。
对于AI和机器学习(ML)领域,SageMaker 可以作为 Mosaic AI 的替代方案。一种混合方法是使用 Databricks 进行数据管理,而使用 SageMaker 处理 ML 任务,这种方法是可行的,尽管但需要仔细权衡其利弊。
在数据可视化和报告方面,AWS 提供了 QuickSight,但 Databricks 也支持使用 Power BI、Tableau 和 Click 等外部可视化工具,提供了工具选择的灵活性,使用户可以根据需求选择合适的工具。
流程编排可以通过Databricks 工作流来管理,但Amazon MWAA (Managed Workflows for Apache Airflow) 这样的原生服务也提供了一个替代方案。MWAA 提供了可扩展性、可用性和安全性,并且不需要管理基础设施。用户需要配置连接并将 DAG 文件部署到 S3 存储桶。值得一提的是,停止 MWAA 可以降低成本。或者,也可以在 EC2 实例上部署 Airflow,但这样需要管理更新、配置和维护。
要在 GCP 上创建 Databricks 工作空间,您必须通过 Google 云市场部署它。部署过程会在您的账户中创建基础设施。与其它云提供商不同的是,GCP 使用 Google Kubernetes 引擎(GKE) 来托管 Databricks,提供与 Google 云身份、Google 云存储、BigQuery 以及其他 Google 云服务的内置集成。
Databricks 强调的一个好处是:
“我们的初步测试结果显示,对于大量并发工作负载,GKE的冷启动速度比其他云提供商的冷启动速度更快。”
然而,一个潜在的问题是每个工作区每月200美元的GKE成本。虽然这对大型企业来说可能并不显著,但对于部署多个环境的小组织来说,相比AWS或Azure,可能会产生额外的成本。
GCP中的数据集成功能如下支持:
- 数据融合 是基于开源项目 CDAP 构建的。它自带了超过100个连接器(包括SAP、Salesforce和SQL数据库)。构建一个管道需要使用预定义的转换操作;因此,只需几步操作,你就可以轻松地建立一个简单的管道。
- 数据流 是一个完全托管的服务,使用开源的 Apache Beam SDK。它支持实时和批处理。通过使用预定义的模板,你可以从许多常见的数据源创建数据摄取过程。你也可以使用Python或Java创建自己的管道。数据流具有内置的自动扩展功能,支持从最小到最大的数据管道。它可以作为摄取工具,从各种来源提取数据并将其保存在 GCP Cloud Storage 中,作为 Parquet 格式的文件存储在你的 lakehouse 的青铜层中。数据流不支持带有Databricks连接模板。
- Pub/Sub 专为流处理设计。
- GCP 密钥管理器:支持密钥和密码的管理。
在进行分析处理时,你可以选择BigQuery作为数据仓库,或者使用BigLake表查询Databricks生成的数据以进行即席分析或报告。BigQuery的基于扫描数据的计费模式使其成为一种成本效益高的选项。然而,目前还没有直接与Unity Catalog集成,需要在Unity Catalog中创建外部表来使用BigLake表。
GCP 提供强大的 AI/ML 能力,包括 Vertex AI 用于模型训练、预构建模型和 AI 服务,如 Gemini、Claude 和 LLaMA。Vertex AI 运行在专为 ML 任务设计的硬件上。对于缺乏 ML 经验的用户,AutoML 可以帮助开发自定义模型,使用户无需深入了解 ML 也能定制模型。
Databricks 与 Vertex AI 集成,使数据科学家和机器学习工程师能够将模型部署到 Vertex AI 以提供实时服务。借助一个新的插件,在 Databricks 上使用 Managed MLflow 训练的模型可以部署到 Vertex AI,利用 Apache Spark 和 Delta Lake 的优势,并通过模型监控工具确保模型质量。
GCP中的流程编排任务可以使用Composer(Google托管的Apache Airflow)来管理。Composer能够与GCP服务和Databricks无缝集成。虽然Databricks工作流也是一个选择,但对于需要同时使用Databricks和原生GCP服务的复杂工作流程而言,Composer是一个强大的替代方案。
在报告方面,Looker 是 GCP 的内置 BI 工具,也支持像 Power BI 和 Tableau 这样的其他工具。
在 CI/CD 方面,Cloud Build(云构建)提供了部署代码和基础设施的流水线。
基于云无关性的退出策略和特性Databricks 设计上是跨云的。假如你在 Azure 上运行 Databricks,以后决定切换到其他云服务商,迁移过程相对简单。您需要配置一个新的 Databricks 工作区,将 Delta 表移动到新的存储解决方案,并且只需要很少或几乎不需要调整即可在新云上继续运行。这要归功于 Databricks 的 Unity Catalog,它为表和数据集提供了抽象层。
然而,如果使用了ADF、DMS或Dataflow等原生服务,退出策略就会变得复杂,需要在新环境中找到替代品。LakeFlow的开发增强了Databricks的自主性,不过可用的连接器数量仍然有限。
类似地,对于ML/AI技术的考量也是如此。如果你用的是Databricks Mosaic AI,切换到新的云服务商很简单。然而,如果你用的是Vertex AI、Azure ML或SageMaker,就需要找找替代方案。
对于编排,存在两个主要选项:Databricks 工作流 和 Apache Airflow,后者在所有云提供商上都得到支持。虽然 Airflow 提供了功能强大且灵活的编排工具,提供各种操作符、连接器和支持基于 Python 的自定义,相比之下,与低代码 Databricks 工作流相比,它需要更多的专业知识来管理和维护。
多云战略正如我之前提到的,Databricks 运行在 Azure、AWS 和 GCP 上。如果你的组织采用多云策略或在多个云上运行,Databricks 可以帮助你统一多云环境中的数据管理。这对于希望避免供应商锁定的组织来说至关重要,可以确保业务连续性的同时,通过利用不同提供商的最佳服务来优化云成本,以达到最佳效果。
在大型企业里,我们常常会遇到许多负责支持组织的不同部分或特定领域的工程团队。这种分布导致了数据孤岛,并需要不同技能的工程师。借助 Databricks,您可以实现标准化和统一性。
很容易想到,一个团队开发的摄取框架(ingestion framework)可以被另一个团队使用,而来自 Azure 的 Azure Data Factory (ADF) 却不能用于 GCP。这种标准使得使用多云的组织能够减少所需的专业技能,并重用组织内部开发的解决方案,从而节省时间和资源。
当然,你仍然需要不同类型的基础设施工程师来维护云环境,正如之前所说,Databricks 在各个环境中都将保持一致。
通过采用Databricks作为多云策略的一部分,组织可以提高灵活性,加强合作,并降低成本,同时在不同云服务商间保持对其数据资产的控制权。
数据治理注:数据治理是指确保数据的适当使用和管理的实践和规程。Unity Catalog 在 Databricks 中使数据治理不再受云的限制,为数据和 AI 资产提供集中的数据治理与安全管理。它具备以下功能:例如
- 数据目录: 存储有关AI和数据资产的元数据信息,让用户能够浏览和探索数据。
- 数据血缘: 捕获运行时数据血缘,涵盖任何语言在Databricks集群上执行的查询。
- 审计日志: 提供访问Databricks用户的操作审计日志。
- 单一权限模型: 集中的AI和数据对象权限管理。
虽然这些功能很有用,但在将数据导入 Databricks 之前使用 ADF、DMS 或 DataFlow 进行数据摄入,数据血统只会反映 Databricks 内的活动。目前,向 Unity Catalog 添加自定义步骤还在私人预览,因此我们需要等待更广泛的可用。
使用多个服务会使数据治理变得复杂,并且可能需要利用原生功能,特别是在集成受限或困难的地方。重视数据目录和数据血缘的组织应该仔细考虑这些因素。
限制条件在选择云提供商的过程中,您需要考虑Databricks的某些功能可能在某些云提供商上受限,特别是在AWS和GCP上尤其需要关注。您可以通过查阅文档来确认所需功能是否可用及其在哪些区域提供,因为某些功能可能仅在特定区域提供。在撰写本文时,例如,Serverless计算在所有AWS和GCP区域都不支持。
虽然 Databricks 可以与原生服务集成,但在 AWS 和 GCP 中,您可能会遇到在直接集成中可能会遇到的挑战,因为缺乏原生连接器。在这种情况下,您可以使用通过原生服务生成的 Parquet 或 CSV 文件来集成。不过,在 Azure 中则不会有这些问题。不过,我认为这并不会成为使用 Databricks 构建一个完全运作的数据平台的主要障碍。
谢谢阅读!如果你觉得这篇文章很有启发性,请点击“赞同”按钮,并在个人Medium和LinkedIn主页上关注我。有任何问题或需要建议,欢迎随时通过LinkedIn联系我。
共同学习,写下你的评论
暂无评论
作者其他优质文章