अपाचे स्पार्क s3α committer - धागा ढेर स्मृति से बाहर के मुद्दों

0

सवाल

मैं वास्तव में यहाँ कुछ मदद की जरूरत:

हम का उपयोग कर रहे हैं Spark3.1.2 का उपयोग कर स्टैंडअलोन क्लस्टर. के बाद से हम शुरू कर दिया है का उपयोग कर s3α निर्देशिका committer, हमारे चिंगारी नौकरियाँ स्थिरता और प्रदर्शन में काफी वृद्धि हुई!

हाल ही में हालांकि हम कर रहे हैं पूरी तरह से चकित समस्या निवारण इस s3α निर्देशिका committer मुद्दे दिनों के लिए, और आश्चर्य है कि अगर तुम किसी भी विचार क्या हो रहा है?

हमारे चिंगारी नौकरियों में विफल क्योंकि जावा की OOM (या बल्कि प्रक्रिया की सीमा) त्रुटि:

 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)

चिंगारी थ्रेड डंप से पता चलता है 5000 से अधिक committer धागे पर चिंगारी ड्राइवर! यहाँ एक उदाहरण है:

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 

इस पर विचार कर रहा है कि हमारी सेटिंग्स की अनुमति नहीं 100 से अधिक धागे... या हम कुछ समझ में नहीं आता...

यहाँ हमारे विन्यास और सेटिंग्स:

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

हमने कोशिश की अलग अलग संस्करणों के Hadoop के स्पार्क बादल लाइब्रेरी, लेकिन इस मुद्दे को लगातार एक ही.

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

हम वास्तव में खुशी होगी अगर आप बात कर सकते हैं हमें सही दिशा में

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

सबसे अच्छा जवाब

3

यह हो जाएगा HADOOP-16570 S3Α committers रिसाव धागे/उठाती OOM पर नौकरी/कार्य के लिए प्रतिबद्ध बड़े पैमाने पर

स्थानांतरित करने के लिए hadoop-3.3.0 बायनेरिज़ के लिए तय है । आदर्श रूप में करने के लिए 3.3.1 को ठीक करने के लिए कुछ अन्य मुद्दों, विशेष रूप से डुप्लिकेट jobIDs से आ रही चिंगारी. नहीं यकीन है कि कैसे में वापस दूर CDH विज्ञप्ति कि ठीक चला गया, मैं बाहर काम कर सकता है अगर तुम सच में करने की जरूरत है अब. नहीं CDH6.x, निश्चित रूप से

2021-11-28 12:13:50

बहुत बहुत धन्यवाद! वास्तव में हम सब कुछ किया नहीं था मदद.
Ofer Eliassaf

हमारी समस्या अब है की तलाश के लिए सही ड्राइवरों - जहां हम कर सकते हैं लाने के लिए स्पार्क बादल के साथ जार प्रासंगिक संस्करण? जाएगा इस ड्राइवर के लिए काम चिंगारी 3.1.2: mvnrepository.com/artifact/org.apache.spark/... ??
Ofer Eliassaf

स्पार्क बादल जार होना चाहिए एक के लिए अपने स्पार्क distro; यह सिर्फ एक पतली बाध्यकारी वर्ग
stevel

हाय, हम कोशिश कर रहे हैं सक्षम करने के लिए इस पर चिंगारी 3.1.2 आ रहा है जो के साथ बंडल हैडूप 3.2. यह सुरक्षित प्रदान करने के लिए स्पार्क, hadoop-बादल के लिए 3.3.1 के साथ एक साथ Hadoop 3.2 पुस्तकालयों? (हम कोशिश कर रहे हैं के साथ जाने के लिए unbundled संस्करण और कुछ diffuculties के साथ Zookeeper क्यूरेटर पुस्तकालयों बेमेल करने के लिए Guava. एक तेजी से ट्रैक करने के लिए किया जाएगा जाने के साथ बंडल और बस जोड़ने के comitter के 3.3.1. यह काम करेगा?). धन्यवाद!
Ofer Eliassaf

का उपयोग स्पार्क, hadoop-बादल-3.1.2; आप की आवश्यकता होगी एक पूरा सेट के hadoop-3.3.x सही सिंक में. या backport के committer पैच केवल hadoop के लिए 3.2
stevel

इस स्पार्क, hadoop-बादल-3.1.2 गया है और इस बग में यह (और यह एक बुरा सपना था इसे खोजने के लिए के बाद से यह में नहीं है सरकारी मावेन विज्ञप्ति). क्या हम समाप्त कर रही है: विकल्प 1 (हमारे वर्तमान सेटअप) का उपयोग करें: चिंगारी 3.1.2 अनबंडल किया गया संस्करण है । हम जोड़ा गया हैडूप 3.3.1 बायनेरिज़ जोड़ा स्पार्क, hadoop-बादल-3.2.0 को हल करने के लिए committer मुद्दा है । विकल्प 2 (जो हम पर विचार): लाने Spark3.1.2 बंडल (साथ आता है जो Hadoop 3.2) जोड़ने और स्पार्क, hadoop-बादल-3.2.0 के लिए फिक्सिंग comitter issu. बेहतर है, जो आपकी राय में?
Ofer Eliassaf

