Athrun Data Intelligence


Las organizaciones ejecutan millones de aplicaciones Apache Spark cada mes para preparar, mover y procesar sus datos para prospección y enseñanza maquinal (ML). La creación y el mantenimiento de estas aplicaciones Spark es un proceso iterativo en el que los desarrolladores dedican mucho tiempo a probar y solucionar problemas de su código. Durante el avance, los ingenieros de datos suelen producirse horas examinando archivos de registro, analizando planes de ejecución y realizando cambios de configuración para resolver problemas. Este proceso se vuelve aún más desafiante en entornos de producción oportuno a la naturaleza distribuida de Spark, su maniquí de procesamiento en memoria y la multitud de opciones de configuración disponibles. La alternativa de estos problemas de producción requiere un prospección íntegro de registros y métricas, lo que a menudo genera tiempos de inactividad prolongados y retrasos en la consecución de información procedente de canales de datos críticos.

Hoy, nos complace anunciar la paisaje previa de la alternativa de problemas de IA generativa para Spark en Pegamento AWS. Esta es una nueva capacidad que permite a los ingenieros y científicos de datos identificar y resolver rápidamente problemas en sus aplicaciones Spark. Esta característica utiliza tecnologías de enseñanza maquinal e inteligencia industrial generativa para proporcionar un prospección automatizado de la causa raíz de las aplicaciones Spark fallidas, cercano con recomendaciones prácticas y pasos de alternativa. Esta publicación demuestra cómo puede depurar sus aplicaciones Spark con la alternativa de problemas de IA generativa.

Cómo funciona la alternativa de problemas de IA generativa para Spark

Para los trabajos de Spark, la función de alternativa de problemas analiza los metadatos, las métricas y los registros del trabajo asociados con la firma de error de su trabajo para difundir un prospección integral de la causa raíz. Puede iniciar el proceso de optimización y alternativa de problemas con un solo clic en la consola de AWS Glue. Con esta característica, puede dominar el tiempo medio de resolución de días a minutos, optimizar el costo y el rendimiento de sus aplicaciones Spark y concentrarse más en obtener valencia de sus datos.

La depuración manual de aplicaciones Spark puede resultar un desafío para los ingenieros de datos y desarrolladores de ETL oportuno a diferentes motivos:

  • Amplias opciones de conectividad y configuración a una variedad de medios con Spark, si adecuadamente la convierte en una plataforma de procesamiento de datos popular, a menudo dificulta la raíz de los problemas cuando las configuraciones no son correctas, especialmente en relación con la configuración de medios (depósito S3, bases de datos, particiones, columnas resueltas) y permisos de golpe ( roles y claves).
  • Maniquí de procesamiento en memoria de Spark y partición distribuida de conjuntos de datos entre sus trabajadores, si adecuadamente es bueno para el paralelismo, a menudo dificulta que los usuarios identifiquen la causa raíz de las fallas resultantes de problemas de agotamiento de medios, como desatiendo de memoria y excepciones de disco.
  • Evaluación diferida de transformaciones de Spark Si adecuadamente es bueno para el rendimiento, dificulta identificar con precisión y celeridad el código y la deducción de la aplicación que causaron la descompostura a partir de los registros distribuidos y las métricas emitidas por diferentes ejecutores.

Veamos algunos escenarios comunes y complejos de alternativa de problemas de Spark en los que la alternativa de problemas de IA generativa para Spark puede economizar horas de depuración manual necesarias para profundizar y encontrar la causa raíz exacta.

Errores de golpe o configuración de medios

Las aplicaciones Spark permiten integrar datos de una variedad de medios, como conjuntos de datos con varias particiones y columnas en depósitos de S3 y tablas del catálogo de datos, usar los roles de IAM de trabajo asociados y las claves KMS para obtener permisos correctos para lograr a estos medios y requieren que estos medios existan y estar disponibles en las regiones y ubicaciones correctas a las que hacen remisión sus identificadores. Los usuarios pueden configurar mal sus aplicaciones, lo que genera errores que requieren profundizar en los registros para comprender la causa raíz: una configuración de medios o un problema de permisos.

RCA manual: motivo de descompostura y registros de aplicación Spark

El sucesivo ejemplo muestra el motivo del error de un problema de configuración global para depósitos de S3 en una ejecución de trabajo de producción. El motivo del error proveniente de Spark no ayuda a comprender la causa raíz o la confín de código que debe inspeccionarse para solucionarlo.

