2014-09-19 12 views
5

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

स्पार्क रिलीज 1.1.0 में उन्होंने पोर्ट्स को कॉन्फ़िगर करने की अनुमति देने के लिए कई गुण जोड़े हैं और इसके लिए एक गाइड भी विकसित किया है: http://spark.apache.org/docs/latest/security.html#configuring-ports-for-network-security लेकिन ऐसा लगता है कि कोई केवल सर्वर पोर्ट को नियंत्रित कर सकता है, यानी सुनवाई की जा रही है।

हालांकि, मुझे क्लाइंट बंदरगाहों को नियंत्रित करने का तरीका नहीं मिला, एक स्पार्क निष्पादक/कर्मचारी एक ड्राइवर कार्यक्रम से कनेक्ट करने के लिए खुल जाएगा। मेरा चालक कार्यक्रम टोमकैट में चलता है और मुझे केवल विशिष्ट आईपी पते/बंदरगाहों को अनुमति देने के लिए मेरे catalina.policy में बहुत विशिष्ट होना चाहिए।

तो, क्या एक तरीका है कि मैं स्पार्क द्वारा उपयोग किए जाने वाले सभी बंदरगाहों को नियंत्रित कर सकता हूं ताकि ड्राइवर प्रोग्राम चलाने वाले टोमकैट के कैटालिना पोलिसी में सॉकेट अनुमतियों को कॉन्फ़िगर किया जा सके ताकि वह निष्पादकों/श्रमिकों के साथ संवाद कर सके?

संपादित त्रुटि मैं बिल्ला तरफ हो रही है:

2014-09-19 16:55:42,437 [New I/O server boss #6] WARN T:[] V:[]o.j.n.c.s.nio.AbstractNioSelector - Failed to accept a connection. 
java.security.AccessControlException: access denied ("java.net.SocketPermission" "<worker IP address>:44904" "accept,resolve") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372) ~[na:1.7.0_67] 
    at java.security.AccessController.checkPermission(AccessController.java:559) ~[na:1.7.0_67] 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[na:1.7.0_67] 
    at java.lang.SecurityManager.checkAccept(SecurityManager.java:1170) ~[na:1.7.0_67] 
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:261) ~[na:1.7.0_67] 
    at org.jboss.netty.channel.socket.nio.NioServerBoss.process(NioServerBoss.java:100) ~[netty-3.6.6.Final.jar:na] 
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) ~[netty-3.6.6.Final.jar:na] 
    at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42) ~[netty-3.6.6.Final.jar:na] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_67] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_67] 
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67] 

उत्तर

1

एक ग्राहक बंदरगाह आम तौर पर कार्यावधि में गतिशील रूप से निर्धारित किया जाता है,।

सर्वर पोर्ट पोर्ट है जो आरंभिक क्लाइंट अनुरोध से जुड़ा हुआ है, क्योंकि प्रारंभिक अनुरोध संभाला जा रहा है, कनेक्शन "समाप्त" होगा (अन्य चीजों के साथ) अनुरोध पर "क्लाइंट" पोर्ट खोलता है उत्तर जानकारी प्राप्त करने के लिए मशीन। आम तौर पर यह क्लाइंट पोर्ट प्रारंभिक अनुरोध में एम्बेडेड होता है, और क्लाइंट के ऑपरेटिंग सिस्टम (या कम से कम, क्लाइंट के नेटवर्क स्टैक की टीसीपी परत) में कॉन्फ़िगर की गई श्रेणी से खींचा जाता है।

यदि कोई क्लाइंट केवल एक बंदरगाह की पेशकश करने के लिए कॉन्फ़िगर कर सकता है, तो शायद यह समस्याएं पेश करेगा क्योंकि जब आप क्लाइंट प्रोग्राम के दो उदाहरण चलाते हैं, तो बाद का उदाहरण सर्वर पोर्ट से अपना इनपुट खोलने में सक्षम नहीं होगा, और पहले ग्राहक को ग्राहक के अनुरोध दोनों के लिए प्रतिक्रिया मिल जाएगी।

आप देख रहे हैं अपने सर्वर एक ग्राहक (प्रतिक्रिया) बंदरगाह खोलने के लिए असफल के रूप में, आप की संभावना की जांच करने की जरूरत है (इस क्रम में)

  1. ग्राहक के लिए सर्वर से नेटवर्किंग पथ (यह अलग हो सकता है क्लाइंट से सर्वर तक की तुलना में)। यदि यह ठीक है ...
  2. क्लाइंट फ़ायरवॉल कॉन्फ़िगरेशन। यह हो सकता है कि क्लाइंट पोर्ट रेंज को अवरुद्ध करके क्लाइंट कनेक्शन अनुरोध को समाप्त करने के लिए एक अति उत्साही फ़ायरवॉल कॉन्फ़िगरेशन अनुरोध अवरुद्ध हो सकता है।
  3. क्लाइंट सॉफ्टवेयर/सिस्टम कॉन्फ़िगरेशन। अत्यंत दुर्लभ होने पर, कभी-कभी लोग अपने सिस्टम को क्लाइंट पोर्ट्स को उस सीमा के बाहर रखने के लिए कॉन्फ़िगर करते हैं जो समर्थित किया जा सकता है (यह आपका मामला प्रतीत नहीं होता है)। आम तौर पर यह 65535.

बाधाओं आप एक बगीचे विविधता नेटवर्किंग मुद्दा है कर रहे हैं, लेकिन यह एक फ़ायरवॉल मुद्दा (या एक ज्यादा वायरस स्कैनर/आग दीवार समाधान) हो सकता है।

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