धागा रिसाव में hadoop-एडब्ल्यूएस; यह केवल होना चाहिए hadoop-* जो अद्यतन करने की जरूरत है.
stevel
1

चेकआउट इस लेख पर ट्यूनिंग के लिए S3Α.

विशेष रूप से मैं इस पर देखो, भले ही इसके अंतर्गत वर्गीकृत सरणी:

हो सकता है आप की जरूरत प्रदर्शन करने के लिए सावधान ट्यूनिंग करने के लिए जोखिम को कम करने के लिए स्मृति से बाहर चल रहा है, खासकर यदि डेटा बफर स्मृति में. वहाँ रहे हैं एक संख्या पैरामीटर, जो देखते जा सकता है:

कुल संख्या के धागे में उपलब्ध फाइल सिस्टम के लिए डेटा अपलोड या किसी भी अन्य पंक्तिबद्ध फाइल सिस्टम ऑपरेशन है । इस सेट में fs.s3α.धागे । मैक्स ।

आपरेशन की संख्या कर सकते हैं, जो पंक्तिबद्ध हो निष्पादन के लिए इंतजार कर, एक धागा । इस सेट में fs.s3α.मैक्स । कुल.कार्य ।

ब्लॉक की संख्या जो एक एकल उत्पादन स्ट्रीम कर सकते हैं सक्रिय (है कि है, अपलोड किया जा रहा द्वारा एक धागा या पंक्तिबद्ध फाइल सिस्टम में धागा कतार). इस सेट में fs.s3α.तेजी से.अपलोड करें.सक्रिय.ब्लॉक.

समय की लंबाई है कि एक निष्क्रिय थ्रेड में रह सकते हैं, धागा पूल यह पहले सेवानिवृत्त है. इस सेट में fs.s3α.धागे । keepalivetime.

मुझे लगता है कि तुम मिल सकता है की संख्या को कम करने धागे को हटा देगा स्मृति दबाव है ।

मैं यह भी सुझाव है कि आप धुन fs.s3a.fast.upload.active.blocks यह भी कम स्मृति का दबाव है. मुझे लगता है कि कम थ्रेड गिनती अपना पहला कदम होना चाहिए के रूप में 100 के एक छोटे से आक्रामक है. आप कर रहे हैं की संभावना छाया पर बैंडविड्थ और अतिरिक्त धागे की संभावना नहीं कर रही है, लेकिन कुछ भी लेने वाली स्मृति.

2021-11-28 12:08:19

क्या आप जानते हैं कि क्या चालक धागे के लिए कर रहे हैं? अगर मैं सही ढंग से समझते विन्यास धागे होना चाहिए के लिए श्रमिकों. क्या ड्राइवर हैं धागे के लिए?
Ofer Eliassaf

पर एक नज़र रखना s3 committer प्रलेखन.(नहीं 100% के रूप में ही है, लेकिन इस के लिए एक अच्छी जगह के बारे में जानने s3 और स्पार्क) लिंक नीचे है. यह उठता है कि विचार फ़ाइलें सूचित कर रहे हैं, ड्राइवर के लिए और है कि वे कर रहे हैं के लिए प्रतिबद्ध है. हम नहीं कर सकते पता है कि यह एक ही है के लिए इस फ़ाइल लेखन, लेकिन यह तार्किक लगता है के रूप में, ड्राइवर केवल एक ही है कि के बारे में पता नौकरी सफल/विफल रहा है । मैं नहीं मिल रहा था, एक धूम्रपान बंदूक का दावा के रूप में यह सच है, लेकिन यह उचित लगता है/प्रशंसनीय है । github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

यह भी तो समझ बनाने के लिए का उपयोग क्यों 100 प्रति धागे कार्यकर्ता के साथ अंत सकता 5000 धागे में ड्राइवर और क्यों फिर से तुम पर विचार करना चाहिए का उपयोग करेगा कि एक नंबर जोड़ने के लिए, नहीं के रूप में ज्यादा दबाव के ड्राइवर पर. (कम थ्रेड गिनती)
Matt Andruff

जवाब को देखने से @Stevel - यह एक ज्ञात हैडूप बग के पिछले संस्करणों के साथ के committer!
Ofer Eliassaf

के लिए बहुत बहुत धन्यवाद pinging ।
Matt Andruff

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

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

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में