我在 Google Data Proc 上运行一个 6 节点的 spark 集群,在启动 spark 并执行基本操作的几分钟内,我收到以下错误
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fbe00000, 24641536, 0) failed; error='Cannot allocate memory' (errno=12)
There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 24641536 bytes for committing reserved memory.
An error report file with more information is saved as:/home/chris/hs_err_pid21047.log
我运行的仅有的两个命令如下
data = (
spark.read.format("text")
.option("header", "true")
.option("inferSchema", "true")
.load("gs://bucketpath/csv")
)
data.show()
该 csv 文件存储在 google 存储桶中,文件大小为 170 MB
以下是我的集群配置的详细信息
Name cluster
Region australia-southeast1
Zone australia-southeast1-b
Master node
Machine type n1-highcpu-4 (4 vCPU, 3.60 GB memory)
Primary disk type pd-standard
Primary disk size 50 GB
Worker nodes 5
Machine type n1-highcpu-4 (4 vCPU, 3.60 GB memory)
Primary disk type pd-standard
Primary disk size 15 GB
Local SSDs 0
Preemptible worker nodes 0
Cloud Storage staging bucket dataproc-78f5e64b-a26d-4fe4-bcf9-e1b894db9d8f-au-southeast1
Subnetwork default
Network tags None
Internal IP only No
Image version 1.3.14-deb8
这看起来像是内存问题,因此我尝试将机器类型更改为 n1-highcpu-8(8 vCPU,7.2 GB 内存),但我无法启动实例,因为我收到以下错误
Quota 'CPUS' exceeded. Limit: 24.0 in region australia-southeast1.
所以我不确定应该怎么做才能解决这个问题。我对 Google Cloud Platform 还很陌生,如果能帮助我解决这个问题,我将不胜感激。这是一个非常关键的项目
答案1
根据错误,您已达到 GCP 区域 australia-southeast1 的 CPU 配额限制。您至少有两个选择 -
请求配额增加用于计算引擎 CPU。访问 IAM 中的配额页面,在位置下选择您的区域,选择“计算引擎 API CPU”,然后单击“编辑配额”以请求增加配额。
直接链接(请更改“YOUR-GCP-PROJECT-ID”) -https://console.cloud.google.com/iam-admin/quotas?project=YOUR-GCP-PROJECT-ID&location=australia-southeast1
创建具有较少工作节点或较小 vCPU 机器类型的 dataproc 集群。如果提供的标准机器类型不符合您的要求,请尝试自定义机器类型。
您还可以使用 gcloud cli 工具检查 CPU 配额限制 -
$ gcloud compute regions list --filter='name=australia-southeast1' NAME CPUS DISKS_GB ADDRESSES RESERVED_ADDRESSES STATUS TURNDOWN_DATE australia-southeast1 0/8 0/2048 0/8 0/1 UP