了解关键概念
Azure Databricks 是单一服务平台,采用多种技术来实现大规模数据处理。 使用 Azure Databricks 时,需要理解一些关键概念。
工作区
Azure Databricks 中的 工作区 是一个安全的协作环境,可在其中访问和组织所有 Databricks 资产,例如笔记本、群集、作业、库、仪表板和试验。
可以通过选择 “启动工作区”从 Azure 门户打开 Azure Databricks 工作区。
它提供基于 Web 的 用户界面(UI) 以及用于管理资源和工作流的 REST API。 可将工作区结构化为文件夹,以组织项目、数据管道或团队资产,并且可以在不同级别应用权限来控制访问权限。 他们通过允许多个用户(如数据工程师、分析师和数据科学家)协作,共同处理共享笔记本、跟踪试验和管理依赖项,从而支持 协作 。
此外,工作区与 Unity 目录 (启用时)相关联,以实现集中式数据治理,确保在整个组织中安全地访问数据。 每个工作区还与一个 基础 Azure 资源组(包括托管资源组)相链接,该资源组保存了 Databricks 在幕后使用的计算、网络和存储资源。
Notebooks
Databricks 笔记本 是基于 Web 的交互式文档,可将 可运行的代码、可视化效果和叙述文本 组合在一个环境中。 它们支持多种语言(如 Python、R、Scala 和 SQL),并允许用户使用 magic 命令在同一笔记本中的语言之间切换。 这种灵活性使笔记本非常适合 用于探索数据分析、数据可视化、机器学习试验和生成复杂的数据管道。
笔记本还设计用于 协作:多个用户可以同时编辑和运行单元格、添加批注和实时共享见解。 它们与 Databricks 群集紧密集成,使用户能够高效地处理大型数据集,并且可以通过 Unity 目录 连接到外部数据源,以便管理的数据访问。 此外,笔记本可以进行版本控制、安排为任务或导出以在平台外部共享,使它们在临时探索和生产级工作流中发挥核心作用。
笔记本包含两种类型的单元格的集合: 代码单元格 和 Markdown 单元格。 代码单元格包含可运行的代码。 Markdown 单元格包含以文本和图形的形式呈现的 Markdown 代码。 可以 运行 单个单元格、一组单元格或整个笔记本。
群集
Azure Databricks 利用两层体系结构:
- 控制平面:此内部层由Microsoft管理,用于处理特定于 Azure Databricks 帐户的后端服务。
- 计算平面:这是处理数据和驻留在 Azure 订阅中的外部层。
群集 是 Azure Databricks 中的核心计算引擎。 它们提供运行数据工程、数据科学和分析任务所需的处理能力。 每个群集都包含一个 驱动程序节点,该节点协调执行,以及一个或多个处理分布式计算的工作 器节点。 可以使用固定资源手动创建群集,也可以设置为 自动缩放,从而允许 Databricks 根据工作负荷需求添加或删除工作器节点。 这种灵活性可确保高效的资源使用和成本控制。
Azure Databricks 计算提供了一组适用于不同工作负荷类型的广泛的计算选项:
- 无服务器计算:完全托管的按需计算,可自动纵向扩展或缩减以满足工作负荷需求。 非常适合需要快速启动时间、最小管理开销和弹性缩放的团队。
- 经典计算:用户预配和配置的群集,可完全控制计算设置,例如 VM 大小、库和运行时版本。 最适合需要自定义或一致性能的专用工作负荷。
- SQL 仓库:针对基于 SQL 的分析和 BI 查询优化的计算资源。 可以根据治理和性能要求将 SQL 仓库预配为 无服务器 (弹性、托管)或 经典 (用户配置)。
这样,就可以根据特定需求定制计算,从笔记本中的探索分析,到大规模 ETL 管道,到高性能仪表板和报告。
Databricks Runtime
Databricks Runtime 是 Apache Spark 的一组自定义构建版本,其包括性能改进和额外的库。 通过这些运行时,可以更轻松地处理 机器学习、 图形处理和 基因组学等任务,同时仍支持常规数据处理和分析。
Databricks 提供多个运行时版本,包括 长期支持 (LTS) 版本。 每个版本都指定基础 Apache Spark 版本、其发布日期以及何时支持结束。 随着时间的推移,较旧的运行时版本遵循生命周期:
- 旧版 – 可用但不再推荐使用。
- 已弃用 – 在将来的版本中标记为删除。
- 支持终止(EoS) - 不再提供补丁或修复程序。
- 生命周期结束 (EoL) - 已停用,不再可用。
如果为正在使用的运行时版本发布了维护更新,可以通过 重启群集来应用更新。
Lakeflow 作业
Lakeflow 作业 在 Azure Databricks 中提供工作流自动化和编排,从而能够可靠地计划、协调和运行数据处理任务。 无需手动运行代码,而是可以使用作业来自动执行重复性或生产级工作负载,例如 ETL 管道、机器学习训练或仪表板刷新。
本质上,Databricks 中的作业是一个容器,用于包含一个或多个 任务。 任务定义要完成的工作,例如,运行笔记本、执行 Spark 作业、调用外部代码...
可以通过不同的方式触发作业:
- 按计划(例如,每晚午夜)。
- 响应事件。
- 根据需要手动。
由于作业可重复和管理,因此作业对于 生产工作负荷至关重要。 它们确保数据管道运行一致、ML 模型以受控方式训练和部署,下游系统接收更新、准确的数据。
Delta Lake
Delta Lake 是一个开放源代码存储框架,通过添加云对象存储(如 Azure Data Lake Storage)上的事务功能来提高数据湖的可靠性与可伸缩性。 传统数据湖可能会遇到数据不一致、写入不完整或管理并发访问困难等问题。 Delta Lake 通过提供支持来解决这些问题:
- 用于可靠读取和写入的 ACID 事务(原子性、一致性、隔离性、持久性)。
- 可缩放的元数据处理 ,使表可以增长到数十亿个文件,而不会丢失性能。
- 数据版本控制与回滚,用于进行时间旅行查询并恢复到以往的状态
- 统一的批处理和流式处理,因此同一个表可以处理实时引入和历史批处理加载。
除此之外, Delta 表 提供了一个熟悉的表抽象,使使用 SQL 查询 或 数据帧 API 更轻松地处理结构化数据。 增量表是 Azure Databricks 中的默认表格式,确保默认使用事务性保证存储新数据。
Databricks SQL
Databricks SQL 将 数据仓库功能 引入 Databricks Lakehouse,使分析师和企业用户能够直接查询和可视化以开放格式存储在 Data Lake 中的数据。 它支持 ANSI SQL,因此任何熟悉 SQL 的人都可以运行查询、生成报表和创建仪表板,而无需学习新的语言或工具。
Databricks SQL 仅在 Azure Databricks 的高级层 中可用。 其中包括:
- 用于编写和运行查询的 SQL 编辑器 。
- 用于共享见解的仪表板和可视化工具。
- 与外部 BI 和分析工具集成。
SQL 仓库
所有 Databricks SQL 查询在 SQL 仓库 (以前称为 SQL 终结点)上运行,这些查询都是与存储分离的可缩放计算资源。 根据性能、成本和管理需求,可以使用不同的仓库类型:
无服务器 SQL 仓库
- 即启即用且弹性的计算,提供快速启动和自动缩放功能。
- 由于 Databricks 处理容量、修补和优化,因此管理开销较低。
- 通过自动缩放和避免空闲资源成本来降低成本。
Pro SQL Warehouses
- 更可自定义,但启动速度较慢(≈4分钟)。
- 与无服务器相比,自动缩放的响应速度较慢。
- 当需要一致且可预测的工作负荷时非常有用。
经典 SQL 仓库
- 计算资源在 自己的 Azure 订阅中运行,而不是在 Databricks 中运行。
- 不如无服务器灵活,但可能更适合特定治理或成本管理要求。
MLflow
MLflow 是一个开源平台,旨在管理 端到端机器学习(ML)生命周期。 它可帮助数据科学家和 ML 工程师跟踪试验、管理模型以及简化将模型从开发转移到生产的过程。 MLflow 还支持生成式 AI 工作流,并包括用于评估和改进 AI 代理的工具。