में प्रति कार्य CPUs की संख्या मुझे spark.task.cpus
पैरामीटर समझ में नहीं आता है। ऐसा लगता है कि एक "कार्य" निष्पादक के भीतर, "थ्रेड" या "प्रक्रिया" से मेल खाता है। मान लीजिए मैं करने के लिए 2.स्पार्क
"spark.task.cpus" सेट है कि कैसे एक धागा दो CPUs एक साथ उपयोग कर सकते हैं? क्या इसे ताले की आवश्यकता नहीं हो सकती है और सिंक्रनाइज़ेशन समस्याओं का कारण बन सकता है?
मैं तैनात/निष्पादक/निष्पादक.scala में
launchTask()
फ़ंक्शन देख रहा हूं, और मुझे यहां "प्रति कार्य cpus की संख्या" की कोई धारणा नहीं दिखाई दे रही है। तो स्पार्क अंततः स्टैंडअलोन मोड में एक से अधिक सीपीयू को आवंटित करता/करती है?
मैं जोड़ना होगा कि यह सब 'CPUS_PER_TASK' के रूप में स्रोत से अधिक प्रयोग किया जाता है, हालांकि यह वास्तव में (एक हार्ड सीमा की तुलना में अधिक संसाधनों के उपयोग संकेत) क्रम पर लागू नहीं किया जाता – zero323
की सहायता से आप एक काम आंतरिक रूप से parallelized किया जा सकता है किसी भी उदाहरण है ? @ zero323, CPUS_PER_TASK का उपयोग बहुत उच्च स्तर शेड्यूलिंग सामान में किया जाता है, यह निष्पादक को कभी नहीं पारित किया जा रहा है। तो, मेरा सवाल यह है कि "हम कैसे सुनिश्चित करते हैं कि एक कार्य spark.task.cpus कोर प्राप्त करता है जिसने अनुरोध किया है?" – smz
सबसे आसान तरीका (बहुत उपयोगी नहीं): 'rdd.mapPartitions (_। ToVector.par.map (foo)) '। और अपने दूसरे प्रश्न का उत्तर देने के लिए - हम बस नहीं करते हैं। यह केवल इतना कहता है कि यदि आप चार निष्पादक कोर घोषित करते हैं, और 'spark.task.cpus' बराबर 2 घोषित करते हैं तो यह केवल 2 कार्य शुरू कर सकता है। लेकिन भौतिक कोर आवंटन या इसी तरह की चीजें हैं। स्पार्क में 'कोर' सिर्फ एक धागा है। – zero323