本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂 Flink 和 FluentD 的 Docker 映像
執行下列步驟,EKS使用 Apache Flink 或 FluentD 映像自訂 Amazon EMR on 的 Docker 映像。這包括取得基礎映像、自訂映像、發佈映像和提交工作負載的技術指南。
主題
必要條件
自訂 Docker 映像之前,請確定您已完成下列先決條件:
-
在您的環境中安裝 Docker。如需詳細資訊,請參閱獲取 Docker
。
步驟 1:從 Amazon Elastic Container Registry 擷取基本映像
基礎映像包含存取其他 所需的 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 圖庫映像的連結:
步驟 2:自訂基礎映像
下列步驟說明如何自訂您從 Amazon 提取的基本映像ECR。
-
在您的本機工作區建立新的
Dockerfile
。 -
編輯
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
-
在
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
-
在您建立 的相同目錄中
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 AWS --password-stdin <AWS_ACCOUNT_ID
>.dkr.ecr.<YOUR_ECR_REGION
>.amazonaws.com -
推送映像。如需詳細資訊,請參閱 Amazon Elastic Container Registry 使用者指南中的將映像推送至 ECR Amazon。
docker push <
YOUR_ACCOUNT_ID
>.dkr.ecr.<YOUR_ECR_REGION
>.amazonaws.com/<ECR_REPO
>:<ECR_TAG
>
步驟 4:EMR使用自訂映像在 Amazon 中提交 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