Apache Spark s3a comiter sau de altcineva - stack fir - afară de probleme de memorie

0

Problema

Chiar am nevoie de ajutor aici:

Suntem folosind Spark3.1.2 utilizarea independent de bord. De când am început să folosesc s3a director comiter sau de altcineva, scînteia locuri de munca stabilitate și performanță a crescut semnificativ!

În ultima vreme, cu toate acestea ne sunt complet uimit de depanare acest s3a director comiter sau de altcineva problema pentru zile, și mă întreb dacă aveți vreo idee de ce se întâmplă?

Scînteia locuri de munca nu din cauza Java OOM (sau, mai degrabă procesul de limită) de eroare:

 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)

Spark Thread Dump prezinta peste 5000 de comiter sau de altcineva fire pe spark driver! Aici este un exemplu:

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 

Acest lucru este având în vedere că setările noastre nu permit mai mult de 100 de fire... Sau nu înțeleg ceva...

Aici este nostru de configurații și setări:

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

Ne a încercat diferite versiuni de scânteia Hadoop nor de bibliotecă, dar problema este în mod constant același.

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

Ne-ar aprecia cu adevărat dacă ne poate indica în direcția cea bună

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

Cel mai bun răspuns

3

Va fi HADOOP-16570 S3A comiteri scurgere fire/ridică OOM pe locuri de muncă/sarcină comis la scară

muta-te la hadoop-3.3.0 binare pentru a repara. În mod ideal, să 3.3.1 pentru a rezolva alte probleme, mai ales duplicat jobIDs vine de la scânteia. Nu sunt sigur cât de departe înapoi în CDH de presă care repara dus; mi-aș da seama dacă într-adevăr nevoie pentru acum. Nu CDH6.x, cu siguranță

2021-11-28 12:13:50

Vă mulțumesc atât de mult! Într-adevăr, tot ceea ce am făcut nu a ajutat.
Ofer Eliassaf

Problema noastră acum este de a privi driverele corecte - de unde putem aduce scânteie-cloud borcan cu versiunea relevantă? Va acest permis de munca pentru Scânteie 3.1.2: mvnrepository.com/artifact/org.apache.spark/... ??
Ofer Eliassaf

scânteia nor borcan trebuie să fie una pentru scânteie distribuție; e doar un strat subțire de legare clasa
stevel

Salut, Noi încercăm să permită acest lucru pe Spark 3.1.2, care vine la pachet cu Hadoop 3.2. Este în siguranță pentru a oferi scânteie hadoop-cloud pentru 3.3.1 împreună cu Hadoop 3.2 biblioteci? (Suntem încercarea de a merge cu neîngrădit la versiunea și niște diffuculties cu Zookeeper curator biblioteci nepotrivire de Guava. o cale mai rapidă va fi de a merge cu pachet și trebuie doar să adăugați comitter de 3.3.1. Va funcționa?). Multumesc!!!
Ofer Eliassaf

utilizarea scânteia-hadoop-nor-3.1.2; veți avea nevoie de un set complet de hadoop-3.3.x în sincronizare perfectă. sau backport la comiter sau de altcineva patch-uri doar pentru hadoop 3.2
stevel

Această scânteie-hadoop-nor-3.1.2 are acest bug în ea (și a fost un coșmar pentru a găsi deoarece nu este oficial maven versiuni). Ceea ce am ajuns să fac este: Opțiunea 1 (instalare nostru actual): Utilizați scânteie 3.1.2 necondiționat versiune. Am adaugat Hadoop 3.3.1 binare Am adaugat scânteie hadoop-nor-3.2.0 pentru a rezolva comiter sau de altcineva problema. Opțiunea 2 (pe care le ia în considerare): Aduce Spark3.1.2 pachet (care vine cu Hadoop 3.2) Și se adaugă o scânteie-hadoop-nor-3.2.0 pentru fixarea comitter issu. Care este mai bine, în opinia ta?
Ofer Eliassaf

Firul de scurgere este în hadoop-aws; ar trebui să fie doar hadoop-* care are nevoie de actualizare.
stevel
1

Checkout acest articol pe tuning pentru S3A.

În mod special aș uita-te la acest lucru, chiar dacă clasificate în matrice:

Posibil să aveți nevoie pentru a efectua reglarea atentă pentru a reduce riscul de a rămâne fără memorie, mai ales în cazul în care datele este stocat în memorie. Există o numărul de parametri care pot fi reglate:

Numărul total de fire disponibile în sistemul de fișiere de date încărcări sau orice alt sistem de fișiere în coada de așteptare funcționare. Acest lucru este stabilit în fs.s3a.fire.max.

Numărul de operațiuni care pot fi plasate în coada de așteptare pentru executare, în așteptarea unei fir. Acest lucru este stabilit în fs.s3a.max.total.sarcini.

Numărul de blocuri care un singur flux de ieșire poate fi activ (care este, fiind încărcate de un fir sau coadă în sistemul de fișiere thread queue). Acest lucru este stabilit în fs.s3a.repede.incarca.activ.blocuri.

Durata de timp în care un fir inactiv poate sta în thread pool înainte de a este pensionat. Acest lucru este stabilit în fs.s3a.fire.keepalivetime.

Cred că s-ar putea găsi reducerea numărului de fire va elimina presiune de memorie.

Am sugera, de asemenea, să tune fs.s3a.fast.upload.active.blocks acesta va atenua, de asemenea, presiune de memorie. Cred că reducând numărul de fire ar trebui să fie prima ta mișcare ca 100 este un pic agresiv. Vă sunt susceptibile de limitat pe lățime de bandă și un plus de fire nu sunt susceptibile de a face ceva, dar consumatoare de memorie.

2021-11-28 12:08:19

Nu stii ce driver fire sunt pentru? Dacă am înțeles corect configurația fire ar trebui să fie pentru lucrători. Ce sunt driverele fire pentru?
Ofer Eliassaf

Aruncati o privire la s3 comiter sau de altcineva de documentare.(Nu 100% la fel ca asta, dar un loc bun pentru a învăța despre s3 & scânteie) LInk-ul de mai jos. Se ridică ideea că fișierele sunt comunicate de către conducătorul auto, și care sunt comise. Nu putem ști acest lucru este același pentru acest fișier de scris dar mi se pare logic, ca driver-ul este singurul care e conștient de treaba reusit/nu a reușit. Nu am gasit o arma de fumat susținând acest lucru ca adevărat, dar se pare rezonabil/plauzibil. github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

Acest lucru ar putea, de asemenea, atunci face sens de ce ajutorul de 100 de fire pe lucrător ar putea termina cu 5000 de fire în driver-ul și de ce din nou ar trebui să ia în considerare, folosind un număr care nu se va adăuga la fel de mult presiune pe șofer. (reduce numărul de thread)
Matt Andruff

uită-te la răspunsul de @Stevel - este un cunoscut hadoop bug cu versiunile anterioare ale comiter sau de altcineva!
Ofer Eliassaf

Vă mulțumesc foarte mult pentru ping mine.
Matt Andruff

În alte limbi

Această pagină este în alte limbi

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