2014-09-19 21 views
5

Khi Apache Spark chạy ở chế độ cụm độc lập, nó sử dụng một số cổng cho các loại giao tiếp mạng khác nhau giữa các trình điều khiển và người thực thi/công nhân khác nhau.Cấu hình cổng mạng Apache Spark

Trong bản phát hành tia lửa 1.1.0, chúng đã thêm một số thuộc tính để cho phép định cấu hình các cổng được sử dụng và cũng đã phát triển hướng dẫn cho: http://spark.apache.org/docs/latest/security.html#configuring-ports-for-network-security Nhưng có vẻ như chỉ có thể điều khiển các cổng máy chủ, tức là những cổng đang được nghe.

Tuy nhiên, tôi không tìm thấy cách tôi có thể kiểm soát các cổng của khách hàng mà một người thực thi/nhân viên phát tia lửa sẽ mở để kết nối với chương trình điều khiển. Chương trình điều khiển của tôi chạy trong tomcat và tôi phải rất cụ thể trong catalina.policy của tôi để chỉ cho phép các địa chỉ/cổng IP cụ thể. Vì vậy, có cách nào tôi có thể kiểm soát tất cả các cổng được sử dụng bởi Spark để cấu hình quyền truy cập socket trong catalina.policy của một tomcat chạy chương trình trình điều khiển để nó có thể giao tiếp với người thực thi/người lao động không? Không.

EDIT Các lỗi Tôi nhận đứng về phía tomcat là:

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] 

Trả lời

1

Một cổng khách hàng thường được xác định tự động, khi chạy.

Cổng máy chủ là cổng được kết nối với yêu cầu máy khách ban đầu, vì yêu cầu ban đầu đó đang được xử lý, kết nối sẽ được "hoàn thành" (trong số những thứ khác) sẽ mở cổng "khách" trên yêu cầu máy để nhận thông tin trả lời. Thông thường, cổng máy khách này được nhúng trong yêu cầu ban đầu và được lấy từ một phạm vi được cấu hình trong hệ điều hành của máy khách (hoặc ít nhất, lớp tcp của ngăn xếp mạng của máy khách).

Nếu có thể định cấu hình ứng dụng khách để chỉ cung cấp một cổng, có thể sẽ giới thiệu sự cố vì khi bạn chạy hai phiên bản chương trình khách, trường hợp tiếp theo sẽ không thể mở đầu vào từ cổng máy chủ và khách hàng đầu tiên sẽ nhận được phản hồi cho cả yêu cầu của khách hàng.

Như bạn đang nhìn thấy máy chủ của bạn thất bại trong việc mở một cổng khách hàng (phản ứng), bạn có thể cần phải kiểm tra (theo thứ tự này)

  1. Đường dẫn mạng từ máy chủ cho khách hàng (nó có thể khác nhau hơn từ máy khách đến máy chủ). Nếu không sao ...
  2. Cấu hình tường lửa của máy khách. Có thể cấu hình tường lửa quá mức có thể đang chặn các yêu cầu để kết thúc yêu cầu kết nối máy khách bằng cách chặn phạm vi cổng ứng dụng khách.
  3. Cấu hình phần mềm/hệ thống của khách hàng. Trong khi cực kỳ hiếm, đôi khi mọi người cấu hình hệ thống của họ để đặt các cổng của khách hàng bên ngoài phạm vi của những gì có thể được hỗ trợ (điều này dường như không phải là trường hợp của bạn). Thông thường, nó là 65535.

Tỷ lệ là bạn gặp sự cố mạng về vườn, nhưng có thể là sự cố tường lửa (hoặc giải pháp quét vi rút/tường lửa quá mức).