Google Cloud Run Jobs任务并行不生效?求助排查原因
Cloud Run Jobs任务并行相关问题
为测试Cloud Run Jobs的任务并行功能,我创建了包含10个任务的Job,给每个容器分配8GB内存与8CPU,任务并行策略设置为「尽可能多地并发运行任务」,但运行时10个任务却是串行执行,而非并行。
我用一个1.6GB的CSV文件做测试,通过以下代码在Cloud Run实例上处理数据并加载至BigQuery:
import numpy as np import os import pandas as pd project_id = os.environ.get("PROJECT_ID") task_index = int(os.environ.get("CLOUD_RUN_TASK_INDEX")) nb_task = int(os.environ.get("CLOUD_RUN_TASK_COUNT")) print(nb_task) df_original=pd.read_csv("gs://dataproc-input-321/train.csv") df_len=len(df_original) print(df_len) batch_size=df_len//nb_task print("--------------batch--------------") print(batch_size) print(f"batch size, {batch_size}!") start_row_no = int(batch_size * task_index) end_row_no = int(batch_size * (task_index + 1) - 1) print(f"For task_id {task_index} , start is {start_row_no} and end is {end_row_no}") df_sliced=df_original.iloc[start_row_no:end_row_no] del(df_original) df_sliced["type"]=np.where(df_sliced["PRODUCT_LENGTH"]%2==0,"even","odd") df_even=df_sliced[df_sliced["type"] == 'even'] df_odd=df_sliced[df_sliced["type"] == 'odd'] df_even.to_gbq('output_dataset.amazon_even', project_id=project_id, if_exists='append' ) df_odd.to_gbq('output_dataset.amazon_odd', project_id=project_id, if_exists='append' )
我认为8GB内存与8CPU足以处理该文件,但任务始终无法并行执行。另外,尝试手动设置「限制并发任务数」为大于0的值时,会报错:Must be no higher than 0 for selected CPU and memory on the region,更换区域后问题依旧。同时我注意到,当给实例分配32GB内存时,Cloud Run提示必须至少配置4CPU,想了解这一规则的具体内容。
已尝试的操作
- 手动设置任务并行数,但无法输入大于0的值
- 更换区域,仍无法设置并行数
求助问题
- 为何无法手动设置并行数?
- 选择「尽可能多地并发运行任务」时,为何任务串行执行?
- Cloud Run的内存与CPU配比规则是什么?
内容的提问来源于stack exchange,提问作者amarjeet kushwaha
相关产品推荐
相关产品推荐

