Apache Spark s3a committer - pila del subproceso de problemas de memoria

0

Pregunta

Realmente necesito un poco de ayuda aquí:

Estamos utilizando Spark3.1.2 uso independiente de clúster. Desde que empecé con el s3 directorio sujetos del delito, nuestra chispa trabajos de la estabilidad y el rendimiento creció de manera significativa!

Últimamente, sin embargo, estamos completamente desconcertado a la solución de problemas de este s3a directorio committer cuestión de días, y me pregunto si usted tiene alguna idea de lo que está pasando?

Nuestra chispa trabajos no porque de Java OOM (o más bien el límite de procesos) error:

 An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.

: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
    at java.base/java.lang.Thread.start0(Native Method)
    at java.base/java.lang.Thread.start(Thread.java:803)
    at java.base/java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:937)
    at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1343)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
    at java.base/java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:714)
    at org.apache.spark.rpc.netty.DedicatedMessageLoop.$anonfun$new$1(MessageLoop.scala:174)
    at org.apache.spark.rpc.netty.DedicatedMessageLoop.$anonfun$new$1$adapted(MessageLoop.scala:173)
    at scala.collection.immutable.Range.foreach(Range.scala:158)
    at org.apache.spark.rpc.netty.DedicatedMessageLoop.<init>(MessageLoop.scala:173)
    at org.apache.spark.rpc.netty.Dispatcher.liftedTree1$1(Dispatcher.scala:75)
    at org.apache.spark.rpc.netty.Dispatcher.registerRpcEndpoint(Dispatcher.scala:72)
    at org.apache.spark.rpc.netty.NettyRpcEnv.setupEndpoint(NettyRpcEnv.scala:136)
    at org.apache.spark.storage.BlockManager.<init>(BlockManager.scala:231)
    at org.apache.spark.SparkEnv$.create(SparkEnv.scala:394)
    at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:189)
    at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:458)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:238)
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.base/java.lang.Thread.run(Thread.java:834)

Chispa Hilo de Volcado muestra más de 5000 sujetos del delito hilos en la chispa conductor! He aquí un ejemplo:

Thread ID   Thread Name Thread State    Thread Locks
1047    s3-committer-pool-0 WAITING 
1449    s3-committer-pool-0 WAITING 
1468    s3-committer-pool-0 WAITING 
1485    s3-committer-pool-0 WAITING 
1505    s3-committer-pool-0 WAITING 
1524    s3-committer-pool-0 WAITING 
1529    s3-committer-pool-0 WAITING 
1544    s3-committer-pool-0 WAITING 
1549    s3-committer-pool-0 WAITING 
1809    s3-committer-pool-0 WAITING 
1972    s3-committer-pool-0 WAITING 
1998    s3-committer-pool-0 WAITING 
2022    s3-committer-pool-0 WAITING 
2043    s3-committer-pool-0 WAITING 
2416    s3-committer-pool-0 WAITING 
2453    s3-committer-pool-0 WAITING 
2470    s3-committer-pool-0 WAITING 
2517    s3-committer-pool-0 WAITING 
2534    s3-committer-pool-0 WAITING 
2551    s3-committer-pool-0 WAITING 
2580    s3-committer-pool-0 WAITING 
2597    s3-committer-pool-0 WAITING 
2614    s3-committer-pool-0 WAITING 
2631    s3-committer-pool-0 WAITING 
2726    s3-committer-pool-0 WAITING 
2743    s3-committer-pool-0 WAITING 
2763    s3-committer-pool-0 WAITING 
2780    s3-committer-pool-0 WAITING 
2819    s3-committer-pool-0 WAITING 
2841    s3-committer-pool-0 WAITING 
2858    s3-committer-pool-0 WAITING 
2875    s3-committer-pool-0 WAITING 
2925    s3-committer-pool-0 WAITING 
2942    s3-committer-pool-0 WAITING 
2963    s3-committer-pool-0 WAITING 
2980    s3-committer-pool-0 WAITING 
3020    s3-committer-pool-0 WAITING 
3037    s3-committer-pool-0 WAITING 
3055    s3-committer-pool-0 WAITING 
3072    s3-committer-pool-0 WAITING 
3127    s3-committer-pool-0 WAITING 
3144    s3-committer-pool-0 WAITING 
3163    s3-committer-pool-0 WAITING 
3180    s3-committer-pool-0 WAITING 
3222    s3-committer-pool-0 WAITING 
3242    s3-committer-pool-0 WAITING 
3259    s3-committer-pool-0 WAITING 
3278    s3-committer-pool-0 WAITING 
3418    s3-committer-pool-0 WAITING 
3435    s3-committer-pool-0 WAITING 
3452    s3-committer-pool-0 WAITING 
3469    s3-committer-pool-0 WAITING 
3486    s3-committer-pool-0 WAITING 
3491    s3-committer-pool-0 WAITING 
3501    s3-committer-pool-0 WAITING 
3508    s3-committer-pool-0 WAITING 
4029    s3-committer-pool-0 WAITING 
4093    s3-committer-pool-0 WAITING 
4658    s3-committer-pool-0 WAITING 
4666    s3-committer-pool-0 WAITING 
4907    s3-committer-pool-0 WAITING 
5102    s3-committer-pool-0 WAITING 
5119    s3-committer-pool-0 WAITING 
5158    s3-committer-pool-0 WAITING 
5175    s3-committer-pool-0 WAITING 
5192    s3-committer-pool-0 WAITING 
5209    s3-committer-pool-0 WAITING 
5226    s3-committer-pool-0 WAITING 
5395    s3-committer-pool-0 WAITING 
5634    s3-committer-pool-0 WAITING 
5651    s3-committer-pool-0 WAITING 
5668    s3-committer-pool-0 WAITING 
5685    s3-committer-pool-0 WAITING 
5702    s3-committer-pool-0 WAITING 
5722    s3-committer-pool-0 WAITING 
5739    s3-committer-pool-0 WAITING 
6144    s3-committer-pool-0 WAITING 
6167    s3-committer-pool-0 WAITING 
6289    s3-committer-pool-0 WAITING 
6588    s3-committer-pool-0 WAITING 
6628    s3-committer-pool-0 WAITING 
6645    s3-committer-pool-0 WAITING 
6662    s3-committer-pool-0 WAITING 
6675    s3-committer-pool-0 WAITING 
6692    s3-committer-pool-0 WAITING 
6709    s3-committer-pool-0 WAITING 
7049    s3-committer-pool-0 WAITING 

