如何解決使用自動終止政策時,Amazon EMR 叢集不會終止或比預期更早終止的問題?

1 分的閱讀內容
0

我想要解決使用自動終止政策時,Amazon EMR 叢集不會終止或比預期更早終止的問題。

簡短說明

建立 Amazon EMR 叢集時,您可以開啟自動終止政策。自動終止原則會在特定閒置時間後終止叢集。

在 Amazon EMR 版本 5.34 至 5.36 和 6.4.0 或更高版本中,叢集會因以下原因而閒置:

  • YARN 應用程式未處於作用中狀態。
  • HDFS 的使用率低於 10%。
  • Amazon EMR Notebook 或 EMR Studio 連線未處於作用中狀態。
  • 叢集應用程式使用者介面未在使用中。

在 Amazon EMR 版本 5.30.0 至 5.33.1 和 6.1.0 至 6.3.0 中,叢集會因為以下原因而閒置:

  • YARN 應用程式未處於作用中狀態。
  • HDFS 的使用率低於 10%。
  • 叢集 Spark 工作未處於作用中狀態。

解決方案

若要解決使用自動終止政策時,Amazon EMR 叢集未終止或比預期更早終止的問題,請完成下列步驟:

  1. 確認 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體設定檔角色 EMR_EC2_DefaultRole 具有下列權限。如果執行個體設定檔角色沒有下列權限,叢集就會在達到閒置逾時期間後仍保持作用中狀態。

    {
      "Version": "2012-10-17",
      "Statement": {
        "Sid": "AllowAutoTerminationPolicyActions",
        "Effect": "Allow",
        "Action": [
          "elasticmapreduce:PutAutoTerminationPolicy",
          "elasticmapreduce:GetAutoTerminationPolicy",
          "elasticmapreduce:RemoveAutoTerminationPolicy"
        ],
        "Resource": "your-resources"
      }
    }
  2. 對於所有 Amazon EMR 版本,請確定 metrics-collector 程序正在執行中。metrics-collector 程序會收集測量結果,以判斷是否要自動終止。

    若要檢查 metrics-collector 程序,請執行下列命令:

    ps -ef|grep metrics-collector

    -or-

    systemctl status metricscollector.service

    如需詳細資訊,請參閱如何在 Amazon EMR 中重新啟動服務?

  3. 檢視 Amazon EMR 叢集的 CloudWatch 指標。請確定 AutoTerminationClusterIdle CloudWatch 測量結果在叢集中顯示 1。如果測量結果顯示 1,則叢集符合自動終止的資格。如果測量結果顯示 為 0,則叢集處於作用中狀態,而且不符合自動終止的資格。

  4. 對於早於 6.15.0 的 Amazon EMR 版本,請檢查您是否覆寫 EMR 叢集上的預設 Java 版本。如果您覆寫 Amazon EMR 中使用的預設 Java 版本,則自動終止不會如預期運作。

    若要解決此問題,請在執行中叢集的主要執行個體上執行下列指令碼,或在新叢集上作為啟動程序動作:

    #Change EMR daemon startup scripts to use JDK8
    sudo sed -i 's#$JAVA_HOME#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre#g' /usr/bin/logpusher
    sudo sed -i 's#$JAVA_HOME#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre#g' /usr/bin/instance-controller
    sudo sed -i 's#/usr/bin/java#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java#g' /usr/bin/metricscollector
    
    #Restart the daemons
    sudo systemctl restart instance-controller
    sudo systemctl restart logpusher
    sudo systemctl restart metricscollector.service
AWS 官方
AWS 官方已更新 6 個月前