将本地计算机/容器设置为边缘节点,以便在远程群集上提交spark应用程序

zkure5ic  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(311)

我正在尝试将容器设置为边缘节点,以便在安装了spark/hadoop(spark2.2.0)的dev集群上运行spark应用程序。
这是我一直遵循的策略,到目前为止,我在提交申请时是如何出错的:
使用压缩文件spark-2.2.0-bin-hadoop2.6.tgz在我的容器上安装了spark
解压缩spark tar文件
已在容器上安装java 8
从我的开发集群复制了core site.xml、hdfs site.xml、yarn-site.xml,并将其复制到容器本地spark conf文件夹中的conf文件夹中。
在容器上设置spark\u home并将路径指向$spark\u home/bin
安装hadoop\ conf\ dir并指向$spark\ home/conf,在那里我复制了hdfs-site.xml和其他xml文件。
我还尝试将spark\u local\u ip设置为dev cluster edge machine,我们通常在这里提交spark submit。
以下是我在容器上提交spark submit的方式: spark-submit --master yarn --queue stark --total-executor-cores 4 --executor-cores 2 --executor-memory 10g --driver-memory 10g --name Test_Spark --class ca.ix.hubble.insights.runner.JobRunnerOptimized hdfs://novus-nameservice/tmp/airflowtest/insights.jar 如果我这样做,我会得到以下错误:

java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries (on a random free port)! Consider explicitly setting the appropriate binding address for the service 'sparkDriver' (for example spark.driver.bindAddress for SparkDriver) to the correct binding address.
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:461)
        at sun.nio.ch.Net.bind(Net.java:453)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222)
        at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:127)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:501)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1218)
        at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:496)
        at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:481)
        at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:965)
        at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:210)
        at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:353)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
        at java.lang.Thread.run(Thread.java:748)```
oewdyzsn

oewdyzsn1#

顺便说一句,我自己想出来的,下面是我如何设置我的本地机器作为边缘节点:
已将安装hadoop的远程服务器上的spark2、hadoop目录复制到我的本地目录/tmp/。您还可以在本地安装hadoop和spark,然后将集群中的core site.xml、hdfs site.xml、yarn-site.xml替换为本地默认文件。您可能还希望为spark带来spark-env.sh。
创建了hadoop\u home环境变量并指向local。 export HADOOP_HOME=/tmp/hadoop 创建了spark\u home环境变量并指向local,例如。 export SPARK_HOME=/tmp/spark2 创建hadoop\ conf\ dir并指向local,例如。 export HADOOP_CONF_DIR=/tmp/hadoop/conf 安装java并设置java\U home环境变量
将所有环境变量bin目录添加到路径中,例如。 export PATH=$PATH:${JAVA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin 请确保所有远程服务器主机名和ip地址条目都在本地主机文件/etc/hosts中
为了将spark提交应用程序从本地提交到远程hadoop服务器,请使用集群部署模式。

spark-submit --master yarn  --queue default --deploy-mode cluster --total-executor-cores 4 --executor-cores 2 --executor-memory 10g --driver-memory 10g --name Test_Spark --class ca.test.TestClass hdfs://hostname/tmp/test.jar```

相关问题