Exception in User Class: org.apache.spark.SparkException : Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3) (172.36.245.14 executor 1): com.amazonaws.services.glue.util.NonFatalException: Error opening file:

Posteriormente de profundizar en los registros de uno de los muchos ejecutores distribuidos de Spark, queda claro que el error se debió a que no existía un depósito de S3; sin confiscación, el seguimiento de la pila de errores suele ser harto desprendido y truncado para comprender la causa raíz precisa y la ubicación. interiormente de la aplicación Spark donde se necesita la alternativa.

Caused by: java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: 80MTEVF2RM7ZYAN9; S3 Extended Request ID: AzRz5f/Amtcs/QatfTvDqU0vgSu5+v7zNIZwcjUn4um5iX3JzExd3a3BkAXGwn/5oYl7hOXRBeo=; Proxy: null), S3 Extended Request ID: AzRz5f/Amtcs/QatfTvDqU0vgSu5+v7zNIZwcjUn4um5iX3JzExd3a3BkAXGwn/5oYl7hOXRBeo=
at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.list(Jets3tNativeFileSystemStore.java:423)
at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.isFolderUsingFolderObject(Jets3tNativeFileSystemStore.java:249)
at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.isFolder(Jets3tNativeFileSystemStore.java:212)
at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.getFileStatus(S3NativeFileSystem.java:518)
at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.open(S3NativeFileSystem.java:935)
at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.open(S3NativeFileSystem.java:927)
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:983)
at com.amazon.ws.emr.hadoop.fs.EmrFileSystem.open(EmrFileSystem.java:197)
at com.amazonaws.services.glue.hadoop.TapeHadoopRecordReaderSplittable.initialize(TapeHadoopRecordReaderSplittable.scala:168)
... 29 more

Con resolución de problemas de chispa de IA generativa: RCA y recomendaciones

Con Spark Troubleshooting, simplemente haga clic en el Disección de resolución de problemas en la ejecución fallida de su trabajo, y el servicio analiza los artefactos de depuración de su trabajo fallido para identificar el prospección de la causa raíz cercano con el número de confín en su aplicación Spark que puede inspeccionar para resolver aún más el problema.

Errores de desatiendo de memoria

Tomemos un error global pero relativamente engorroso que requiere un prospección manual significativo para concluir que se debe a que un trabajo de Spark se está quedando sin memoria en el regulador Spark (nodo profesor) o en uno de los ejecutores distribuidos de Spark. Por lo común, la alternativa de problemas requiere que un ingeniero de datos experimentado siga manualmente los siguientes pasos para identificar la causa raíz.

  • Busque en los registros del regulador Spark para encontrar el mensaje de error exacto
  • Navegue a la interfaz de sucesor de Spark para analizar los patrones de uso de la memoria.
  • Revise las métricas del ejecutor para comprender la presión de la memoria
  • Analizar el código para identificar operaciones que consumen mucha memoria.

Este proceso suele tardar horas porque el motivo de la descompostura de Spark no suele ser difícil de entender: se comercio de un problema de desatiendo de memoria en el regulador Spark y cuál es la alternativa para solucionarlo.

RCA manual: motivo de descompostura y registros de aplicación Spark

El sucesivo ejemplo muestra el motivo del error.

Py4JJavaError: An error occurred while calling o4138.collectToPython. java.lang.StackOverflowError

Los registros del regulador Spark requieren una búsqueda exhaustiva para encontrar el mensaje de error exacto. En este caso, el seguimiento de la pila de errores constaba de más de cien llamadas a funciones y es difícil comprender la causa raíz precisa, ya que la aplicación Spark finalizó abruptamente.

