मेरी स्पार्क नौकरी में शफल होने पर विफल रहता है और कहता है "डिवाइस पर कोई स्थान नहीं छोड़ा गया", लेकिन जब मैं df -h
चलाता हूं तो यह कहता है कि मेरे पास खाली स्थान शेष है! ऐसा क्यों होता है, और मैं इसे कैसे ठीक कर सकता हूं?"डिवाइस पर कोई स्थान नहीं छोड़ा गया" के साथ नौकरी विफल क्यों होती है, लेकिन डीएफ अन्यथा कहता है?
उत्तर
आपको df -i
पर भी निगरानी करने की आवश्यकता है जो दिखाता है कि कितने इनोड उपयोग में हैं।
on each machine, we create M * R temporary files for shuffle, where M = number of map tasks, R = number of reduce tasks.
https://spark-project.atlassian.net/browse/SPARK-751
आप वास्तव में लगता है कि डिस्क inodes से बाहर चल रहे हैं समस्या आप कर सकते हैं ठीक करने के लिए करते हैं:
- घटाएँ विभाजन (
shuffle = false
साथcoalesce
देखें)। - कोई "फ़ाइलों को समेकित करके" संख्या को ओ (आर) में छोड़ सकता है। चूंकि अलग-अलग फ़ाइल-सिस्टम अलग-अलग व्यवहार करते हैं, यह अनुशंसा की जाती है कि आप
spark.shuffle.consolidateFiles
पर पढ़ लें और https://spark-project.atlassian.net/secure/attachment/10600/Consolidating%20Shuffle%20Files%20in%20Spark.pdf देखें। - कभी-कभी आप आसानी से पाते हैं कि एफएस का समर्थन करने वाले इनोडों की संख्या बढ़ाने के लिए आपको अपने देवोपों की आवश्यकता है।
संपादित
समेकन फ़ाइलें संस्करण 1.6 के बाद से चिंगारी से हटा दिया गया। https://issues.apache.org/jira/browse/SPARK-9808
कुछ अन्य समाधान:
स्पष्ट रूप intermidiate shuffe फ़ाइलों को हटाने। यदि आप बाद में गणना के लिए आरडीडी रखने के लिए नहीं चाहते हैं, तो आप .unpersist() पर कॉल कर सकते हैं जो हटाने के लिए इंटरमीडिएट शफल फ़ाइलों को ध्वजांकित करेगा (आप भी किसी भी को rdd चर को फिर से असाइन कर सकते हैं)।
अधिक श्रमिकों का उपयोग करें, और अधिक श्रमिक औसत इंटरमीडिएट पर्याप्त फ़ाइल आवश्यक/कार्यकर्ता की संख्या को कम कर देंगे। "डिवाइस पर कोई स्थान छोड़ दिया" इस पर त्रुटि के बारे में
अधिक धागा databricks: https://forums.databricks.com/questions/277/how-do-i-avoid-the-no-space-left-on-device-error.html
डिफ़ॉल्ट Spark
तक मध्यवर्ती डाटा स्टोर करने /tmp
निर्देशिका का उपयोग करता है। यदि आपके पास वास्तव में पर कुछ डिवाइस पर स्थान छोड़ा गया है - तो आप फ़ाइल SPARK_HOME/conf/spark-defaults.conf
फ़ाइल बनाकर और लाइन जोड़कर इसे बदल सकते हैं। यहां पर SPARK_HOME
जहां भी आप स्पार्क इंस्टॉल के लिए रूट निर्देशिका है।
spark.local.dir SOME/DIR/WHERE/YOU/HAVE/SPACE
मुझे एक जैसी समस्या का सामना करना पड़ा। डिफ़ॉल्ट रूप से, स्पार्क इंटरमीडिएट फ़ाइलों को सहेजने के लिए "/ tmp" का उपयोग करता है। जब नौकरी चल रही है, तो आप "/" बढ़ते हुए fs के उपयोग की गई जगह को देखने के लिए "df -h" टैब कर सकते हैं। जब देव की जगह समाप्त हो जाती है, तो यह अपवाद फेंक दिया जाता है। समस्या को हल करने के लिए, मैंने SPARK_HOME/conf/spark_defaults.conf में SPARK_LOCAL_DIRS को पर्याप्त स्थान छोड़कर एक fs में पथ के साथ सेट किया है।
इस त्रुटि के लिए एक अन्य परिदृश्य:
- मैं एक चिंगारी से काम जो डेटा (~ 150GB और ~ 100GB) के दो स्रोतों का उपयोग करता है और एक आंतरिक में शामिल होने करता है, कई समूह द्वारा, फ़िल्टरिंग, और मानचित्रण है संचालन।
मेरा काम फेंक त्रुटि "डिवाइस पर कोई स्थान छोड़ दिया":
- मैं चिंगारी EC-2 स्क्रिप्ट का उपयोग
समस्या एक 20 नोड्स (r3.2xlarge) चिंगारी क्लस्टर बनाया। जैसा कि आप देख सकते हैं कि मेरे काम को इतने सारे शफल करने की आवश्यकता है, इसलिए इस समस्या का सामना करने के लिए मैंने शुरुआत में 20-नोड्स का उपयोग किया है और फिर 40-नोड्स तक बढ़ा दिया है। किसी भी तरह से समस्या अभी भी हो रही थी। मैं spark.local.dir बदलने जैसे अन्य सभी सामान की कोशिश की, repartitioning, कस्टम विभाजन, और पैरामीटर ट्यूनिंग (संपीड़न, spiling, स्मृति, स्मृति अंश, आदि) के रूप में ज्यादा मैं कर सकता। इसके अलावा, मैंने इंस्टेंस प्रकार r3.2xlarge का उपयोग किया जिसमें 1 x 160 एसएसडी है लेकिन समस्या अभी भी हो रही है।
समाधान:
मैं नोड्स में से एक में प्रवेश किया था, और मार डाला "df -h /" मैं नोड केवल एक EBS मात्रा (8GB) घुड़सवार गया है पाया, लेकिन कोई एसएसडी था (160GB)। तब मैं "ls/dev /" में देखा और एसएसडी जुड़ा था। यह समस्या क्लस्टर में सभी नोड्स के लिए नहीं हो रही थी। त्रुटि "डिवाइस पर कोई स्थान नहीं छोड़ा गया" केवल उन नोड्स के लिए हो रहा है जिनमें एसएसडी घुड़सवार नहीं है। चूंकि वे केवल 8 जीबी (ईबीएस) से निपट रहे हैं और उस ~ 4 जीबी स्पेस में से उपलब्ध था।
मैं एक bash स्क्रिप्ट जो चिंगारी क्लस्टर चिंगारी EC2 स्क्रिप्ट का उपयोग कर तो यह स्वरूपण के बाद डिस्क माउंट शुरूआत बनाया।
- EC2 स्क्रिप्ट क्लस्टर
- MASTER_HOST = get-गुरु $ CLUSTER_NAME
- ssh -ओ StrictHostKeyChecking = नहीं जड़ @ $ MASTER_HOST "सीडी/जड़/चिंगारी/sbin/& & ./slaves शुरू करने के लिए। श mkfs.ext4 -E lazy_itable_init = 0, lazy_journal_init = 0/dev/SDB & & ./slaves.sh -ओ चूक माउंट, noatime, nodiratime/dev/SDB/MNT "
SPARK_HOME में बदलें निर्देशिका, क्योंकि हमें निर्देशिका को देना है जिसमें हमारे काम को सुचारू रूप से चलाने के लिए अधिक जगह उपलब्ध है।
- 1. हडसन त्रुटि के साथ विफल रहता है "डिवाइस पर कोई स्थान नहीं छोड़ा गया है" हालांकि
- 2. IOError: डिवाइस पर कोई स्थान नहीं छोड़ा गया - कौन सा डिवाइस?
- 3. libv4l2: स्ट्रीम चालू करने में त्रुटि: डिवाइस पर कोई स्थान नहीं छोड़ा गया
- 4. अमेज़ॅन पर ईसी 2 उदाहरण और मुझे "डिस्क पर कोई स्थान नहीं छोड़ा गया" के साथ बधाई दी गई है
- 5. पूंछ के लिए स्थायी फिक्स: 'log/development.log' नहीं देख सकता: डिवाइस पर कोई स्थान नहीं छोड़ा गया
- 6. लगभग "डिवाइस पर कोई स्थान नहीं छोड़ा गया" प्राप्त करना। EMR m1.large उदाहरणों पर 10 जीबी डेटा
- 7. पैटर्न मिलान विफल होने पर हास्केल सूची की समझ में कोई त्रुटि क्यों नहीं होती है?
- 8. अनुमानित विफलता की वजह से छोड़ा गया एक जूनिट परीक्षण क्यों छोड़ा गया है?
- 9. खुला() कोई "डिवाइस नहीं है" त्रुटि के साथ लौटाता है, लेकिन ऐसे डिवाइस (लिनक्स)
- 10. डॉकर में 'डिवाइस पर कोई स्थान नहीं छोड़ा गया' त्रुटि को मैं कैसे ठीक कर सकता हूं?
- 11. FileInputStream को बंद करने का तरीका "डिवाइस पर कोई स्पेस नहीं छोड़ा गया" त्रुटि का कारण बन सकता है?
- 12. मेरी SQL क्वेरी विफल क्यों होती है?
- 13. I/O पता स्थान डिवाइस पर मैप किया गया है?
- 14. eglMakeCurrent() EGL_BAD_MATCH के साथ विफल क्यों है?
- 15. विजुअल स्टूडियो सक्रिय टैब छोड़ा गया है?
- 16. स्विफ्ट ऐप सिम्युलेटर पर खुलता है लेकिन डिवाइस पर नहीं
- 17. eglMakeCurrent EGL_BAD_ALLOC के साथ विफल क्यों है?
- 18. AVSpeechSynthesizer सिम्युलेटर पर काम करता है लेकिन डिवाइस पर नहीं
- 19. स्थान सेटिंग सेटिंग्स क्यों शुरू होती है ResolutionForResultActivityResult पर कॉल नहीं कर रहा है?
- 20. "टी के रूप में" त्रुटि क्यों होती है लेकिन (टी) के साथ कास्टिंग त्रुटि नहीं होती है?
- 21. यह कोड javac के साथ संकलित क्यों नहीं है लेकिन ग्रहण में कोई त्रुटि नहीं है?
- 22. mkdir() कहता है कि ऐसी कोई निर्देशिका नहीं है और विफल हो जाती है?
- 23. फाउंडेशन 5.0 में व्यूपोर्ट टैग क्यों बदला गया है? कोई चौड़ाई = डिवाइस चौड़ाई नहीं?
- 24. एंड्रॉइड एडीबी डिवाइस में स्थान पर कोई एसडीकार्ड नहीं है और रूट रूट नहीं है
- 25. क्या फ़ाइल मौजूद और खोलने का कोई तरीका है यदि यह अस्तित्व में नहीं है लेकिन अन्यथा विफल रहता है?
- 26. गलत पोर्ट निर्दिष्ट किया गया था, तो कोई अपवाद नहीं छोड़ा गया है
- 27. आदेश आउटपुट पर पुनरावृत्ति करते समय विफल करने के लिए बैच फ़ाइल क्यों विफल होती है?
- 28. Concoqtion (Coq + MetaOCaml) - क्यों छोड़ा गया?
- 29. आईबी में दिखाया गया कस्टम फ़ॉन्ट लेकिन डिवाइस पर नहीं
- 30. चेतावनी: यह पृष्ठ XML नामस्थान उपसर्ग [टैगनाम] के साथ घोषित के लिए कहता है, लेकिन कोई taglibrary कि नाम स्थान
यह सवाल विषय से हटकर हो सकता है क्योंकि यह प्रोग्रामिंग के बारे में नहीं है प्रकट होता है। –
क्या आपके पास ड्राइव पर खाली स्थान छोड़ा गया है कि स्पार्क टीएमपी फाइलें लिख रहा है? –
@ यूजीन मेवेव्स्की'एलीडबिट रनिंग और समस्या निवारण स्पार्क नौकरियों को एक एसओएफ विषय माना जाता है। यह स्पष्ट रूप से, 2015 – javadba