Apache Iskra s3a autora - niť zásobníka - out of memory problémy,

0

Otázka

Ja naozaj potrebujem pomôcť tu:

Sme pomocou Spark3.1.2 pomocou samostatného klastra. Odkedy sme začali pomocou s3a directory autora, naša iskra pracovných miest stability a výkonu rástol výrazne!

V poslednej dobe však sme úplne zmätený riešenie problémov v tejto s3a directory autora problém dní, a zaujímalo, či máte nejakú predstavu, čo sa deje?

Naša iskra pracovných miest zlyhať, pretože Java OOM (alebo skôr proces limit) 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)

Iskra Niť Dump ukazuje cez 5000 autora vlákien na iskra ovládač! Tu je prí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 vzhľadom na to, že naše nastavenie neumožňuje viac ako 100 vlákna... Alebo nemáme niečo pochopiť...

Tu je náš konfigurácie a nastavenia:

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

Mali sme vyskúšali rôzne verzie iskra Hadoop cloud knižnice, ale problém je dôsledne rovnaké.

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

Boli by sme veľmi radi, ak si môžete upozorniť nás správnym smerom

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

Najlepšiu odpoveď

3

To bude HADOOP-16570 S3A committers úniku vlákien/vyvoláva OOM na prácu/úlohou spáchať v mierke

prejsť na hadoop-3.3.0 binárne súbory pre opraviť. Ideálne na 3.3.1 opraviť niektoré ďalšie problémy, najmä duplicitné jobIDs pochádzajúcich z iskra. Nie ste istí, ako ďaleko do CDH správy, ktoré fix šiel; mohol som pracovať, či naozaj potrebujete, aby teraz. Nie CDH6.x, určite

2021-11-28 12:13:50

Ďakujem moc! Naozaj všetko, čo sme si nepomohla.
Ofer Eliassaf

Náš problém teraz je pre hľadáte správne ovládače - kde môžeme fetch iskra-cloud jar s príslušnými verziu? Bude tento ovládač práce pre Iskra 3.1.2: mvnrepository.com/artifact/org.apache.spark/... ??
Ofer Eliassaf

iskra cloud jar musí byť jeden pre svoje iskra distro, je to len tenký záväzné triedy
stevel

Ahoj, my Sme snaží umožniť to na Iskra 3.1.2, ktorá prichádza spolu s Hadoop 3.2. Je to bezpečné poskytovať iskra-hadoop-cloud pre 3.3.1 spolu s Hadoop 3.2 knižnice? (Snažíme sa ísť s samostatnej verzie a dostal nejaké diffuculties s Zookeeper kurátor knižnice nesúlad na Guava. rýchlejšie trate bude ísť s zviazané a stačí pridať comitter z 3.3.1. Bude to fungovať?). Vďaka!
Ofer Eliassaf

použitie iskra-hadoop-cloud-3.1.2; budete potrebovať kompletnú sadu hadoop-3.3.x v dokonalej synchronizácii. alebo backport autora opravu iba na hadoop 3.2
stevel

Táto iskra-hadoop-cloud-3.1.2 má táto chyba v nej (a to bola nočná mora ho nájsť, pretože to nie je v oficiálnych maven vydania). Čo skončili sme na tom je: Možnosť 1 (naše aktuálne nastavenie): Použite iskra 3.1.2 samostatnej verzie. Pridali sme Hadoop 3.3.1 binaries Sme pridali iskra-hadoop-cloud-3.2.0 vyriešiť autora problém. Možnosť č. 2 (ktoré považujeme za): Priniesť Spark3.1.2 zviazané (ktorý je dodávaný s Hadoop 3.2) A pridať iskru-hadoop-cloud-3.2.0 pre upevnenie comitter issu. Čo je lepšie podľa vášho názoru?
Ofer Eliassaf

Niť únik je v hadoop-aws; len treba hadoop -*, ktoré nepotrebuje aktualizáciu.
stevel
1

Pokladňa tento článok na tuning pre S3A.

Osobitne by som sa pozrieť na toto, aj keď jeho kategorizované podľa pole:

Možno bude potrebné vykonať starostlivé vyladenie na zníženie rizika uteká pamäť, a to najmä v prípade, ak údaje je nárazníkový v pamäti. Tam sú počet parametrov, ktoré môžu byť naladený:

Celkový počet vlákien k dispozícii v súborovom systéme pre údajov obrázky alebo akékoľvek ďalšie v poradí súborový systém v prevádzke. Toto je stanovené v fs.s3a.vlákna.max.

Počet operácií, ktoré môže byť zaradená na vykonanie, očakávajúc niť. Toto je nastavený v fs.s3a.max.celkom.úlohy.

Počet kvádrov, ktorý jediný výstupný prúd môže mať aktívne (to je, nahrané niť, alebo v poradí v súborovom systéme vlákno frontu). Toto je nastavený v fs.s3a.rýchlo.nahrať.aktívna.bloky.

Čas, ktorý nečinného vlákno môže zostať v vlákno bazén pred ním je na dôchodku. Toto je nastavený v fs.s3a.vlákna.keepalivetime.

Myslím, že môžete nájsť zníženie počtu závitov sa odstrániť pamäťovú tlak.

Som tiež naznačujú, naladíte fs.s3a.fast.upload.active.blocks to bude tiež zmierniť pamäť tlak. Myslím, že zníženie niť počítať by mal byť váš prvý krok ako 100 je trochu agresívne. Pravdepodobne obmedzené na šírku pásma a extra vlákna nie je pravdepodobné, že robí niečo, ale náročné na pamäť.

2021-11-28 12:08:19

Viete, čo vodič nite sú pre? Ak chápem správne konfiguračné vlákna by mali byť pre pracovníkov. Aké sú ovládače vlákien?
Ofer Eliassaf

Pozrite sa na s3 autora dokumentácie.(Nie je 100% isté, ako to, ale dobré miesto, kde sa dozviete o s3 & spark) Odkaz nižšie. To vyvoláva predstavu, že súbory sú oznámiť vodičovi, a že sú odhodlaní. Nemôžeme vedieť, je to rovnaké pre tento súbor písanie, ale zdá sa logické, ako vodič je len jeden, ktorý je vedomý pracovných podarilo/nepodarilo. Nechcel som nájsť smoking gun toto tvrdenie za pravdivé, ale zdá sa rozumné/hodnoverné. github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

To by potom tiež zmysel, prečo použitím 100 vlákna na pracovníka mohli skončiť s 5000 vlákien vo vodiča a prečo opäť by ste mali zvážiť používanie číslo, ktoré nebude pridať toľko tlak na vodiča. (znížiť niť počítať)
Matt Andruff

pozrite sa na odpoveď od @Stevel - to je známe hadoop bug so staršími verziami systému autora!
Ofer Eliassaf

Veľmi vám ďakujem za ping mňa.
Matt Andruff

V iných jazykoch

Táto stránka je v iných jazykoch

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