為什麼 Amazon EMR 叢集中的核心節點磁碟空間不足?

2 分的閱讀內容
0

我在 Amazon EMR 叢集上執行 Apache Spark 任務,而核心節點的磁碟空間幾乎用完了。

解決方法

判斷哪些核心節點運作狀態不佳

至少附加一個 Amazon Elastic Block Store (Amazon EBS) 磁碟區的節點,如果磁碟使用率達到 90% 以上,就會視為運作狀態不佳。若要判斷哪些節點的磁碟使用率可能已達到 90%,請執行下列動作:

1.    檢查 Amazon CloudWatch 指標 MRUnhealthyNodes。此指標表示 EMR 叢集中運作狀態不佳的節點數目。

**注意事項:**您可以建立 CloudWatch 警示以監控 MRUnhealthyNodes 指標。

2.    連線至主節點,並存取位於 /emr/instance-controller/log/instance-controller.log 的執行個體控制器日誌。在執行個體控制器日誌中,搜尋 InstanceJointStatusMap 以識別哪些節點運作狀態不佳。

如需詳細資訊,請參閱如何解決 Amazon EMR 上 Spark 中的 ExecutorLostFailure「從屬遺失」錯誤?的**「高磁碟使用率」**

3.    登入核心節點,然後執行下列命令以判斷掛載是否具有高使用率:

df -h

移除不必要的本機和臨時 Spark 應用程式檔案

當您執行 Spark 任務時,Spark 應用程式會建立本機檔案,這些檔案會使用核心節點上剩餘的磁碟空間。例如,如果 df-h 命令顯示 /mnt 使用超過 90% 的磁碟空間,請檢查哪些目錄或檔案的使用率過高。

請在核心節點上執行下列命令,查看使用最多磁碟空間的前 10 個目錄:

cd /mnt
sudo du -hsx * | sort -rh | head -10

如果 /mnt/hdfs 目錄的使用率過高,請檢查 HDFS 使用情況並移除任何不必要的檔案,例如日誌檔。縮短保留期有助於從 HDFS 自動清理日誌檔。

hdfs dfsadmin -report
hadoop fs -du -s -h /path/to/dir

縮短 Spark 事件和 YARN 容器日誌的保留期

HDFS 使用的常見原因是 /var/log 目錄。/var/log 目錄是存放 Spark 事件日誌和 YARN 容器日誌等日誌檔的位置。您可以變更這些檔案的保留期以節省空間。

下列命令範例顯示 /var/log/spark 的使用量。

注意:/var/log/spark 是預設的 Spark 事件日誌目錄。

hadoop fs -du -s -h /var/log/spark

縮短 Spark 任務歷史記錄檔案的預設保留期

Spark 任務歷史記錄檔案預設位於 /var/log/spark/apps。檔案系統歷史記錄清除工具執行時,Spark 會刪除超過七天的任務歷史記錄檔案。若要縮短預設保留期,請執行下列動作:

在執行中的叢集上:

1.    使用 SSH 連線至主節點

2.    在 /etc/spark/conf/spark-defaults.conf 中新增或更新下列值。下列組態每 12 小時執行一次清理程序。清除超過一天的配置清除檔案。您可以視您的個人使用案例,在 spark.history.fs.cleaner.internvalspark.history.fs.cleaner.maxAge 參數中自訂此時間長度。

------
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 12h
spark.history.fs.cleaner.maxAge 1d
------

3.    重新啟動 Spark 歷史記錄伺服器

叢集啟動期間:

請使用以下組態。您可以視您的個人使用案例,在 spark.history.fs.cleaner.internvalspark.history.fs.cleaner.maxAge 參數中自訂時間長度。

{
"Classification": "spark-defaults",
"Properties": {
"spark.history.fs.cleaner.enabled":"true",
"spark.history.fs.cleaner.interval":"12h",
"spark.history.fs.cleaner.maxAge":"1d"
   }
}

如需有關這些參數的詳細資訊,請參閱 Spark 文件中的監控和檢測

縮短 YARN 容器日誌的預設保留期

Spark 應用程式日誌,也就是您的 Spark 任務的 YARN 容器日誌,位於核心節點的 /var/log/hadoop-yarn/apps 目錄中。當應用程式執行完成時,Spark 會將這些日誌移至 HDFS。預設情況下,YARN 會在 HDFS 上將應用程式日誌保留 48 小時。若要縮短保留期:

1.    使用 SSH 連線至主要節點、核心節點或任務節點

2.    在 Amazon EMR 叢集中的每個節點上 (主要節點、核心節點和任務節點) 開啟 /etc/hadoop/conf/yarn-site.xml 檔案。

3.    在所有節點上縮減 yarn.log-aggregation.retain-seconds 屬性的值。

4.    重新啟動 ResourceManager 常駐程式。如需詳細資訊,請參閱檢視並重新啟動 Amazon EMR 和應用程式程序

您也可以透過重新設定叢集來縮短保留期。如需詳細資訊,請參閱重新設定執行中叢集中的執行個體群組

減少 /mnt/yarn 使用量

如果高度使用 /mnt/yarn 目錄,請調整使用者快取保留或擴展節點上的 EBS 磁碟區。如需詳細資訊,請參閱如何防止 Hadoop 或 Spark 任務的使用者快取在 Amazon EMR 中耗用過多磁碟空間?

調整叢集大小或擴展 Amazon EMR

請新增更多核心節點以緩解 HDFS 空間問題。此外,如果 HDFS 目錄以外的目錄已滿,請新增任何核心或任務節點。如需詳細資訊,請參閱擴展叢集資源

您也可以擴充現有節點中的 EBS 磁碟區,或使用動態擴展指令碼。如需詳細資訊,請參閱下列內容:


相關資訊

設定叢集硬體和網路

HDFS 組態

使用儲存空間和檔案系統

AWS 官方
AWS 官方已更新 1 年前