2017-05-30 7 views
7

मेरा जावा एप्लिकेशन मैपर पर चलता है और क्यूबोल एपीआई का उपयोग करके बाल प्रक्रियाएं बनाता है। एप्लिकेशन बाल qubole queryIDs स्टोर करता है। मुझे बाहर निकलने से पहले मारने के संकेत और शटडाउन बाल प्रक्रियाओं को रोकने की जरूरत है। hadoop job -kill jobId और yarn application -kill applicationId आदेश सिगकिल तरीके से नौकरी की हत्या कर रहे हैं, मुझे नहीं पता कि शट डाउन को कैसे रोकें। क्या नौकरी को किसी भी तरह से मारना या हद तक कॉन्फ़िगर करना संभव है ताकि आवेदन को बंद करने का अवसर मिल सके?हडूप नौकरी को मारने के लिए कैसे करें/हड़पने वाली नौकरी-किल '

एप्लिकेशन स्थानीय रूप से चलते समय शटडाउनहूक का उपयोग करके शटडाउन को सफलतापूर्वक रोकता है, मैपर कंटेनर में नहीं और इसकी बाल प्रक्रियाओं को मारने में सक्षम है।

कृपया सुझाव दें कि मैपर में चलते समय शटडाउन को कैसे रोकें, या शायद मैं कुछ गलत कर रहा हूं?

+0

शटडाउनहूक के बारे में निष्पादित नहीं किया जा रहा है, यह अपेक्षा की जाती है कि आवेदन सिगकिल के साथ मारा जाता है, (देखें: https://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal- इन-जावा)। मुझे विश्वास नहीं है कि आप लिंक में उल्लिखित सिगकिल को "संभाल" सकते हैं, आप नौकरी की स्थिति की निगरानी कर सकते हैं। जहां तक ​​मुझे पता है कि कोई उपकरण अब तक नौकरियों के "सुंदर शटडाउन" की अनुमति नहीं देता है। – Adonis

उत्तर

2

सिगकिल अदम्य है और कोई प्रक्रिया इसे पकड़ नहीं सकती है। न तो आपका जावा एप्लिकेशन, न तो JVM स्वयं ... वास्तव में, यह प्रक्रिया प्रक्रिया में नहीं भेजा गया है। बिना किसी देरी के सभी प्रक्रिया संसाधनों को नष्ट करने के लिए कर्नेल को प्रत्यक्ष आदेश के रूप में और अधिक विचार करें।

man 7 signal से:

संकेतों SIGKILL और SIGSTOP, पकड़ा नहीं जा सकता है अवरुद्ध, या नजरअंदाज कर दिया।

यह मूल मूल कर्नेल सुविधा है, आप इसे बाईपास नहीं कर सकते हैं।

भी ध्यान रखें कि करने के लिए Prabhu(2015-07-15)how to kill hadoop jobs पर अनुसार: निम्न आदेश का

उपयोग मूल्यह्रास हुआ है

hadoop job -list 
hadoop job -kill $jobId 

mapred job -list 
mapred job -kill $jobId 
उपयोग करने पर विचार

यह Apache Hadoop - Deprecated API Documentation

दुर्भाग्यवश, वर्तमान mapred Command Documentation के अनुसार यह सत्यापित नहीं होता है कि आप नौकरी समाप्त करने के लिए भेजे गए सिग्नल के प्रकार को नियंत्रित कर सकते हैं।

+0

तो मैं नौकरी समाप्त करने के लिए भेजे गए सिग्नल के प्रकार को नियंत्रित नहीं कर सकता और सुन्दरता से बंद नहीं कर सकता। – leftjoin

+0

खैर, मैं यह नहीं कहता कि आप नहीं कर सकते हैं, लेकिन स्पष्ट रूप से ऐसा करने के तरीके मानक नहीं हैं और इसमें बनाए रखने के लिए बहुत कुछ कोड/स्क्रिप्ट शामिल होंगे ... संभवतः एक DIY समाधान में समाप्त होता है। – Fabien

संबंधित मुद्दे