문제 해결
이 섹션에서는 Amazon EMR on EKS의 문제를 해결하는 방법을 설명합니다. Amazon EMR과 관련된 일반적인 문제를 해결하는 방법에 대한 자세한 내용은 Amazon EMR 관리 안내서에서 클러스터 문제 해결을 참조하세요.
Amazon EMR on EKS에서 Apache Flink 문제 해결
차트 Helm 설치 시 리소스 매핑을 찾을 수 없음
차트 Helm 설치 시 다음과 같은 오류 메시지가 나타날 수 있다.
Error: INSTALLATION FAILED: pulling from host 1234567890.dkr.ecr.us-west-2.amazonaws.com failed with status code [manifests 6.13.0]: 403 Forbidden Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "flink-operator-serving-cert" namespace: "<the namespace to install your operator>" from "": no matches for kind "Certificate" in version "cert-manager.io/v1"
ensure CRDs are installed first, resource mapping not found for name: "flink-operator-selfsigned-issuer" namespace: "<the namespace to install your operator>" " from "": no matches for kind "Issuer" in version "cert-manager.io/v1"
ensure CRDs are installed first].
이 오류를 해결하려면 웹후크 구성 요소 추가를 활성화하도록 cert-manager를 설치합니다. 사용하는 각 Amazon EKS 클러스터에 cert-manager를 설치해야 합니다.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0
AWS 서비스 액세스 거부 오류
access denied 오류가 표시되는 경우 차트 Helm values.yaml
파일에서 operatorExecutionRoleArn
에 대한 IAM 역할에 올바른 권한이 있는지 확인합니다. 또한 FlinkDeployment
사양에서 executionRoleArn
아래 IAM 역할에 올바른 권한이 있는지 확인합니다.
FlinkDeployment
가 멈춤
FlinkDeployment
가 중단된 상태로 멈추면 다음 단계에 따라 배포를 강제로 삭제합니다.
-
배포 실행을 편집합니다.
kubectl edit -n
Flink Namespace
flinkdeployments/App Name
-
이 파이널라이저를 제거합니다.
finalizers: - flinkdeployments.flink.apache.org/finalizer
-
배포를 삭제합니다.
kubectl delete -n
Flink Namespace
flinkdeployments/App Name
옵트인 AWS 리전에서 Flink 애플리케이션을 실행하는 경우 s3a AWSBadRequestException 문제
옵트인 AWS 리전에서 Flink 애플리케이션을 실행하는 경우 다음 오류가 표시될 수 있습니다.
Caused by: org.apache.hadoop.fs.s3a.AWSBadRequestException: getFileStatus on s3://flink.txt: com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: ABCDEFGHIJKL; S3 Extended Request ID: ABCDEFGHIJKLMNOP=; Proxy: null), S3 Extended Request ID: ABCDEFGHIJKLMNOP=:400 Bad Request: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: ABCDEFGHIJKL; S3 Extended Request ID: ABCDEFGHIJKLMNOP=; Proxy: null)
Caused by: org.apache.hadoop.fs.s3a.AWSBadRequestException: getS3Region on flink-application: software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 400, Request ID: ABCDEFGHIJKLMNOP, Extended Request ID: ABCDEFGHIJKLMNOPQRST==):null: null (Service: S3, Status Code: 400, Request ID: ABCDEFGHIJKLMNOP, Extended Request ID: AHl42uDNaTUFOus/5IIVNvSakBcMjMCH7dd37ky0vE6jhABCDEFGHIJKLMNOPQRST==)
이러한 오류를 해결하려면 FlinkDeployment
정의 파일에서 다음 구성을 사용합니다.
spec: flinkConfiguration: taskmanager.numberOfTaskSlots: "2" fs.s3a.endpoint.region:
OPT_IN_AWS_REGION_NAME
또한 SDKv2 자격 증명 제공업체를 사용하는 것이 좋습니다.
fs.s3a.aws.credentials.provider: software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider
SDKv1 자격 증명 제공업체를 사용하려면 SDK가 옵트인 리전을 지원하는지 확인합니다. 자세한 내용은 aws-sdk-java GitHub repository
옵트인 리전에서 Flink SQL 문을 실행할 때 S3 AWSBadRequestException
이 표시되면 Flink 구성 사양에서 fs.s3a.endpoint.region:
구성을 설정해야 합니다.OPT_IN_AWS_REGION_NAME
CN 리전에서 Flink 세션 작업을 실행하는 경우 S3A AWSBadRequestException
Amazon EMR 릴리스 6.15.0~7.2.0의 경우 CN 리전에서 Flink 세션 작업을 실행할 때 다음과 같은 오류 메시지가 표시될 수 있습니다. 여기에는 중국(베이징) 및 중국(닝샤)이 포함됩니다.
Error: {"type":"org.apache.flink.kubernetes.operator.exception.ReconciliationException","message":"org.apache.hadoop.fs.s3a.AWSBadRequestException: getFileStatus on s3://ABCDPath: software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH:null: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH","additionalMetadata":{},"throwableList": [{"type":"org.apache.hadoop.fs.s3a.AWSBadRequestException","message":"getFileStatus on s3://ABCDPath: software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH:null: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH","additionalMetadata":{}},{"type":"software.amazon.awssdk.services.s3.model.S3Exception","message":"null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH","additionalMetadata":{}}]}
이 문제를 인지하고 있습니다. 팀은 이러한 모든 릴리스 버전에 대해 flink 연산자를 패치하는 작업을 하고 있습니다. 그러나 패치를 완료하기 전에 이 오류를 해결하려면 Flink 연산자 헬름 차트를 다운로드하고, 압축 해제하며(압축된 파일 추출), 헬름 차트에서 구성을 변경해야 합니다.
특정 단계는 다음과 같습니다.
특히 디렉터리를 헬름 차트의 로컬 폴더로 변경하고, 다음 명령줄을 실행하여 헬름 차트를 가져와 압축 해제(추출)합니다.
helm pull oci://public.ecr.aws/emr-on-eks/flink-kubernetes-operator \ --version $VERSION \ --namespace $NAMESPACE
tar -zxvf flink-kubernetes-operator-$VERSION.tgz
헬름 차트 폴더로 이동하여
templates/flink-operator.yaml
파일을 찾습니다.flink-operator-config
ConfigMap을 찾아flink-conf.yaml
의 다음fs.s3a.endpoint.region
구성을 추가합니다. 예:{{- if .Values.defaultConfiguration.create }} apiVersion: v1 kind: ConfigMap metadata: name: flink-operator-config namespace: {{ .Release.Namespace }} labels: {{- include "flink-operator.labels" . | nindent 4 }} data: flink-conf.yaml: |+ fs.s3a.endpoint.region: {{ .Values.emrContainers.awsRegion }}
로컬 헬름 차트를 설치하고 작업을 실행합니다.