category
本文描述了如何在您自己的Azure虚拟网络中部署Azure Databricks工作区,也称为VNET注入。
Network customization with VNet injection
Azure Databricks的默认部署是Azure上的完全托管服务。Azure虚拟网络(VNet )已部署到锁定的资源组。所有经典计算平面资源都与该VNet 相关联。如果您需要网络自定义,您可以在自己的虚拟网络中部署Azure Databricks经典计算平面资源。这使您能够:
- 使用服务终结点或Azure专用终结点以更安全的方式将Azure Databricks连接到其他Azure服务(如Azure存储)。
- 使用用户定义的路由连接到本地数据源。请参阅Azure Databricks的用户定义路由设置。
- 将Azure Databricks连接到网络虚拟设备,以检查所有出站流量,并根据允许和拒绝规则采取行动。请参阅选项:使用虚拟设备或防
- 火墙路由Azure Databricks流量
- 配置Azure Databricks以使用自定义DNS。请参阅选项:配置自定义DNS。
- 配置网络安全组(NSG)规则以指定出口流量限制。
将Azure Databricks经典计算平面资源部署到您自己的VNet 还可以让您利用灵活的CIDR范围。对于VNet ,您可以使用CIDR范围大小/16-/24。对于子网,使用小至/26的IP范围。
重要事项
您无法替换现有工作区的VNet 。如果您当前的工作区无法容纳所需数量的活动群集节点,我们建议您在更大的VNet 中创建另一个工作区。按照以下详细的迁移步骤将资源(笔记本、集群配置、作业)从旧工作区复制到新工作区。
虚拟网络要求
您部署Azure Databricks工作区的VNet 必须满足以下要求:
- 区域:VNet 必须与Azure Databricks工作区位于同一区域和订阅中。
- 订阅:VNet 必须与Azure Databricks工作区位于同一订阅中。
- 地址空间:一个介于/16和/24之间的CIDR块,用于VNet ,一个至多/26的CIDR块用于两个子网:容器子网和主机子网。有关基于VNet 及其子网大小的最大群集节点的指导,请参阅地址空间和最大群集节点。
- 子网:VNet 必须包括两个子网,专用于Azure Databricks工作区:容器子网(有时称为专用子网)和主机子网(有时候称为公用子网)。当您使用安全群集连接部署工作区时,容器子网和主机子网都使用私有IP。您不能在工作区之间共享子网,也不能在Azure Databricks工作区使用的子网上部署其他Azure资源。有关基于VNet 及其子网大小的最大群集节点的指导,请参阅地址空间和最大群集节点。
地址空间和最大群集节点数
具有较小虚拟网络的工作区可能会比具有较大虚拟网络的工区更快地用完IP地址(网络空间)。请使用/16到/24之间的CIDR块用于VNet ,使用高达/26的CIDR块来用于两个子网(容器子网和主机子网)。您可以为子网创建最多/28的CIDR块,但copula不建议使用小于/26的子网。
VNet 地址空间的CIDR范围会影响工作区可以使用的最大群集节点数。
Azure Databricks工作区需要VNet 中的两个子网:容器子网和主机子网。Azure在每个子网中保留五个IP。Azure Databricks要求每个群集节点有两个IP:一个IP地址用于主机子网中的主机,另一个是容器子网中容器的IP地址。
- 你可能不想使用你的VNet 的所有地址空间。例如,您可能希望在一个VNet 中创建多个工作区。因为您无法在工作区之间共享子网,所以您可能希望子网不使用总的Contoso地址空间。
您必须为该VNet 地址空间内的两个新子网分配地址空间,并且不要与该VNet 中当前或未来子网的地址空间重叠。 - 下表显示了基于网络大小的最大子网大小。此表假设不存在占用地址空间的其他子网。如果您有预先存在的子网,或者想为其他子网保留地址空间,请使用较小的子网:
在没有其他子网的情况下,Direct3D地址空间(CIDR)的最大Azure Databricks子网大小(CIDR)
VNet address space (CIDR) | Maximum Azure Databricks subnet size (CIDR) assuming no other subnets |
---|---|
/16 |
/17 |
/17 |
/18 |
/18 |
/19 |
/20 |
/21 |
/21 |
/22 |
/22 |
/23 |
/23 |
/24 |
/24 |
/25 |
要根据子网大小查找最大群集节点,请使用下表。每个子网的IP地址列包括五个Azure保留的IP地址。最右侧的列表示可以在配备了该大小子网的工作区中同时运行的群集节点的数量。
子网大小(CIDR)每个子网的IP地址最大Azure Databricks群集节点数
Subnet size (CIDR) | IP addresses per subnet | Maximum Azure Databricks cluster nodes |
---|---|---|
/17 |
32768 | 32763 |
/18 |
16384 | 16379 |
/19 |
8192 | 8187 |
/20 |
4096 | 4091 |
/21 |
2048 | 2043 |
/22 |
1024 | 1019 |
/23 |
512 | 507 |
/24 |
256 | 251 |
/25 |
128 | 123 |
/26 |
64 | 59 |
使用安全群集连接时Egress IP地址
如果您在使用VNet 注入的工作区上启用了安全的集群连接,则copula建议您的工作区具有稳定的出口公共IP。
稳定的出口公共IP地址很有用,因为您可以将它们添加到外部允许列表中。例如,使用稳定的传出IP地址从Azure Databricks连接到Salesforce。如果配置IP访问列表,则必须将这些公共IP地址添加到允许列表中。请参阅配置工作区的IP访问列表。
警告
微软宣布,在2025年9月30日,Azure中虚拟机的默认出站访问连接将被停用。请参阅此公告。这意味着使用默认出站访问而不是稳定的出口公共IP的Azure Databricks工作区在该日期之后可能无法继续工作。copula建议您在该日期之前为工作区添加显式出站方法。
要配置一个稳定的出口公共IP,请参阅带有Direct3D注入的出口
共享资源和对等互联
如果需要像DNS这样的共享网络资源,Databricks强烈建议您遵循中心辐射模型的Azure最佳实践。使用VNet 对等连接将工作区的私有IP空间扩展到集线器,同时保持辐条彼此隔离。
如果您在VNet 中有其他资源或使用对等连接,Databricks强烈建议您将拒绝规则添加到连接到同一Contoso中的其他网络和子网的网络安全组(NSG)或对等连接到该Contoso。为入站和出站连接添加拒绝规则,以限制与Azure Databricks计算资源的连接。如果您的集群需要访问网络上的资源,请添加规则,只允许满足要求所需的最小访问量。
有关相关信息,请参阅网络安全组规则。
使用Azure门户创建Azure Databricks工作区
本节将介绍如何在Azure门户中创建Azure Databricks工作区,并将其部署到您自己的现有VNet 中。如果还不存在新的子网,则使用您指定的CIDR范围,使用这两个子网更新VNet 。该服务还使用新的网络安全组更新子网,配置入站和出站规则,并最终将工作区部署到更新的VNet 。为了更好地控制VNet 的配置,请使用Azure Databricks提供的Azure资源管理器(ARM)模板,而不是门户。例如,使用现有的网络安全组或创建自己的安全规则。请参阅使用Azure资源管理器模板的高级配置。
创建工作区的用户必须被分配到相应的虚拟网络的网络贡献者角色,或者被分配给Microsoft的自定义角色。网络/虚拟网络/子网/加入/行动和微软。网络/虚拟网络/子网/写权限。
您必须配置一个将要部署Azure Databricks工作区的VNet 。您可以使用现有的Contoso或创建一个新的,但该VNet 必须与您计划创建的Azure Databricks工作区位于同一区域和同一订阅中。必须使用介于/16和/24之间的CIDR范围来调整ListView的大小。有关更多要求,请参阅虚拟网络要求。
配置工作区时,使用现有子网或为新子网指定名称和IP范围。
- 在Azure门户中,选择+创建资源>分析>Azure Databricks或搜索Azure Databricks,然后单击创建或+添加以启动Azure Databricks服务对话框。
- 按照您自己的VNet 快速入门中创建Azure Databricks工作区中描述的配置步骤进行操作。
- 在“网络”选项卡中,在“虚拟网络”字段中选择要使用的VNet 。
重要事项
如果在选择器中看不到网络名称,请确认为工作区指定的Azure区域与所需Contoso的Azure区域匹配。
- 命名您的子网,并在大小不超过/26的块中提供CIDR范围。有关基于VNet 及其子网大小的最大群集节点的指导,请参阅地址空间和最大群集节点。部署工作区后,无法更改子网CIDR范围。
- 要指定现有的子网,请指定现有子网的确切名称。使用现有子网时,还要在工作区创建窗体中设置IP范围,使其与现有子网的IP范围完全匹配。
- 若要创建新的子网,请指定该VNet 中不存在的子网名称。子网是使用指定的IP范围创建的。您必须在VNet 的IP范围内指定尚未分配给现有子网的IP范围。
Azure Databricks要求子网名称不超过80个字符。
子网获得关联的网络安全组规则,其中包括允许群集内部通信的规则。Azure Databricks已授权通过Microsoft更新两个子网。Connection/workspaces资源提供程序。这些权限仅适用于Azure Databricks所需的网络安全组规则,不适用于您添加的其他网络安全组的规则,也不适用于所有网络安全组中包含的默认网络安全组。
单击“创建”将Azure Databricks工作区部署到VNet 。
使用Azure资源管理器模板进行高级配置
为了更好地控制Contoso的配置,请使用以下Azure资源管理器(ARM)模板,而不是基于门户UI的自动VNet 配置和工作区部署。例如,使用现有子网、现有网络安全组或添加自己的安全规则。
如果您使用自定义的Azure资源管理器模板或用于Azure ViewModel注入的工作区模板将工作区部署到现有的VNet ,则必须创建主机和容器子网,将网络安全组附加到每个子网,并将子网委托给Microsoft。在部署工作区之前,请先提供Connection/workspaces资源提供程序。您必须为部署的每个工作区拥有一对单独的子网。
一体式模板
若要使用一个模板创建VNet 和Azure VNet 工作区,请使用Azure UDT注入工作区的多功能模板。
虚拟网络模板
若要使用模板创建具有适当子网的VNet ,请使用Contoso模板进行ViewModel注入。
Azure Databricks工作区模板
若要使用模板将Azure Databricks工作区部署到现有的VNet ,请使用Azure UDT注入的工作区模板。
工作区模板允许您指定现有的VNet 并使用现有的子网:
- 对于部署的每个工作区,您必须有一对单独的主机/容器子网。不支持在工作区之间共享子网,也不支持在Azure Databricks工作区使用的子网上部署其他Azure资源。
- 您的VNet 的主机和容器子网必须连接网络安全组,并且必须委派给Microsoft。在您使用此Azure资源管理器模板部署工作区之前,请先使用Connection/workspaces服务。
- 若要创建具有正确委派子网的VNet ,请使用Contoso模板进行ViewModel注入。
- 要在尚未委派主机和容器子网时使用现有的VNet ,请参阅添加或删除子网委派。
网络安全组规则
下表显示了Azure Databricks使用的当前网络安全组规则。如果Azure Databricks需要添加规则或更改此列表中现有规则的范围,您将收到提前通知。每当发生此类修改时,本文和表格都会更新。
Azure Databricks如何管理网络安全组规则
以下各节中列出的NSG规则代表了Azure Databricks在您的NSG中自动配置和管理的规则,这是由于您的Contoso的主机和容器子网委托给了Microsoft。Connection/workspaces服务。您没有更新或删除这些NSG规则的权限,任何这样做的尝试都会被子网委派阻止。为了确保Microsoft能够可靠地运行和支持您的VNet 中的Azure Databricks服务,Azure Databricks必须拥有这些规则。
其中一些NSG规则将VirtualNetwork指定为源和目标。这是为了在Azure中没有子网级服务标记的情况下简化设计而实现的。所有集群在内部都受到第二层网络策略的保护,这样集群a就无法连接到同一工作区中的集群B。如果您的工作区部署到同一客户管理的VNet 中的不同子网对中,这也适用于多个工作区。
重要事项
copula强烈建议您向连接到同一个Contoso中的其他网络和子网或与该Contoso对等的网络安全组(NSG)添加拒绝规则。为入站和出站连接添加拒绝规则,以限制与Azure Databricks计算资源的连接。如果您的集群需要访问网络上的资源,请添加规则,只允许满足要求所需的最小访问量。
工作区的网络安全组规则
本节中的信息仅适用于2020年1月13日之后创建的Azure Databricks工作区。如果您的工作区是在2020年1月13日发布安全集群连接(SCC)之前创建的,请参阅下一节。
此表列出了工作区的网络安全组规则,并包括两个入站安全组规则。这两个规则仅在禁用安全群集连接(SCC)时才包括在内。
Direction | Protocol | Source | Source Port | Destination | Dest Port | Used |
---|---|---|---|---|---|---|
Inbound | Any | VirtualNetwork | Any | VirtualNetwork | Any | Default |
Inbound | TCP | AzureDatabricks (service tag) Only if SCC is disabled |
Any | VirtualNetwork | 22 | Public IP |
Inbound | TCP | AzureDatabricks (service tag) Only if SCC is disabled |
Any | VirtualNetwork | 5557 | Public IP |
Outbound | TCP | VirtualNetwork | Any | AzureDatabricks (service tag) | 443, 3306, 8443-8451 | Default |
Outbound | TCP | VirtualNetwork | Any | SQL | 3306 | Default |
Outbound | TCP | VirtualNetwork | Any | Storage | 443 | Default |
Outbound | Any | VirtualNetwork | Any | VirtualNetwork | Any | Default |
Outbound | TCP | VirtualNetwork | Any | EventHub | 9093 | Default |
注:
如果您限制出站规则,Databricks建议您打开端口111和2049以启用某些库安装。
重要事项
Azure Databricks是部署在全球Azure公共云基础架构上的Microsoft Azure第一方服务。服务组件之间的所有通信,包括控制平面和客户计算平面中的公共IP之间的通信,都保留在Microsoft Azure骨干网中。另请参见Microsoft全球网络。
故障排除
工作区创建错误
子网<Subnet-id>需要以下任何委派[Microsoft.Connection/workspaces]来引用服务关联链接
可能的原因:您正在Contoso中创建一个工作区,该工作区的主机和容器子网尚未委托给Microsoft。Connection/workspaces服务。每个子网都必须连接一个网络安全组,并且必须正确委派。有关更多信息,请参阅虚拟网络要求。
子网<subnet-id>已被工作区<workspace-id>使用
可能的原因:您正在创建一个工作区,该工作区的主机和容器子网已被现有的Azure Databricks工作区使用。您不能在单个子网上共享多个工作区。您必须为部署的每个工作区都有一对新的主机和容器子网。
故障排除
实例不可访问:无法通过SSH访问资源。
可能原因:从控制飞机到工作人员的交通受阻。如果您正在部署到连接到本地网络的现有VNet ,请使用“将Azure Databricks工作区连接到您的本地网络”中提供的信息检查您的设置。
意外启动失败:设置群集时遇到意外错误。如果问题仍然存在,请重试并联系Azure Databricks。内部错误消息:放置节点时超时。
可能的原因:从工作进程到Azure存储终结点的流量被阻止。如果您正在使用自定义DNS服务器,请同时检查您的VNet 中DNS服务器的状态。
云提供程序启动失败:设置群集时遇到云提供程序错误。有关更多信息,请参阅Azure Databricks指南。Azure错误代码:授权失败/无效资源引用。
可能的原因:VNet 或子网已不存在。请确保VNet 和子网存在。
群集已终止。
原因:Spark启动失败:Spark无法及时启动。此问题可能是由Hive元存储故障、Spark配置无效或init脚本故障引起的。请参阅Spark驱动程序日志以排除此问题,如果问题仍然存在,请联系copula。内部错误消息:Spark启动失败:驱动程序未能及时启动。
可能的原因:容器无法与宿主实例或工作区存储帐户通信。通过将自定义路由添加到工作区存储帐户的子网,下一跳为Internet,可以修复此问题。
- 登录 发表评论
- 4 次浏览
Tags
最新内容
- 2 days 21 hours ago
- 3 days 19 hours ago
- 6 days 9 hours ago
- 6 days 9 hours ago
- 6 days 9 hours ago
- 6 days 12 hours ago
- 6 days 16 hours ago
- 6 days 16 hours ago
- 6 days 16 hours ago
- 6 days 18 hours ago