Esto es considerando que nuestra configuración no se permiten más de 100 hilos... O no entendemos algo...

Aquí está nuestra configuraciones y ajustes:

fs.s3a.threads.max  100 
fs.s3a.connection.maximum  1000 
fs.s3a.committer.threads 16   
fs.s3a.max.total.tasks  5
fs.s3a.committer.name   directory
fs.s3a.fast.upload.buffer                 disk
io.file.buffer.size                                1048576
mapreduce.outputcommitter.factory.scheme.s3a    - org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory

Ya habíamos probado diferentes versiones de la chispa de Hadoop en la nube de la biblioteca, pero el problema es constantemente la misma.

https://repository.cloudera.com/content/repositories/releases/org/apache/spark/spark-hadoop-cloud_2.11/2.4.0-cdh6.3.2/spark-hadoop-cloud_2.11-2.4.0-cdh6.3.2.jar

https://repository.cloudera.com/artifactory/libs-release-local/org/apache/spark/spark-hadoop-cloud_2.11/2.4.0.7.0.3.0-79/spark-hadoop-cloud_2.11-2.4.0.7.0.3.0-79.jar

https://repo1.maven.org/maven2/org/apache/spark/spark-hadoop-cloud_2.12/3.2.0/spark-hadoop-cloud_2.12-3.2.0.jar

https://repository.cloudera.com/artifactory/libs-release-local/org/apache/spark/spark-hadoop-cloud_2.12/3.1.2.7.2.12.0-291/spark-hadoop-cloud_2.12-3.1.2.7.2.12.0-291.jar

Realmente apreciaríamos si usted nos puede apuntar en la dirección correcta

amazon-s3 apache-spark hadoop java
2021-11-23 16:49:54
2

Mejor respuesta

3

Va a ser HADOOP-16570 S3A "committers" fuga de hilos/subidas OOM en el trabajo/tarea se comprometen a escala

subir a hadoop-3.3.0 binarios para la revisión. Ideal para 3.3.1 revisión de algunos otros asuntos, en la duplicidad de jobIDs procedentes de chispa. No está seguro de cuánto tiempo atrás en la CDH versiones de que la revisión se fue; yo podría trabajar si usted realmente necesita ahora. No CDH6.x, sin duda

2021-11-28 12:13:50

Muchas gracias! De hecho, todo lo que hicimos no ayuda.
Ofer Eliassaf

Nuestro problema ahora es para buscar los controladores correctos - donde podemos recuperar la chispa de la nube con el frasco de la versión relevante? ¿Este trabajo de controlador para Spark 3.1.2: mvnrepository.com/artifact/org.apache.spark/... ??
Ofer Eliassaf