py4j.protocol.Py4JJavaError: An error occurred while calling o4138.collectToPython.
: java.lang.StackOverflowError
 at org.apache.spark.sql.catalyst.trees.TreeNode$$Lambda$1942/131413145.get$Lambda(Unknown Source)
 at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$mapChildren$1(TreeNode.scala:798)
 at org.apache.spark.sql.catalyst.trees.TreeNode.mapProductIterator(TreeNode.scala:459)
 at org.apache.spark.sql.catalyst.trees.TreeNode.mapChildren(TreeNode.scala:781)
 at org.apache.spark.sql.catalyst.trees.TreeNode.clone(TreeNode.scala:881)
 at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$clone(LogicalPlan.scala:30)
 at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.clone(AnalysisHelper.scala:295)
 at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.clone$(AnalysisHelper.scala:294)
 at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.clone(LogicalPlan.scala:30)
 at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.clone(LogicalPlan.scala:30)
 at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$clone$1(TreeNode.scala:881)
 at org.apache.spark.sql.catalyst.trees.TreeNode.applyFunctionIfChanged$1(TreeNode.scala:747)
 at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$mapChildren$1(TreeNode.scala:783)
 at org.apache.spark.sql.catalyst.trees.TreeNode.mapProductIterator(TreeNode.scala:459)
 ... repeated several times with hundreds of function calls

Con resolución de problemas de chispa de IA generativa: RCA y recomendaciones

Con Spark Troubleshooting, puede hacer clic en el Disección de resolución de problemas en la ejecución fallida de su trabajo y obtenga un prospección detallado de la causa raíz con la confín de código que puede inspeccionar, y asimismo recomendaciones sobre las mejores prácticas para optimizar su aplicación Spark y solucionar el problema.

Errores de chispa fuera del disco

Otro patrón de error engorroso con Spark es cuando se queda sin almacenamiento en disco en uno de los muchos ejecutores de Spark en la aplicación Spark. De modo similar a las excepciones de Spark OOM, la alternativa de problemas manual requiere una inmersión profunda en los registros y métricas de los ejecutores distribuidos para comprender la causa raíz e identificar la deducción o el código de la aplicación que causa el error oportuno a la ejecución lenta de Spark de sus transformaciones.

RCA manual: Motivo de descompostura y registros de aplicación Spark

El motivo del error asociado y el seguimiento de la pila de errores en los registros de la aplicación vuelven a ser silenciosos durante mucho tiempo, lo que requiere que el sucesor recopile más información de la interfaz de sucesor de Spark y las métricas de Spark para identificar la causa raíz e identificar la resolución.

An error occurred while calling o115.parquet. No space left on device

py4j.protocol.Py4JJavaError: An error occurred while calling o115.parquet.
: org.apache.spark.SparkException: Job aborted.
 at org.apache.spark.sql.errors.QueryExecutionErrors$.jobAbortedError(QueryExecutionErrors.scala:638)
 at org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:279)
 at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand.run(InsertIntoHadoopFsRelationCommand.scala:193)
 at org.apache.spark.sql.execution.command.DataWritingCommandExec.sideEffectResult$lzycompute(commands.scala:113)
 at org.apache.spark.sql.execution.command.DataWritingCommandExec.sideEffectResult(commands.scala:111)
 at org.apache.spark.sql.execution.command.DataWritingCommandExec.executeCollect(commands.scala:125)
 ....

Con resolución de problemas de chispa de IA generativa: RCA y recomendaciones

Con Spark Troubleshooting, proporciona el RCA y el número de confín de código en el script donde Spark evaluó de forma perezosa la operación de mezcla de datos. Además señala una plano de mejores prácticas para optimizar la reproducción aleatoria o las transformaciones amplias o utilizar el complemento de reproducción aleatoria S3 en AWS Glue.

Depurar trabajos de AWS Glue para Spark

Para utilizar esta función de alternativa de problemas para las ejecuciones de trabajos fallidas, complete lo sucesivo:

  1. En la consola de AWS Glue, elija Empleos de ETL en el panel de navegación.
  2. Elige tu trabajo.
  3. en el Corre pestaña, elija la ejecución fallida del trabajo.
  4. Nominar Solucionar problemas con la IA para iniciar el prospección.
  5. Serás redirigido al Disección de resolución de problemas pestaña con prospección generado.

veras Disección de causa raíz y Recomendaciones secciones.

El servicio analiza los artefactos de depuración de su trabajo y proporciona los resultados. Veamos un ejemplo vivo de cómo funciona esto en la habilidad.

A continuación, mostramos un ejemplo de un extremo a otro en el que Spark Troubleshooting ayuda a un sucesor a identificar la causa raíz de un problema de configuración de medios y ayuda a solucionar el trabajo para resolver el error.

Consideraciones

