Apache Spark s3a vývojář - thread stack - problémy s pamětí

0

Otázka

Opravdu potřebuju trochu pomoct:

Jsme pomocí Spark3.1.2 pomocí samostatný shluk. Od té doby jsme začali používat s3a adresář vývojář, naše jiskra pracovních míst, stability a výkonu výrazně vzrostla!

V poslední době však jsme úplně bezradní odstraňování této s3a adresář vývojář otázka pro dny, a zajímalo by mě, jestli máte nějaké tušení, co se děje?

Naše jiskra úlohy nezdaří z důvodu Java OOM (nebo spíše proces, mezní) chyba:

 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)

Zapalovací Vlákno Dump ukazuje více než 5000 vývojář závity na zapalovací řidiče! Zde je příklad:

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 

To je vzhledem k tomu, že naše nastavení není povoleno více než 100 závity... Nebo, že něco nechápeme...

Tady je naše konfigurace a nastavení:

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

My jsme zkoušeli různé verze Hadoop, spark cloud knihovna, ale problém je stále stejný.

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

Budeme velmi rádi, pokud můžete nám ukázat ten správný směr

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

Nejlepší odpověď

3

To bude HADOOP-16570 S3A uživatelů úniku vláken/vyvolává OOM na práci/úkol spáchat v měřítku

pohybovat až do hadoop-3.3.0 binární soubory pro opravu. V ideálním případě, aby 3.3.1 opravit některé další otázky, zejména duplicitní jobIDs pocházející z jiskry. Nejste si jisti, jak daleko zpět do CDH uvolňuje to opravit šlo, mohla bych zjistit, jestli opravdu potřebujete nyní. Není CDH6.x, jistě

2021-11-28 12:13:50

Děkuji moc! Ve skutečnosti všechno, co jsme udělali nepomohlo.
Ofer Eliassaf

Náš problém teď je pro hledání správné ovladače - kde můžeme přinést jiskru-cloud sklenice s příslušnými verze? Bude tento ovladač fungovat pro Zapalovací 3.1.2: mvnrepository.com/artifact/org.apache.spark/... ??
Ofer Eliassaf

spark cloud sklenice musí být jeden pro vaše jiskra distro; je to jen tenké vazby. třídy
stevel

Ahoj, my Jsme se snaží, aby to na Jiskru 3.1.2, která přichází svázaný s Hadoop 3.2. Je to bezpečné poskytnout spark-hadoop-cloud pro 3.3.1 spolu s Hadoop 3.2 knihovny? (Snažíme se jít s nesvázané verze a dostal nějaké diffuculties s Zookeeper kurátor knihovny nesoulad Guava. rychlejší trať bude jít s přibaleným a stačí přidat comitter o 3.3.1. Bude to fungovat?). Díky!!!
Ofer Eliassaf

používat spark-hadoop-cloud-3.1.2; budete potřebovat kompletní sadu hadoop-3.3.x v dokonalé synchronizaci. nebo portovat vývojář patch pouze pro hadoop 3.2
stevel

Jiskra-hadoop-cloud-3.1.2 má to chybu v tom, (a to byla noční můra najít to, protože to není v oficiálních maven zprávy). To, co jsme nakonec dělat je: 1. Možnost (naše aktuální nastavení): Použijte zapalovací 3.1.2 zpřístupnění verze. Přidali jsme Hadoop 3.3.1 binárky Jsme přidali spark-hadoop-cloud-3.2.0 vyřešit vývojář problém. Možnost 2 (což považujeme): Přinést Spark3.1.2 balíčků (který je dodáván s Hadoop 3.2) A přidat spark-hadoop-cloud-3.2.0 pro upevnění comitter debatovali. Který je lepší podle vás?
Ofer Eliassaf

Vlákno úniku je v hadoop-aws; to by mělo být pouze hadoop -*, které je třeba aktualizovat.
stevel
1

Pokladny tohoto článku o ladění pro S3A.

Konkrétně já bych se na to i přesto, že jeho roztříděny do pole:

Možná budete muset provést pečlivé ladění, aby se snížilo riziko vyčerpání paměti, zejména pokud data jsou ukládána do paměti. Existuje počet parametrů, které mohou být naladěn:

Celkový počet vláken k dispozici v souborovém systému pro data obrázky nebo jiné frontě filesystem operace. To se nachází v fs.s3a.závity.max.

Počet operací, které mohou být ve frontě na popravu, čeká závit. To se nachází v fs.s3a.max.celkem.úkoly.

Počet bloků, který jediný výstupní proud může mít aktivní (to je, být nahraný na vlásku, nebo ve frontě v souborovém systému thread queue). To se nachází v fs.s3a.rychle.nahrávat.aktivní.bloky.

Délka času, že nečinné vlákno může zůstat ve fondu vláken před tím, než je v důchodu. To se nachází v fs.s3a.závity.keepalivetime.

Myslím, že byste mohli najít snižuje počet vláken odstraní tlak paměti.

Já také doporučuji vám naladit fs.s3a.fast.upload.active.blocks to bude také zmírnit tlak paměti. Myslím, že se snižuje počet závitů by měl být váš první krok jako 100 je trochu agresivní. Jste pravděpodobně omezena na šířku pásma a navíc vlákna nejsou schopná něco dělat, ale náročné na paměť.

2021-11-28 12:08:19

Víte, co řidiči jsou závity pro? Pokud jsem to správně pochopil konfigurace závity by měly být pro pracovníky. Jaké jsou řidiči závity pro?
Ofer Eliassaf

Podívejte se na s3 vývojář dokumentace.(Není 100% stejné jako to, ale dobré místo, aby se dozvěděli o s3 & spark) Odkaz níže. To vyvolává představu, že soubory jsou předávány strojvedoucímu, a že jsou spáchány. Nemůžeme vědět, to je stejné pro tento soubor psal, ale zdá se logické, že jako řidič je jediný, který si je vědom, práci se podařilo/nepodařilo. Nenašel jsem důkaz tvrdí, že to jako pravda, ale zdá se rozumné/přijatelné. github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

To by také pak smysl, proč pomocí 100 závity na pracovníka by mohly skončit s 5000 závity v ovladači a proč byste měli zvážit použití číslo, které nebude přidat tolik tlak na řidiče. (snížit počet podprocesů)
Matt Andruff

podívejte se na odpověď od @Stevel - to je známý hadoop chyba s dřívější verzí vývojář!
Ofer Eliassaf

Děkuji moc za ping mě.
Matt Andruff

V jiných jazycích

Tato stránka je v jiných jazycích

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