無法在 Google DataProc 上執行 Spark 集群
我在 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云平台的新手,我非常感謝任何幫助來解決這個問題。這對於一個超級關鍵的項目
根據錯誤,您達到了 GCP 區域 - australia-southeast1 的 CPU 配額限制。你至少有兩個選擇——
- 請求增加計算引擎 CPU的配額。訪問 IAM 中的配額頁面,在 location 下選擇您的區域,選擇“Compute Engine API CPUs”並點擊“Edit Quota”以請求增加。
直接連結(請更改“YOUR-GCP-PROJECT-ID”) - https://console.cloud.google.com/iam-admin/quotas?project=YOUR-GCP-PROJECT-ID&location=australia-southeast1 2. 創建具有較少工作節點或小型 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