自訂 Flink 和 FluentD 的 Docker 映像 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

自訂 Flink 和 FluentD 的 Docker 映像

執行下列步驟,EKS使用 Apache Flink 或 FluentD 映像自訂 Amazon EMR on 的 Docker 映像。這包括取得基礎映像、自訂映像、發佈映像和提交工作負載的技術指南。

自訂 Docker 映像之前,請確定您已完成下列先決條件:

基礎映像包含存取其他 所需的 Amazon EMR執行期和連接器 AWS 服務。如果您在 EMR 上使用 Amazon EKS搭配 Flink 6.14.0 版或更新版本,您可以從 Amazon ECR Public Gallery 取得基本映像。瀏覽圖庫以尋找映像連結,然後將映像拉到本地工作區。例如,在 Amazon EMR 6.14.0 版本中,下列docker pull命令會傳回最新的標準基礎映像。emr-6.14.0:latest 以您想要的版本取代 。

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

以下是 Flink 圖庫映像和 Fluentd 圖庫映像的連結:

下列步驟說明如何自訂您從 Amazon 提取的基本映像ECR。

  1. 在您的本機工作區建立新的 Dockerfile

  2. 編輯 Dockerfile並新增下列內容。這Dockerfile會使用您從 提取的容器映像public.ecr.aws/emr-on-eks/flink/emr-7.3.0-flink:latest

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

    如果您使用的是 ,請使用下列組態Fluentd

    FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.3.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop
  3. Dockerfile 中新增命令以自訂基礎映像。下列命令示範如何安裝 Python 程式庫。

    FROM public.ecr.aws/emr-on-eks/flink/emr-7.3.0-flink:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop
  4. 在您建立 的相同目錄中DockerFile,執行下列命令來建置 Docker 映像。您在-t旗標之後提供的欄位是映像的自訂名稱。

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

您現在可以將新的 Docker 映像發佈至您的 Amazon ECR登錄檔。

  1. 執行下列命令以建立 Amazon ECR儲存庫來存放 Docker 映像。為您的儲存庫提供名稱,例如 emr_custom_repo. 如需詳細資訊,請參閱 Amazon Elastic Container Registry 使用者指南中的建立儲存庫。

    aws ecr create-repository \ --repository-name emr_custom_repo \ --image-scanning-configuration scanOnPush=true \ --region <AWS_REGION>
  2. 執行下列命令以驗證預設登錄檔。如需詳細資訊,請參閱 Amazon Elastic Container Registry 使用者指南中的驗證您的預設登錄檔。

    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. 推送映像。如需詳細資訊,請參閱 Amazon Elastic Container Registry 使用者指南中的將映像推送至 ECR Amazon。

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

FlinkDeployment規格進行下列變更,以使用自訂映像。若要這樣做,請在部署規格的spec.image行中輸入您自己的映像。

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"

若要為您的 Fluentd 任務使用自訂映像,請在部署規格的monitoringConfiguration.image行中輸入您自己的映像。

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