无法在Docker容器中启动Spark驱动程序

无法在Docker容器中启动Spark驱动程序,docker,apache-spark,amazon-elastic-beanstalk,Docker,Apache Spark,Amazon Elastic Beanstalk,我有一个docker容器,其中包含一个启动spark驱动程序的java应用程序。它连接到spark群集并提交结构化流媒体应用程序 当我使用--networkhost参数或--hostname 10.X.X.X参数在主机模式下运行docker时,一切正常。但是,由于我使用elastic beanstalk运行应用程序,因此无法修改用于启动容器的docker命令。此外,没有使用elastic beanstalk更改网络模式或主机名的选项 当我在没有这些参数的情况下运行docker时,docker无法

我有一个docker容器,其中包含一个启动spark驱动程序的java应用程序。它连接到spark群集并提交结构化流媒体应用程序

当我使用
--networkhost
参数或
--hostname 10.X.X.X
参数在主机模式下运行docker时,一切正常。但是,由于我使用elastic beanstalk运行应用程序,因此无法修改用于启动容器的docker命令。此外,没有使用elastic beanstalk更改网络模式或主机名的选项

当我在没有这些参数的情况下运行docker时,docker无法启动,出现以下异常:

Caused by: java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries (starting from 37878)! Consider explicitly setting the appropriate port for the service 'sparkDriver' (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.
at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_172]
at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.8.0_172]
at sun.nio.ch.Net.bind(Unknown Source) ~[na:1.8.0_172]
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[na:1.8.0_172]
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:128) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1283) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:989) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:254) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:364) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) ~[news-ml-IT-148-2.jar:IT-148-2]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138) ~[news-ml-IT-148-2.jar:IT-148-2]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_172]
我尝试了以下方法:

  • 更新/etc/hosts
  • 更新/etc/hostname
  • 设置spark.driver.host
  • 设置spark.driver.port
  • 设置$HOSTNAME环境变量
  • 设置$SPARK\u LOCAL\u IP环境变量
  • 设置$SPARK\u PUBLIC\u DNS环境变量
  • 几乎所有以上的组合

  • 不幸的是,我无法使用
    hostname
    命令设置主机名,因为这需要SYS_ADMIN功能(docker容器运行时没有该功能)。我无法添加该功能,因为我无法更改用于运行docker容器的命令(即使可以,我也不想更改)。我意识到在一个有弹性的豆茎中运行火花驱动程序有点愚蠢。但是,我想维护此功能,以尽量减少需要进行的更改(并尽快将其发布)-我可以做些什么才能使其正常工作?

    您是否尝试使用
    spark.driver.port
    ?@RahulSharma将端口显式设置为spark submit?是的-我已更新了问题以包含此内容。