當Apache Spark以獨立集羣模式運行時,它使用多個端口用於驅動程序和執行程序/工作程序之間的不同類型的網絡通信。Apache Spark網絡端口配置
在spark版本1.1.0中,他們添加了許多屬性來允許配置使用的端口,併爲此開發了一個指南:http://spark.apache.org/docs/latest/security.html#configuring-ports-for-network-security但是似乎只能控制服務器端口,即正在監聽的端口。
但是,我沒有找到我可以控制客戶端端口的方式,一個火花執行器/工作者將打開連接到驅動程序。我的驅動程序在tomcat中運行,我必須在我的catalina.policy中非常具體,只允許特定的IP地址/端口。
那麼,有沒有一種方法可以控制Spark使用的所有端口來配置運行驅動程序的tomcat的catalina.policy中的套接字權限,以便它能夠與執行程序/工作者進行通信?
EDIT 我在Tomcat側得到的錯誤是:
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]