gpt4 book ai didi

amazon-ec2 - 尝试在具有公共(public) IP 的 EC2 节点上启动 Spark master 时获取 java.net.BindException

转载 作者:行者123 更新时间:2023-12-02 03:23:29 25 4
gpt4 key购买 nike

我正在尝试为 EC2 节点上的独立集群启动 Spark 主机。我使用的 CLI 命令如下所示:


JAVA_HOME=<location of my JDK install> \
java -cp <spark install dir>/sbin/../conf/:<spark install dir>/lib/spark-assembly-1.4.0-hadoop2.6.0.jar:<spark install dir>/lib/datanucleus-core-3.2.10.jar:<spark install dir>/lib/datanucleus-api-jdo-3.2.6.jar:<spark install dir>/lib/datanucleus-rdbms-3.2.9.jar \
-Xms512m -Xmx512m -XX:MaxPermSize=128m \
org.apache.spark.deploy.master.Master --port 7077 --webui-port 8080 --host 54.xx.xx.xx

请注意,我指定了 --host 参数;我希望我的 Spark master 监听特定的 IP 地址。我指定的主机(即 54.xx.xx.xx)是我的 EC2 节点的公共(public) IP;我已经确认没有其他任何东西正在监听端口 7077,并且我的 EC2 安全组已打开所有端口。我还仔细检查了公共(public) IP 是否正确。

当我使用 --host 54.xx.xx.xx 时,我收到以下错误消息:


15/07/27 17:04:09 ERROR NettyTransport: failed to bind to /54.xx.xx.xx:7093, shutting down Netty transport
Exception in thread "main" java.net.BindException: Failed to bind to: /54.xx.xx.xx:7093: Service 'sparkMaster' failed after 16 retries!
at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:272)
at akka.remote.transport.netty.NettyTransport$$anonfun$listen$1.apply(NettyTransport.scala:393)
at akka.remote.transport.netty.NettyTransport$$anonfun$listen$1.apply(NettyTransport.scala:389)
at scala.util.Success$$anonfun$map$1.apply(Try.scala:206)
at scala.util.Try$.apply(Try.scala:161)
at scala.util.Success.map(Try.scala:206)
at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:67)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:82)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
at akka.dispatch.BatchingExecutor$Batch.run(BatchingExecutor.scala:58)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

如果我省略 --host 参数就不会发生这种情况,如果我使用 --host 10.0.xx.xx 也不会发生这种情况,其中 10.0.xx.xx 是我的私有(private) EC2 IP 地址。

为什么 Spark 无法绑定(bind)到公共(public) EC2 地址?

最佳答案

我在使用 Oracle 云实例时遇到了同样的问题。我的私有(private) IP 是 10.x.x.2,我的公共(public) IP 是 140.x.x.238。

以下是您可以遵循的一些步骤:

  1. 检查您的私有(private) IP 地址

    使用命令ifconfig找出你的网卡地址

ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
inet 10.x.x.2 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::17ff:fe00:7cf9 prefixlen 64 scopeid 0x20<link>
ether 02:00:17:00:7c:f9 txqueuelen 1000 (Ethernet)
RX packets 146457 bytes 61901565 (61.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 142865 bytes 103614447 (103.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  1. 设置conf/spark-env.sh
SPARK_LOCAL_IP=127.0.0.1
SPARK_MASTER_IP=YOUR_HOST_NAME
  1. 更改主机文件

    在Ubuntu 18.04中,修改/etc/hosts

    删除类似127.0.1.1 YOUR_HOST_NAME

    在我的例子中,将 140.x.x.238 YOUR_HOST_NAME 更改为 10.x.x.2 YOUR_HOST_NAME

关于amazon-ec2 - 尝试在具有公共(public) IP 的 EC2 节点上启动 Spark master 时获取 java.net.BindException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31659228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com