如何在Spark应用程序的EMR主节点上运行http服务器

问题描述 投票:0回答:1

我有一个在AWS EMR 5.28.0上运行的Spark流应用程序(Spark 2.4.4)。在主节点上的驱动程序应用程序中,除了设置Spark Streaming作业之外,我还正在运行可以查询驱动程序应用程序数据的http服务器(Akka-http 10.1.6),我将端口绑定到端口6161,如下所示:] >

val bindingFuture: Future[ServerBinding] = Http().bindAndHandle(myapiroutes, "127.0.0.1", 6161)

try {
      bindingFuture.map { serverBinding =>
        log.info(s"AlertRestApi bound to ${serverBinding.localAddress}")
      }
    } catch {
      case ex: Exception  => {
        log.error(s"Failed to bind to 127.0.0:6161")
        system.terminate()
      }
    }

然后我开始火花流:

ssc.start()

当我在本地Spark上测试时,我可以访问http://localhost:6161/myapp/v1/data并从Spark Streaming中获取数据,到目前为止一切都很好。

但是,当我在AWS EMR中运行此应用程序时,我无法访问端口6161。我将SSH插入驱动程序节点并尝试卷曲我的URL,它给我错误消息:

[hadoop@ip-xxx-xx-xx-x ~]$ curl http://xxx.xx.xx.x:6161/myapp/v1/data

curl: (7) Failed to connect to xxx.xx.xx.x port 6161: Connection refused

当我查看驱动程序节点中的日志时,确实看到端口已绑定(为什么主机显示0:0:0:0:0:0:0:0:0?我不知道,那是开发测试中的一种方法,并且有效,我看到相同的日志并能够访问该URL):

20/04/13 16:53:26 INFO MyApp: MyRestApi bound to /0:0:0:0:0:0:0:0:6161

所以我的问题是,我应该怎么做才能访问驱动程序节点上端口6161上的api?我知道可能会涉及到纱线资源管理器,但是我对纱线资源管理器一无所知,无法指出要在哪里进行调查。

请帮助。谢谢

我有一个在AWS EMR 5.28.0上运行的Spark流应用程序(Spark 2.4.4)。在主节点上的驱动程序应用程序中,除了设置Spark Streaming作业外,我还在运行http服务器(...

apache-spark http yarn amazon-emr
1个回答
0
投票

您提到主机名是127.0.0.1还是0.0.0.0?

© www.soinside.com 2019 - 2024. All rights reserved.