跳至內容

為什麼 Amazon EMR 叢集中的核心節點會耗盡磁碟空間?

2 分的閱讀內容
0

我想在 Amazon EMR 叢集上執行 Apache Spark 作業,但核心節點的磁碟空間幾乎已滿。

解決方法

確定是否存在運作狀態不佳的核心節點

當至少附加一個 Amazon Elastic Block Store (Amazon EBS) 磁碟區的節點磁碟使用率超過 90% 時,就會將該節點視為運作狀態不佳。若要確定哪些節點的磁碟使用率已達 90%,請完成以下步驟:

  1. 檢查 MRUnhealthyNodes Amazon CloudWatch 指標。此指標會顯示 EMR 叢集中運作狀態不佳的節點數量。
    **注意:**您也可以建立 CloudWatch Alarm 以監控 MRUnhealthyNodes 指標。
  2. 連線至主節點,並存取位於 /emr/instance-controller/log/instance-controller.log執行個體控制器日誌
  3. 在執行個體控制器日誌中,搜尋 InstanceJointStatusMap 以識別哪些節點運作狀態不佳。
    如需更多資訊,請參閱由於運作狀態不佳節點造成的高磁碟使用率章節,其位於 如何解決 Amazon EMR 上 Spark 的 "ExecutorLostFailure: Slave lost" 錯誤?
  4. 若要判斷掛載點是否使用率過高,請登入核心節點,然後執行以下命令:
    df -h

移除不必要的本機及暫存 Spark 應用程式檔案

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

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

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

如果 /mnt/hdfs 目錄使用率過高,請檢查 Hadoop 分散式檔案系統 (HDFS) 的使用情況,並移除任何不必要的檔案,例如日誌檔案。若要檢查特定目錄的空間使用率,請執行以下命令:

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

注意: 將 /path/to/dir 替換為您要檢查空間使用率的目錄路徑。

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

/var/log 目錄會儲存 Spark 事件日誌與 YARN 容器日誌等日誌檔案。若要自動清理 HDFS 中的日誌檔案,請縮短保留期間。

縮短 Spark 作業歷史檔案的預設保留期間

預設情況下,Spark 作業歷史檔案位於 /var/log/spark/apps。當執行檔案系統歷史清理程序時,Spark 會刪除超過七天的作業歷史檔案。

若要在執行中的叢集上縮短預設保留期間,請完成以下步驟:

  1. 使用 SSH 連線至主節點
  2. /etc/spark/conf/spark-defaults.conf 中新增或更新以下值:
    ------spark.history.fs.cleaner.enabled true
    spark.history.fs.cleaner.interval 12h
    spark.history.fs.cleaner.maxAge 1d
    ------
    上述組態會每 12 小時執行一次清理程序。組態會清除超過 1 天的檔案。您可以透過 spark.history.fs.cleaner.internvalspark.history.fs.cleaner.maxAge 參數自訂此時段。
  3. 重新啟動 Spark History Server

若要在啟動叢集時縮短 Spark 作業歷史檔案的預設保留期間,請使用以下組態:

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

您可以透過 spark.history.fs.cleaner.intervalspark.history.fs.cleaner.maxAge 參數自訂時間時段。

如需更多關於這些參數的資訊,請參閱 Apache 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 常駐程式

您也可以重新設定叢集,縮短保留期間。

減少 /mnt/yarn 的使用量

/mnt/yarn 目錄磁碟使用率過高時,可調整使用者快取保留或擴展節點上的 EBS 磁碟區。如需更多資訊,請參閱如何停止 Hadoop 或 Spark 作業的使用者快取,以避免快取佔用過多 Amazon EMR 的磁碟空間?

調整叢集大小或擴展 Amazon EMR

為避免 HDFS 空間問題,請擴展核心節點數量。如果 HDFS 以外的目錄空間已滿,請擴展核心或任務節點數量。如需更多資訊,請參閱使用 Amazon EMR 叢集自動擴展以應對工作負載變化

您也可以擴展現有節點的 EBS 磁碟區或使用動態擴展指令碼。如需更多資訊,請參閱如何解決 Amazon EMR 上 Apache Spark 作業的「裝置上沒有剩餘空間」階段失敗?

相關資訊

設定 Amazon EMR 叢集硬體與網路

HDFS 組態

在 Amazon EMR 上使用儲存空間與檔案系統

AWS 官方已更新 3 個月前