本页介绍了如何解决适用于 Apache Flink 的 BigQuery 引擎部署和作业的问题。
部署错误
以下部分介绍了您在使用部署时可能会遇到的常见错误。
部署创建需要很长时间
在项目或子网中创建首次部署时,部署创建过程需要 30 分钟或更长时间。
首次在项目或子网中创建部署或按需作业时,创建过程可能需要 30 分钟或更长时间才能完成。之后,创建新的部署或作业所需的时间会缩短。
按需作业没有部署
创建按需作业后,部署列表中不会显示相应的部署。
此行为符合预期,因为按需作业与部署无关。
网络资源... 已被使用
删除部署后,尝试删除 VPC 网络时会出现以下错误:
ERROR: (gcloud.compute.networks.delete) Could not fetch resource:
- The network resource 'projects/PROJECT_ID/global/networks/NETWORK' is already being used by 'projects/PROJECT_ID/global/firewalls/ID'
尝试删除子网时,会发生以下错误:
ERROR: (gcloud.compute.networks.subnets.delete) Could not fetch resource:
- The subnetwork resource 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET' is already being used by 'projects/PROJECT_ID/regions/REGION/networkAttachments/NETWORK_ATTACHMENT'
此错误是一个已知问题。如果可能,请删除您的项目。删除项目时,也会删除相应项目中的所有资源,包括网络和子网。
作业错误
以下部分介绍了您在运行作业时可能会遇到的常见错误。
槽用量总和 ... 超出了部署的上限
尝试创建作业时发生以下错误:
INVALID_ARGUMENT: The request was invalid: failed to create a job, the combined slots usage from your autotuning configuration and existing jobs (NUMBER total) exceeds the deployment's maximum limit of NUMBER slots. To fix this, you can either adjust the parallelism (Fixed policy) or max_parallelism (Throughput Based policy) values in your autotuning settings to use fewer slots, consider reducing the slot usage of your existing jobs, or raise the limits.max_slots value in your deployment configuration to accommodate a higher number of slots.
之所以会出现此问题,是因为作业请求的任务槽数超出了部署中可用的任务槽数。
如需解决此问题,请执行以下任意一项更改:
将
max_parallelism
值设置为较小的数字,以便在作业中使用更少的任务槽。增加部署中可用的任务槽数量。 如需了解详情,请参阅更新部署。
作业重启,状态为“正在重启”
如果作业遇到错误并从检查点重启,则其状态为 Restarting。如果错误无法恢复,作业可能会不断重启。如需进一步排查问题,请查看日志并查找原因。
如果在您解决问题后作业仍在重启,您可能需要删除重启的作业并创建新作业。如需了解详情,请参阅创建和管理作业。
作业完成,状态为“正在初始化”
您运行批量作业后,作业会完成,但Google Cloud 控制台中的作业状态为“正在初始化”。
此行为是一个已知问题。如需查看正确的作业状态,请在控制台中点击作业名称以打开作业详情页面。打开作业详情页面会刷新作业状态。
作业图 URI 为空
尝试创建作业时发生以下错误:
failed to create a job, job graph uri is empty
此错误通常由其他错误触发,例如参数名称无效或作业 JAR 文件中存在问题。如需进一步排查问题,请查看 gcloud CLI 输出,看看是否在此错误之前出现了其他错误。
作业 JAR 文件不存在
尝试创建作业时发生以下错误:
job jar doesn't exist
如需解决此问题,请在作业创建命令中使用作业 JAR 文件的绝对路径,而不是相对路径。
操作... 在 1800 秒内未完成
尝试创建按需作业时,会出现以下错误:
ERROR: (gcloud.alpha.managed-flink.jobs.create) Operation CREATE_OPERATION has not finished in 1800 seconds. The operations may still be underway remotely and may still succeed; use gcloud list and describe commands or https://console.developers.google.com/ to check resource state.
当异步操作进行轮询时,会发生此错误。此错误并不意味着作业创建操作失败。作业创建操作完成后,您可以在Google Cloud 控制台中查看该作业。如需了解详情,请参阅列出作业。
权限错误
以下部分包含常见的权限错误。
电子邮件地址和网域必须与某个有效的 Google 账号相关联
尝试在控制台中向托管的 Flink 默认工作负载身份授予角色时,会发生以下错误:
Email addresses and domains must be associated with an active Google Account, Google Workspace account, or Cloud Identity account.
如果尚未预配托管式 Flink 默认工作负载身份,就会发生此错误。
如需解决此问题,请使用 gcloud CLI 创建作业或部署。首次尝试创建作业或部署时会发生错误,但系统会创建托管式 Flink 默认工作负载身份。创建托管式 Flink 默认工作负载身份后,您可以通过授予角色来向其授予权限。
如需了解详情,请参阅适用于 Apache Flink 的 BigQuery 引擎安全和权限。
未能配置节点服务账号 IAM
您首次尝试使用适用于 Apache Flink 的 BigQuery 引擎时,会出现以下错误:
Failed to configure node service account IAM: failed to set iam policy bindings for resource serviceAccount:gmf-node-sa@PROJECT_ID.iam.gserviceaccount.com in PROJECT_ID with error generic::invalid_argument: com.google.apps.framework.request.StatusException: <eye3 title='INVALID_ARGUMENT'/> generic::INVALID_ARGUMENT: <eye3 title='/Projects.SetIamPolicy, INVALID_ARGUMENT'/> APPLICATION_ERROR;google.cloudresourcemanager.v1/Projects.SetIamPolicy;com.google.apps.framework.request.StatusException: <eye3 title='INVALID_ARGUMENT'/> generic::INVALID_ARGUMENT: Exception calling IAM: Service account gmf-node-sa@PROJECT_ID.iam.gserviceaccount.com does not exist.
首次使用适用于 Apache Flink 的 BigQuery Engine 或首次尝试在项目中创建部署时,就会出现此错误,因为需要创建“托管的 Flink 默认工作负载身份”。看到此错误后,系统会创建托管式 Flink 默认工作负载身份,您可以向其授予权限。
如需了解详情,请参阅托管式 Flink 默认工作负载身份。
FileNotFoundException... application_default_credentials.json
当您尝试使用 gcloud CLI 创建作业时,会发生以下错误:
java.lang.RuntimeException: java.io.FileNotFoundException: FILEPATH/application_default_credentials.json (No such file or directory)
如果未在本地环境中设置应用默认凭据 (ADC),就会出现此错误。
如需了解相关说明,请参阅“对适用于 Apache Flink 的 BigQuery Engine 进行身份验证”中的客户端库或第三方工具部分。您可能还需要设置环境变量。如需了解详情,请参阅设置应用默认凭据。
托管式 Flink 默认工作负载身份无法访问...
尝试运行作业时,作业会失败并显示类似于以下内容的错误:
gmf-PROJECT_NUMBER-default@gcp-sa-managedflink-wi.iam.gserviceaccount.com can't access...
如果项目的托管式 Flink 默认 Workload Identity 无权访问作业使用的源和接收器,则会出现此错误。
如需解决此问题,请向托管式 Flink 默认工作负载身份授予必要的角色或所需权限。
如果您使用 gcloud CLI 将本地文件(例如 JAR 文件或 SQL 文件)上传到 Cloud Storage,则运行作业的用户账号需要拥有 storage.objects.create
权限才能写入 Cloud Storage 存储桶。
如需了解详情,请参阅“适用于 Apache Flink 的 BigQuery Engine 安全性和权限”中的访问 Google Cloud 资源。