Direkt zum Inhalt

Wie behebe ich, dass ein Amazon EMR-Cluster nicht oder früher als erwartet beendet wird, wenn ich eine Richtlinie zur automatischen Beendigung verwende?

Lesedauer: 3 Minute
0

Ich möchte einen Amazon EMR-Cluster lösen, der nicht oder früher als erwartet beendet wird, wenn ich eine Richtlinie zur automatischen Beendigung verwende.

Kurzbeschreibung

Wenn Sie einen Amazon EMR-Cluster erstellen, können Sie die Richtlinie zur automatischen Beendigung aktivieren. Die Richtlinie zur automatischen Beendigung beendet den Cluster nach einer bestimmten Leerlaufzeit.

In den Amazon EMR-Versionen 5.34 bis 5.36 und 6.4.0 oder höher ist ein Cluster aus den folgenden Gründen inaktiv:

  • YARN-Anwendungen sind nicht aktiv.
  • Die HDFS-Nutzung liegt unter 10 %.
  • Amazon EMR Notebook- oder EMR Studio-Verbindungen sind nicht aktiv.
  • Benutzeroberflächen für Cluster-Anwendungen werden nicht verwendet.

In den Amazon EMR-Versionen 5.30.0 bis 5.33.1 und 6.1.0 bis 6.3.0 ist ein Cluster aus den folgenden Gründen inaktiv:

  • YARN-Anwendungen sind nicht aktiv.
  • Die HDFS-Nutzung liegt unter 10 %.
  • Cluster Spark-Aufträge sind nicht aktiv.

Lösung

Gehen Sie wie folgt vor, um einen Amazon EMR-Cluster zu lösen, der nicht oder früher als erwartet beendet wird, wenn Sie eine Richtlinie zur automatischen Beendigung verwenden:

  1. Vergewissern Sie sich, dass die Instance-Profilrolle der Amazon Elastic Compute Cloud (Amazon EC2) EMR_EC2_DefaultRole über die folgenden Berechtigungen verfügt. Wenn die Instance-Profilrolle nicht über die folgenden Berechtigungen verfügt, bleibt der Cluster aktiv, nachdem er den Leerlauf-Timeout erreicht hat.

    {
      "Version": "2012-10-17",
      "Statement": {
        "Sid": "AllowAutoTerminationPolicyActions",
        "Effect": "Allow",
        "Action": [
          "elasticmapreduce:PutAutoTerminationPolicy",
          "elasticmapreduce:GetAutoTerminationPolicy",
          "elasticmapreduce:RemoveAutoTerminationPolicy"
        ],
        "Resource": "your-resources"
      }
    }
  2. Stellen Sie für alle Amazon EMR-Versionen sicher, dass der Prozess metrics-collector ausgeführt wird. Der Prozess metrics-collector erfasst die Metriken, um die automatische Beendigung zu bestimmen.

    Führen Sie die folgenden Befehle aus, um den Prozess metrics-collector zu überprüfen:

    ps -ef|grep metrics-collector

    -oder-

    systemctl status metricscollector.service

    Weitere Informationen finden Sie unter Wie starte ich einen Service in Amazon EMR neu?

  3. Zeigen Sie die CloudWatch-Metriken des Amazon EMR-Clusters an. Stellen Sie sicher, dass die CloudWatch-Metrik AutoTerminationClusterIdle 1 im Cluster anzeigt. Wenn die Metrik 1 anzeigt, kommt der Cluster für die automatische Beendigung in Frage. Wenn die Metrik 0 anzeigt, ist der Cluster aktiv und kommt nicht für die automatische Beendigung in Frage.

  4. Prüfen Sie bei Amazon EMR-Versionen vor 6.15.0, ob Sie die Standard-Java-Version auf dem EMR-Cluster überschrieben haben. Wenn Sie die in Amazon EMR verwendete Standard-Java-Version überschreiben, funktioniert die automatische Beendigung nicht wie erwartet.

    Um dieses Problem zu beheben, führen Sie das folgende Skript auf der primären Instance eines Clusters, der ausgeführt wird, oder als Bootstrap-Aktion auf einem neuen Cluster aus:

    #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 OFFICIALAktualisiert vor einem Jahr