Durante la paisaje previa, el servicio se centra en errores comunes de Spark, como problemas de golpe y configuración de medios, excepciones de desatiendo de memoria en el regulador y los ejecutores de Spark, excepciones de desatiendo de disco en los ejecutores de Spark, e indicará claramente cuando un tipo de error aún no es compatible. Sus trabajos deben ejecutarse en AWS Glue interpretación 4.0.

La paisaje previa está acondicionado sin costo adicional en todas las regiones comerciales de AWS donde AWS Glue está acondicionado. Cuando utilice esta capacidad, cualquier ejecución de subsistencia que active para probar las soluciones propuestas se cobrará de acuerdo con el precio típico de AWS Glue.

Conclusión

Esta publicación demostró cómo la alternativa de problemas de IA generativa para Spark en AWS Glue ayuda a la depuración diaria de aplicaciones Spark. Simplifica el proceso de depuración de sus aplicaciones Spark mediante el uso de IA generativa para identificar automáticamente la causa raíz de las fallas y proporciona recomendaciones prácticas para resolver los problemas.

Para obtener más información sobre esta nueva función de alternativa de problemas para Spark, visite Decisión de problemas de trabajos de Spark con IA.

Un agradecimiento exclusivo a todos los que contribuyeron al tirada de la alternativa de problemas de IA generativa para Apache Spark en AWS Glue: Japson Jeyasekaran, Rahul Sharma, Mukul Prasad, Weijing Cai, Jeremy Samuel, Hirva Patel, Martin Ma, Layth Yassin, Kartik Panjabi, Maya Patwardhan. , Anshi Shrivastava, Henry Caballeroso Corzo, Rohit Das, Peter Tsai, Daniel Greenberg, McCall Peltier, Takashi Onikura, Tomohiro Tanaka, Sotaro Hikita, Chiho Sugimoto, Yukiko Iwazumi, Gyan Radhakrishnan, Victor Pleikis, Sriram Ramarathnam, Matt Sampson, Brian Ross, Alexandra Tello, Andrew King, Joseph Barlan, Daiyan Alamgir, Ranu Shah, Adam Rohrscheib, Nitin Bahadur, Santosh Chandrachood, Matt Su, Kinshuk Pahare y William Vambenepe.


Acerca de los autores

Noritaka Sekiyama es arquitecto principal de Big Data en el equipo de AWS Glue. Es responsable de crear artefactos de software para ayudar a los clientes. En su tiempo huido le gusta peregrinar en bici con su bici de carretera.

Vishal Kajjam es ingeniero de avance de software en el equipo de AWS Glue. Le apasiona la informática distribuida y el uso de ML/AI para diseñar y crear soluciones de extremo a extremo para tocar las micción de integración de datos de los clientes. En su tiempo huido, le gusta producirse tiempo con familiares y amigos.

Shubham Mehta es director senior de productos en AWS Analytics. Dirige el avance de funciones de IA generativa en servicios como AWS Glue, Amazon EMR y Amazon MWAA, utilizando IA/ML para simplificar y mejorar la experiencia de los profesionales de datos que crean aplicaciones de datos en AWS.

Wei Tang es ingeniero de avance de software en el equipo de AWS Glue. Es una sólida desarrolladora con profundos intereses en resolver problemas recurrentes de los clientes con sistemas distribuidos y AI/ML.

Xiao Run Yu es ingeniero de avance de software en el equipo de AWS Glue. Está trabajando en la creación de nuevas funciones para AWS Glue para ayudar a los clientes. Fuera del trabajo, Xiaorun disfruta explorar nuevos lugares en el Campo de acción de la Bahía.

Jake Zych es ingeniero de avance de software en el equipo de AWS Glue. Tiene un gran interés en los sistemas distribuidos y el enseñanza maquinal. En su tiempo huido, a Jake le gusta crear contenidos de vídeo y recrearse juegos de mesa.

Savio Dsouza es director de avance de software en el equipo de AWS Glue. Su equipo trabaja en sistemas distribuidos y nuevas interfaces para la integración de datos y la mandato valioso de lagos de datos en AWS.

Mohit Saxena es director senior de avance de software en el equipo de AWS Glue y Amazon EMR. Su equipo se enfoca en crear sistemas distribuidos para permitir a los clientes con interfaces fáciles de usar y capacidades impulsadas por IA mudar de modo valioso petabytes de datos en lagos de datos en Amazon S3 y bases de datos y almacenes de datos en la abundancia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *