首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache火花网络端口配置

Apache火花网络端口配置
EN

Stack Overflow用户
提问于 2014-09-19 16:16:52
回答 1查看 3.6K关注 0票数 6

当Apache在独立集群模式下运行时,它使用多个端口在驱动程序和执行者/工作人员之间进行不同类型的网络通信。

在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中的套接字权限,以便它能够与执行者/工作人员进行通信?

编辑我在tomcat方面遇到的错误是:

代码语言:javascript
复制
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]
EN

回答 1

Stack Overflow用户

发布于 2015-08-24 15:25:45

客户端端口通常在运行时动态确定。

服务器端口是由初始客户端请求连接到的端口,在处理初始请求时,连接将“完成”,其中包括打开请求机器上的“客户端”端口以获取应答信息。通常,此客户端端口嵌入到初始请求中,并从客户端操作系统中配置的范围(或者至少是客户端网络堆栈的tcp层)中提取。

如果可以将客户端配置为只提供一个端口,则可能会导致问题,因为当您运行两个客户端程序实例时,后续实例将无法从服务器端口打开其输入,而第一个客户端将获得两个客户端请求的响应。

当您看到服务器未能打开客户端(响应)端口时,您可能需要检查(按此顺序)。

  1. 从服务器到客户端的网络路径(它可以不同于从客户机到服务器的路径)。如果没事的话..。
  2. 客户端防火墙配置。可能是过度狂热的防火墙配置可能会阻塞请求,通过阻塞客户端端口范围来完成客户端连接请求。
  3. 客户端软件/系统配置。虽然非常罕见,但有时人们会将其系统配置为将客户端端口置于可以支持的范围之外(这似乎不是您的情况)。通常是65535。

很可能你有一个花园的各种网络问题,但它可能是一个防火墙问题(或过度狂热的病毒扫描器/防火墙解决方案)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25938270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档