通过SOCKS代理连接到spark

Tob*_*ber 7 ssh proxy scala apache-spark

TL; DR如何通过SOCKS代理将本地驱动程序连接到spark群集.

我们有一个现场火花群集,它位于阻止大多数端口的防火墙后面.我们有ssh访问权限,所以我可以创建一个SOCKS代理ssh -D 7777 ....

当我的浏览器使用代理时,它适用于浏览web-UI,但我不知道如何让本地驱动程序使用它.

到目前为止我有这个,显然没有配置任何代理:

val sconf = new SparkConf()
  .setMaster("spark://masterserver:7077")
  .setAppName("MySpark")
new SparkContext(sconf)
Run Code Online (Sandbox Code Playgroud)

在抛出异常之前,会将这些消息记录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.
Run Code Online (Sandbox Code Playgroud)

Ric*_*itz 2

您最好的办法可能是将本地端口转发到远程 7077,然后setMaster("spark://localhost:nnnn")其中 nnnn 是您转发的本地端口。

要执行此操作,请使用ssh -L(而不是-D)。我不能保证这会起作用,或者如果它起作用,它会继续起作用,但至少它可以让您免于使用该端口的实际代理。可能会破坏它的事情大多是初始连接可能触发的辅助连接。我还没有对此进行测试,但除非有辅助连接,否则原则上它应该可以工作。

另外,这并不能回答您问题的 TL;DR 版本,但由于您具有 SSH 访问权限,因此它更有可能起作用。