Solución de problemas - Amazon EMR

Solución de problemas

En esta sección, se describe cómo solucionar problemas con Amazon EMR en EKS. Para obtener información sobre cómo solucionar problemas generales con Amazon EMR, consulte Solucionar problemas de clústeres en la Guía de administración de Amazon EMR.

No se encontró la asignación de recursos al instalar el gráfico de Helm

Es posible que aparezca el siguiente mensaje de error cuando instale el gráfico de 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].

Para resolver este error, instale cert-manager para poder agregar el componente webhook. Debe instalar cert-manager en cada clúster de Amazon EKS que utilice.

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0

Si ve un error de tipo access denied, confirme que el rol de IAM incluido para operatorExecutionRoleArn en el archivo values.yaml de gráfico de Helm tiene los permisos correctos. Asegúrese también de que el rol de IAM asignado a executionRoleArn en su especificación FlinkDeployment tenga los permisos correctos.

Si se bloquea la FlinkDeployment, siga estos pasos para forzar la eliminación de la implementación:

  1. Edite la ejecución de la implementación.

    kubectl edit -n Flink Namespace flinkdeployments/App Name
  2. Elimine este finalizador.

    finalizers: - flinkdeployments.flink.apache.org/finalizer
  3. Elimine la implementación.

    kubectl delete -n Flink Namespace flinkdeployments/App Name

Si ejecuta una aplicación Flink en una opción de Región de AWS, es posible que vea los siguientes errores:

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==)

Para corregir estos errores, utilice la siguiente configuración en el archivo de definición FlinkDeployment.

spec: flinkConfiguration: taskmanager.numberOfTaskSlots: "2" fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME

También recomendamos que utilice el proveedor de credenciales del SDKv2:

fs.s3a.aws.credentials.provider: software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider

Si quiere usar el proveedor de credenciales del SDKv1, asegúrese de que su SDK sea compatible con la región en la que ha optado. Para más información, consulte el repositorio de GitHub de aws-sdk-java.

Si obtiene S3 AWSBadRequestException cuando ejecuta instrucciones SQL de Flink en una región opcional, asegúrese de establecer la configuración fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME en sus especificaciones de configuración de Flink.

En el caso de las versiones 6.15.0 a 7.2.0 de Amazon EMR, es posible que aparezca los siguientes mensajes de error al ejecutar un trabajo de sesión de Flink en las regiones de CN. Estas incluyen China (Pekín) y China (Ningxia):

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":{}}]}

Existe conciencia sobre este problema. El equipo está trabajando para parchear los operadores de Flink en todas estas versiones de lanzamiento. Sin embargo, antes de finalizar el parche, para corregir este error, necesita descargar el gráfico de Helm del operador de Flink, descomprimirlo (extraer el archivo comprimido) y realizar cambios de configuración en el gráfico de Helm.

A continuación se indican los pasos a seguir:

  1. Cambie a su carpeta local para el gráfico de Helm, específicamente cambie los directorios a, y ejecute la siguiente línea de comandos para extraer el gráfico de Helm y descomprimirlo (extraerlo).

    helm pull oci://public.ecr.aws/emr-on-eks/flink-kubernetes-operator \ --version $VERSION \ --namespace $NAMESPACE
    tar -zxvf flink-kubernetes-operator-$VERSION.tgz
  2. Vaya a la carpeta del gráfico de Helm y busque el archivo templates/flink-operator.yaml.

  3. Busque el ConfigMap de flink-operator-config y añada la siguiente configuración de fs.s3a.endpoint.region en el flink-conf.yaml. Por ejemplo:

    {{- 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 }}
  4. Instale el gráfico de Helm local y ejecute su trabajo.