TL; DR 如何通过SOCKS代理将本地驱动程序连接到spark群集。
我们有一个现场火花群集,它位于阻止大多数端口的防火墙后面。我们有ssh访问权限,因此我可以使用ssh -D 7777 ...
创建SOCKS代理。
当我的浏览器使用代理时,它可以正常浏览web-UI,但我不知道如何让本地驱动程序使用它。
到目前为止,我有这个,显然没有配置任何代理:
val sconf = new SparkConf()
.setMaster("spark://masterserver:7077")
.setAppName("MySpark")
new SparkContext(sconf)
在抛出异常之前,会将这些消息记录16次。
15/01/20 14:43:34 INFO Remoting: Starting remoting
15/01/20 14:43:34 ERROR NettyTransport: failed to bind to server-name/ip.ip.ip.ip:0, shutting down Netty transport
15/01/20 14:43:34 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.
15/01/20 14:43:34 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
15/01/20 14:43:34 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.
15/01/20 14:43:34 INFO RemoteActorRefProvider$RemotingTerminator: Remoting shut down.
答案 0 :(得分:2)
您的最佳镜头可能是将本地端口转发到远程7077 ,然后setMaster("spark://localhost:nnnn")
,其中nnnn是您转发的本地端口。
要执行此操作,请使用ssh -L
(而不是-D
)。
我无法保证这将起作用,或者如果它能够工作,它将继续工作,但至少它将使您无需使用这个端口的实际代理。可能会破坏它的东西,主要是初始连接可能触发的辅助连接。我还没有对此进行测试,但除非有二级连接,否则原则上它应该有效。
此外,这不能回答你问题的TL版本,但是由于你有SSH访问权限,它更有可能工作。