Anpassen von Docker-Images für Flink und FluentD - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anpassen von Docker-Images für Flink und FluentD

Gehen Sie wie folgt vor, um Docker-Images für EMR Amazon EKS mit Apache Flink- oder FluentD-Images anzupassen. Dazu gehören technische Anleitungen zum Abrufen eines Basis-Images, zum Anpassen, Veröffentlichen und Einreichen eines Workloads.

Bevor Sie Ihr Docker-Image anpassen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:

Das Basis-Image enthält die EMR Amazon-Laufzeit und die Konnektoren, die Sie für den Zugriff auf andere benötigen AWS-Services. Wenn Sie Amazon EMR on EKS mit Flink Version 6.14.0 oder höher verwenden, können Sie die Basisbilder aus der Amazon ECR Public Gallery abrufen. Durchsuchen Sie die Galerie nach dem Image-Link und laden Sie das Image in Ihren lokalen Workspace. Für die Amazon-Version EMR 6.14.0 gibt der folgende docker pull Befehl beispielsweise das neueste Standard-Basis-Image zurück. Ersetzen Sie es emr-6.14.0:latest durch die gewünschte Release-Version.

docker pull public.ecr.aws/emr-on-eks/flink/emr-6.14.0-flink:latest

Im Folgenden finden Sie Links zum Flink-Galeriebild und zum Fluentd-Galeriebild:

In den folgenden Schritten wird beschrieben, wie Sie das Basis-Image, das Sie von Amazon abgerufen haben, anpassen könnenECR.

  1. Erstellen Sie ein neues Dockerfile in Ihrem lokalen Workspace.

  2. Bearbeiten Sie den Dockerfile und fügen Sie den folgenden Inhalt hinzu. Dabei wird das Container-Image Dockerfile verwendet, aus dem Sie abgerufen habenpublic.ecr.aws/emr-on-eks/flink/emr-7.5.0-flink:latest.

    FROM public.ecr.aws/emr-on-eks/flink/emr-7.5.0-flink:latest USER root ### Add customization commands here #### USER hadoop:hadoop

    Verwenden Sie die folgende Konfiguration, wenn Sie verwendenFluentd.

    FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.5.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop
  3. Fügen Sie Befehle in Dockerfile hinzu, um das Basis-Image anzupassen. Der folgende Befehl zeigt, wie Python-Bibliotheken installiert werden.

    FROM public.ecr.aws/emr-on-eks/flink/emr-7.5.0-flink:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop
  4. Führen Sie in demselben Verzeichnis, in dem Sie es erstellt habenDockerFile, den folgenden Befehl aus, um das Docker-Image zu erstellen. Das Feld, das Sie hinter dem -t Flag angeben, ist Ihr benutzerdefinierter Name für das Image.

    docker build -t <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>

Sie können das neue Docker-Image jetzt in Ihrer ECR Amazon-Registrierung veröffentlichen.

  1. Führen Sie den folgenden Befehl aus, um ein ECR Amazon-Repository zum Speichern Ihres Docker-Images zu erstellen. Geben Sie einen Namen für Ihr Repository ein, z. B. emr_custom_repo. Weitere Informationen finden Sie unter Erstellen eines Repositorys im Amazon Elastic Container Registry User Guide.

    aws ecr create-repository \ --repository-name emr_custom_repo \ --image-scanning-configuration scanOnPush=true \ --region <AWS_REGION>
  2. Führen Sie den folgenden Befehl aus, um Ihre Ressourcen zu löschen. Weitere Informationen finden Sie unter Authentifizieren Sie sich bei Ihrer Standardregistrierung im Amazon Elastic Container Registry User Guide.

    aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com
  3. Übertragen Sie das Image per Push. Weitere Informationen finden Sie unter Ein Bild an Amazon übertragen ECR im Amazon Elastic Container Registry-Benutzerhandbuch.

    docker push <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>

Nehmen Sie die folgenden Änderungen an Ihrer FlinkDeployment Spezifikation vor, um ein benutzerdefiniertes Bild zu verwenden. Geben Sie dazu Ihr eigenes Bild in die spec.image Zeile Ihrer Bereitstellungsspezifikation ein.

apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: flinkVersion: v1_18 image: <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG> imagePullPolicy: Always flinkConfiguration: taskmanager.numberOfTaskSlots: "1"

Um ein benutzerdefiniertes Image für Ihren Fluentd-Job zu verwenden, geben Sie Ihr eigenes Bild in die monitoringConfiguration.image Zeile Ihrer Bereitstellungsspezifikation ein.

monitoringConfiguration: image: <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG> cloudWatchMonitoringConfiguration: logGroupName: flink-log-group logStreamNamePrefix: custom-fluentd