View a markdown version of this page

S3 StreamingFileSink FileNotFoundExceptions - Managed Service para Apache Flink

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

S3 StreamingFileSink FileNotFoundExceptions

Las aplicaciones de Managed Service for Apache Flink pueden ejecutarse en un archivo de In-progress pieza FileNotFoundException al partir de instantáneas si falta un archivo de In-progress pieza al que se hace referencia por su punto de almacenamiento. Cuando se produce este modo de error, el estado de operador de la aplicación Managed Service para Apache Flink no suele ser recuperable y debe reiniciarse sin instantánea mediante SKIP_RESTORE_FROM_SNAPSHOT. Consulte el siguiente ejemplo de stacktrace:

java.io.FileNotFoundException: No such file or directory: s3://amzn-s3-demo-bucket/pathj/INSERT/2023/4/19/7/_part-2-1234_tmp_12345678-1234-1234-1234-123456789012 at org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:2231) at org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:2149) at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:2088) at org.apache.hadoop.fs.s3a.S3AFileSystem.open(S3AFileSystem.java:699) at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:950) at org.apache.flink.fs.s3hadoop.HadoopS3AccessHelper.getObject(HadoopS3AccessHelper.java:98) at org.apache.flink.fs.s3.common.writer.S3RecoverableMultipartUploadFactory.recoverInProgressPart(S3RecoverableMultipartUploadFactory.java:97) ...

StreamingFileSink de Flink escribe registros en sistemas de archivos compatibles con File Systems. Dado que los flujos entrantes pueden ser ilimitados, los datos se organizan en archivos parciales de tamaño finito y se añaden nuevos archivos a medida que se escriben los datos. El ciclo de vida parcial y la política de renovación determinan el momento, el tamaño y la denominación de los archivos parciales.

Durante los puntos de control y los puntos de guardado (creación de instantáneas), se cambia el nombre de todos los archivos pendientes y se los confirma. Sin embargo, los archivos de In-progress pieza no se confirman, sino que se les cambia el nombre y su referencia se guarda en los metadatos de los puntos de control o punto de almacenamiento para utilizarlos al restaurar los trabajos. Con el tiempo, estos archivos de In-progress piezas pasarán a estar pendientes, se les cambiará el nombre y se confirmarán en un punto de control o punto de guardado posterior.

A continuación se indican las causas principales y las medidas correctivas de la falta de un archivo de pieza: In-progress

  • Instantánea obsoleta utilizada para iniciar la aplicación Managed Service for Apache Flink: solo la última instantánea del sistema tomada cuando se detiene o actualiza una aplicación se puede usar para iniciar una aplicación Managed Service for Apache Flink con Amazon S3. StreamingFileSink Para evitar este tipo de error, utilice la última instantánea del sistema.

    • Esto ocurre, por ejemplo, cuando se selecciona una instantánea creada con CreateSnapshot en lugar de una instantánea activada por el sistema durante la detención o la actualización. El punto de guardado de la instantánea anterior guarda una referencia desactualizada a la In-progress parte del archivo a la que se le ha cambiado el nombre y se ha registrado en un punto de control o punto de guardado posterior.

    • Esto también puede ocurrir cuando se selecciona una instantánea activada por el sistema a partir de un evento que no es el más reciente. Stop/Update Un ejemplo es una aplicación con la instantánea del sistema deshabilitada pero con configuración RESTORE_FROM_LATEST_SNAPSHOT. Por lo general, las aplicaciones de Managed Service for Apache Flink con Amazon S3 siempre StreamingFileSink deben tener habilitada y RESTORE_FROM_LATEST_SNAPSHOT configurada la instantánea del sistema.

  • In-progress archivo parcial eliminado: dado que el archivo In-progress parcial se encuentra en un depósito de S3, otros componentes o actores que tengan acceso al depósito pueden eliminarlo.

    • Esto puede suceder si has detenido la aplicación durante demasiado tiempo y la política de MultiPartUpload ciclo de vida del bucket de S3 ha eliminado el archivo In-progress parcial al que se hace referencia en el punto de almacenamiento de la aplicación. Para evitar este tipo de errores, asegúrese de que la política de ciclo de vida de S3 Bucket MPU abarque un período lo suficientemente amplio para su caso de uso.

    • Esto también puede ocurrir cuando el archivo de In-progress pieza se ha eliminado manualmente o mediante otro de los componentes del sistema. Para evitar este tipo de errores, asegúrese de que In-progress otros actores o componentes no eliminen los archivos de piezas.

  • Condición de carrera en la que se activa un punto de control automático después del punto de guardado: esto afecta a las versiones de Managed Service para Apache Flink hasta la 1.13, inclusive. Este problema está solucionado en Managed Service para Apache Flink, versión 1.15. Migre la aplicación a la versión más reciente de Managed Service para Apache Flink para evitar la reaparición. También sugerimos migrar de StreamingFileSink a FileSink.

    • Cuando las aplicaciones se detienen o actualizan, Managed Service para Apache Flink activa un punto de guardado y detiene la aplicación en dos pasos. Si se activa un punto de control automático entre los dos pasos, el punto de almacenamiento no se podrá utilizar, ya que se cambiaría el nombre del archivo que lo compone y, In-progress posiblemente, se confirmaría.