本文档介绍了如何设置跨云连接,以便直接在 Google Cloud中查询 AWS Glue 目录中的数据。作为无边界 Lakehouse 的一部分,此功能通过将外部数据源与现有 Google Cloud环境集成,统一了数据分析。
准备工作
- 查看湖仓一体概览,了解湖仓一体如何管理数据访问权限。
- 请参阅有关访问跨云数据的文章,了解其运作方式。
- 查看支持的目录,验证支持的配置。
- 可选:如果您计划通过 Google Cloud VPC 与远程云提供商的 VPC(例如 AWS)之间的专用互连来路由查询,请确保您在远程提供商处拥有有效账号,预配专用跨云互连或合作伙伴跨云互连,与 Cloud Router 建立 BGP 会话,并验证您在两个云环境中都拥有所需的 IAM 权限。
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
所需的角色
如需获得设置 Lakehouse 以实现跨云数据访问所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
管理 Lakehouse 目录:
BigLake Admin (
roles/biglake.admin) -
通过专用互联路由流量(用户):
Compute Network Admin (
roles/compute.networkAdmin) -
通过专用互连路由流量(目录服务账号):
- Service Directory Viewer (
roles/servicedirectory.viewer) - Service Directory PSC Authorized Service (
roles/servicedirectory.pscAuthorizedService)
- Service Directory Viewer (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
支持的目录详情
本指南介绍了如何在 AWS 上使用 AWS Glue 目录设置无边界数据湖仓。如需详细了解表格格式要求和支持的配置,请参阅支持的目录。
限制和注意事项
本部分列出了访问跨云数据的限制和注意事项。
- 支持跨云互连的云提供商: 以下远程云提供商支持使用专用互联来连接无边界 Lakehouse:Amazon Web Services (AWS)。您可以使用专用 Cross-Cloud Interconnect 或合作伙伴 Cross-Cloud Interconnect。
- 只读:Lakehouse 中的联合目录是远程目录的只读视图。不支持资源操作(例如创建、更新或删除资源),必须直接在远程目录中执行。
- 网络路由:如果未配置专用互连(例如专用 CCI 或合作伙伴 CCI),查询将通过公共互联网进行路由。这可能会导致远程云提供商收取更高的出站费用,并降低性能的可预测性。
- 数据新鲜度:联合目录的
--refresh-interval标志用于确定元数据的同步频率。该值必须为0s(已停用)或至少为300s(5 分钟)。目录的后台元数据刷新时间可能会随着命名空间和表资源数量的增加而延长。如果上一次刷新超时,系统会跳过当前刷新,但会在下一个间隔安排下一次刷新。 - Lakehouse 缓存:系统会自动为所有跨云查询启用 Lakehouse 缓存,以便通过在 Google Cloud中本地存储数据块来节省出站流量费用。缓存不支持客户管理的加密密钥 (CMEK);缓存的数据使用 Google-owned and Google-managed encryption keys进行加密。如果查询中的任何表强制执行
constraints/gcp.restrictNonCmekServices组织政策限制,则系统会自动为该查询停用缓存。 如需了解详情,请参阅智能缓存。 - 数据驻留和合规性:在 Google Cloud 区域中创建联邦目录或连接会将缓存的静态数据存储在该目标区域中。如果您的远程云数据位于其他司法管辖区,请确保跨区域缓存符合您组织的数据驻留和法规遵从性要求。
常规工作流程
如需访问跨云数据,请按照以下常规步骤操作:
- 设置跨云互连(可选):在 Google Cloud VPC 与远程云提供商之间配置专用连接。
- 设置联合:通过创建具有占位符信任政策的 IAM 角色来配置身份验证,该角色与您的远程提供方相关联。然后,在 Lakehouse 中创建联合目录并更新信任政策。
- 验证连接:验证 Lakehouse 是否可以成功连接到您的远程目录。
- 查询数据:使用 BigQuery 或 Managed Service for Apache Spark 对联合数据运行查询。系统会自动为查询启用 Lakehouse 缓存,以节省出站费用。如需了解详情,请参阅查询远程数据。
- 配置权限:使用 IAM 管理哪些人可以查看和查询联合数据。
设置跨云互连(可选)
默认情况下,对远程目录的查询通过公共互联网传输。为了帮助增强安全性、合规性,提供可预测的性能并降低数据传输费用,请使用专用互连。这样一来,您的 Google CloudVirtual Private Cloud (VPC) 与远程云提供商的网络(例如 AWS)之间便会建立专用网络连接。
您可以在 Google Cloud VPC 与远程云提供商的 VPC(例如 AWS)之间预配和配置以下任一专用互连选项:
- 专用 Cross-Cloud Interconnect:专用物理连接。
- 合作伙伴 Cross-Cloud Interconnect:通过受支持的服务提供商建立的连接。
在 Google Cloud 中的 Cloud Router 路由器与远程云提供商的 VPC 之间建立 BGP 会话,以确保路由交换。
如需启用私密查询,您必须通过专用互联配置从 Lakehouse 到远程存储桶(例如 AWS Amazon S3 存储桶)的路径。您可以通过以下两种架构流程来配置此路由:
- 内部区域级代理网络负载均衡器路由:此流程使用Google Cloud 内部区域级代理网络负载均衡器在指向多个 AWS 弹性网络接口 (ENI) 的混合连接网络端点群组 (NEG) 之间分配请求。此流程对于负载均衡、可伸缩性和高可用性至关重要。对于合作伙伴 CCI,这是必需的;对于专用 CCI,建议使用,以实现负载均衡、可伸缩性和高可用性。
- 直接端点路由:此流程将 Service Directory 直接连接到单个 AWS 接口 VPC 端点 IP 地址。此流程仅适用于专用 CCI,不支持合作伙伴 CCI。
选择符合您的架构要求的配置流程:
内部区域级代理网络负载均衡器
如需配置内部区域代理网络负载均衡器,以在多个 AWS ENI 之间分配请求,从而实现高可用性和负载均衡,请按以下步骤操作:
配置 AWS 网络
首先,创建 Amazon S3 VPC 接口端点 (AWS PrivateLink):
- 在 AWS VPC 控制台中,为 Amazon S3 创建接口端点。
- 对于服务名称,请指定
com.amazonaws.AWS_REGION.s3。 - 选择通过 Direct Connect 连接到 Google Cloud VPC 的 VPC 和子网。
- 将安全组附加到端点以控制入站访问。
- 此操作会在每个所选子网中预配弹性网络接口 (ENI)。记下这些 ENI 的专用 IP 地址。
接下来,配置安全组:
- 确保附加到 Amazon S3 端点 ENI 的安全组允许来自 Google Cloud VPC 的端口
443上的入站 TCP 流量。这必须包含Google Cloud 代理专用子网的 CIDR 范围,以允许健康检查和转发的流量。
配置 Google Cloud 网络
为简化设置,请运行以下命令来配置内部负载均衡器。如需了解高级配置或更多详情,请参阅为混合端点设置内部区域级代理网络负载均衡器。
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=VPC_NETWORK \ --range=PROXY_SUBNET_RANGE
替换以下内容:
PROXY_SUBNET_NAME:代理专用子网的名称。PROXY_SUBNET_RANGE:VPC 网络中未使用的 CIDR 范围(例如10.129.0.0/23)。
创建区域级健康检查:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --region=REGION \ --port=443
替换以下内容:
HEALTH_CHECK_NAME:健康检查的名称。REGION: Google Cloud 区域(例如us-east4)。
创建混合连接网络端点组 (NEG) 并添加端点:
为每个可用区创建混合 NEG (
NON_GCP_PRIVATE_IP_PORT):gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ZONE \ --network=VPC_NETWORK
将 AWS ENI 的专用 IP 地址添加到相应的混合 NEG:
gcloud compute network-endpoint-groups update NEG_NAME \ --zone=ZONE \ --add-endpoint="ip=AWS_S3_IP,port=443"
替换以下内容:
NEG_NAME:混合 NEG 的名称。ZONE: Google Cloud 可用区(例如us-east4-a)。此可用区必须位于跨云互连 VLAN 连接的区域内。VPC_NETWORK:您的 VPC 网络的名称。AWS_S3_IP:相应可用区中 AWS Amazon S3 VPC 端点 (ENI) 的私有 IP 地址。
如果您的 AWS ENI 分布在多个可用区中,请重复执行这些命令,以创建 NEG 并为其他可用区添加端点。
创建和配置后端服务:
创建具有内部托管负载均衡功能的区域后端服务:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION
将混合 NEG 添加到后端服务:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-zone=ZONE \ --balancing-mode=CONNECTION \ --max-connections=