la chispa de la nube frasco debe ser el uno para su chispa distro; es solo una capa delgada de unión de la clase
stevel

Hola, Estamos tratando de activar esta en la Chispa 3.1.2 que viene incluido con Hadoop 3.2. Es seguro para proporcionar la chispa de hadoop en la nube para 3.3.1 junto con Hadoop 3.2 las bibliotecas? (Estamos tratando de ir con el desagregado de la versión y de algunos diffuculties con Cuidador curador bibliotecas discordancia de Guayaba. un camino más rápido será para ir con el paquete y sólo tiene que añadir el comitter de 3.3.1. ¿Funcionará?). Gracias!
Ofer Eliassaf

el uso de la chispa-hadoop en la nube 3.1.2; se necesita un conjunto completo de hadoop-3.3.x en perfecta sincronización. o backport los sujetos del delito parche sólo para hadoop 3.2
stevel

Esta chispa en hadoop en la nube 3.1.2 este error (y fue una pesadilla para encontrarlo, ya que no es oficial maven lanzamientos). Lo que terminamos haciendo es: Opción 1 (nuestro actual programa de instalación): Uso de la chispa 3.1.2 desagregado versión. Hemos añadido Hadoop 3.3.1 binarios Hemos añadido la chispa de hadoop en la nube-3.2.0 para resolver los sujetos del delito problema. Opción 2 (que vamos a considerar): Traer Spark3.1.2 incluido (que viene con Hadoop 3.2) Y añadir chispa de hadoop en la nube-3.2.0 para la fijación de la comitter issu. Que es mejor en tu opinión?
Ofer Eliassaf

El hilo de la fuga es en hadoop-aws; sólo debe hadoop-* que las necesidades de actualización.
stevel
1

Checkout este artículo sobre optimización para el S3.

Específicamente me gustaría vistazo a esto, a pesar de sus categorías en la matriz:

Puede que necesite realizar una cuidadosa optimización para reducir el riesgo de quedarse sin memoria, especialmente si los datos se almacenan en memoria. Hay un número de parámetros que pueden ajustarse:

El número total de hilos disponible en el sistema de ficheros de datos carga o cualquier otro sistema de ficheros en cola de operación. Esto se establece en fs.s3a.los hilos.max.

El número de operaciones que pueden ser en cola para su ejecución, a la espera de una subproceso. Esto se establece en fs.s3a.max.total.tareas.

El número de bloques que un único flujo de salida puede tener activo (que es, de ser subido por un hilo o en la cola del sistema de ficheros hilo de cola). Esto se establece en fs.s3a.rápido.subir.activo.los bloques.

La longitud de tiempo que un hilo inactivo puede permanecer en el grupo de subprocesos antes de que sea retirado. Esto se establece en fs.s3a.los hilos.keepalivetime.

Creo que puedes encontrar de reducir el número de hilos que se quite la presión de memoria.

Yo también sugerir la melodía fs.s3a.fast.upload.active.blocks también aliviar la presión de la memoria. Creo que la reducción de los hilos debe ser su primer movimiento como 100 es un poco agresivo. Es probable cubiertas de ancho de banda y subprocesos adicionales no están dispuestos a hacer cualquier cosa pero el consumo de memoria.

2021-11-28 12:08:19

¿Sabe usted lo que el conductor hilos son para? Si entiendo correctamente la configuración de los hilos debe ser para los trabajadores. ¿Cuáles son los hilos conductores para?
Ofer Eliassaf

Echa un vistazo a s3 confirmador de la documentación.(No es 100% igual a esta pero es un buen lugar para aprender sobre s3 & spark) Enlace de más abajo. Se plantea la idea de que los archivos se comunican con el conductor, y que están comprometidos. No sabemos de esto es el mismo para este archivo escrito, pero lo que parece lógico, ya que el conductor es el único que conoce el trabajo de éxito/error. No he encontrado una pistola humeante afirmando esto como cierto, pero parece razonable/plausible. github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

Esto también podría entonces dar sentido a por qué el uso de 100 hilos por trabajador podría terminar con 5000 hilos en el controlador y por qué otra vez usted debería considerar el uso de un número que no agrega mucha presión sobre el conductor. (reducir el número de subprocesos)
Matt Andruff

mira la respuesta de @Stevel - es un conocido hadoop error con las versiones anteriores de los sujetos del delito!
Ofer Eliassaf

Muchas gracias por hacer ping a mí.
Matt Andruff

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................