本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 Flink 和 FluentD 自定义 Docker 映像
按照以下步骤,使用 Apache Flink 或 FluentD 映像为 Amazon EMR on EKS 自定义 Docker 映像。其中包括获取基础映像、自定义基础映像、发布基础映像和提交工作负载的技术指导。
主题
先决条件
在自定义 Docker 映像之前,确保您已完成以下先决条件:
-
已在环境中安装 Docker。有关更多信息,请参阅获取 Docker
。
步骤 1:从 Amazon Elastic Container Registry 中检索基础映像
基础映像包含访问其他 Amazon Web Services 服务所需的 Amazon EMR 运行时和连接器。如果在 Flink 6.14.0 或更高版本中使用 Amazon EMR on EKS,可从 Amazon ECR 公开映像浏览馆获取基础映像。浏览图库以找到映像链接,然后将映像拉到本地 Workspace。例如,对于 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 库映像的链接:
步骤 2:自定义基础镜像
下列步骤描述了如何自定义从 Amazon ECR 中拉取的基础映像。
-
在您的本地 Workspace 上创建新的
Dockerfile
。 -
编辑
Dockerfile
并添加以下内容。该Dockerfile
使用您从public.ecr.aws/emr-on-eks/flink/emr-7.8.0-flink:latest
中拉取的容器映像。FROM public.ecr.aws/emr-on-eks/flink/emr-7.8.0-flink:latest USER root ### Add customization commands here #### USER hadoop:hadoop
如果您使用的是
Fluentd
,请使用以下配置。FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.8.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop
-
将命令添加到
Dockerfile
以自定义基础镜像。以下命令演示了如何安装 Python 库。FROM public.ecr.aws/emr-on-eks/flink/emr-7.8.0-flink:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop
-
在创建
DockerFile
的同一目录中,运行以下命令构建 Docker 映像。您在-t
标志后提供的字段是您自定义的映像名称。docker build -t <
YOUR_ACCOUNT_ID
>.dkr.ecr.<YOUR_ECR_REGION
>.amazonaws.com/<ECR_REPO
>:<ECR_TAG
>
步骤 3:发布自定义映像
现在,将新的 Docker 映像发布到您的 Amazon ECR 注册表。
-
运行以下命令创建一个 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>
-
运行以下命令对您的默认注册表进行身份验证。有关更多信息,请参阅《Amazon Elastic Container Registry 用户指南》中的对您的默认注册表进行身份验证。
aws ecr get-login-password --region <
AWS_REGION
> | docker login --username Amazon --password-stdin <AWS_ACCOUNT_ID
>.dkr.ecr.<YOUR_ECR_REGION
>.amazonaws.com -
推送镜像。有关更多信息,请参阅《Amazon Elastic Container Registry 用户指南》中的将映像推送到 Amazon ECR。
docker push <
YOUR_ACCOUNT_ID
>.dkr.ecr.<YOUR_ECR_REGION
>.amazonaws.com/<ECR_REPO
>:<ECR_TAG
>
步骤 4:使用自定义映像在 Amazon EMR 中提交 Flink 工作负载
要使用自定映像,请对 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