Apache spark Spark独立模式多shell会话(应用程序)
在具有多个工作节点的Spark 1.0.0独立模式下,我尝试从两台不同的计算机(同一个Linux用户)运行Spark shell 在文档中,它说“默认情况下,提交到独立模式集群的应用程序将按FIFO(先进先出)顺序运行,每个应用程序将尝试使用所有可用节点。” 每个工作进程的内核数设置为4,8个可用(通过SPARK_JAVA_OPTS=“-Dspark.cores.max=4”)。内存也受到限制,因此应该有足够的内存可供这两种应用程序使用 但是,当查看Spark Master WebUI时,稍后启动的shell应用程序将始终处于“等待”状态,直到第一个应用程序退出。分配给它的内核数为0,每个节点的内存为10G(与已运行的相同)Apache spark Spark独立模式多shell会话(应用程序),apache-spark,Apache Spark,在具有多个工作节点的Spark 1.0.0独立模式下,我尝试从两台不同的计算机(同一个Linux用户)运行Spark shell 在文档中,它说“默认情况下,提交到独立模式集群的应用程序将按FIFO(先进先出)顺序运行,每个应用程序将尝试使用所有可用节点。” 每个工作进程的内核数设置为4,8个可用(通过SPARK_JAVA_OPTS=“-Dspark.cores.max=4”)。内存也受到限制,因此应该有足够的内存可供这两种应用程序使用 但是,当查看Spark Master WebUI时,稍后启
有没有一种方法可以在不使用Mesos的情况下同时运行两个shell?当shell死亡时,应用程序结束。因此,您不能在两台笔记本电脑上同时运行两个
spark shell
s。您可以做的是启动一个火花壳
,启动另一个,然后在第一个火花壳死亡时启动第二个火花壳
与火花壳相反,火花壳在计算结束后会终止。因此,您可以spark提交一个应用程序,启动spark shell
,并在应用程序完成时让shell接管
或者,您可以连续运行两个应用程序(一个接一个),同时启动两次spark submit
。解决方法之一是使用执行器内核总数限制每个spark外壳的内核数。例如,要将其限制为16核,请按如下方式启动:
bin/spark-shell --total-executor-cores 16 --master spark://$MASTER:7077
在这种情况下,每个shell将只使用16个内核,因此您可以在32个内核的集群上运行两个shell。然后,它们可以同时运行,但每次使用的核数不得超过16个。:(
我知道,这个解决方案远非理想。当用户不运行代码时,您依赖用户限制自己,关闭外壳,资源就会浪费。我已经创建了,您可以投票支持。在spark独立群集上开始处理外壳之前,必须有足够的内核和内存。您必须指定y从每个spark shell中选择所需的内核数,否则它将全部使用。如果指定5个内核,执行器内存=10G(为执行器分配的内存量),第二个spark shell将使用2个内核和10G内存运行,第二个仍不会启动,因为第一个shell同时使用两个执行器,并且正在使用两个执行器上的所有内存。如果为每个spark shell指定5G执行器内存,则它们可以同时运行
基本上,您希望在一个独立的群集上运行多个作业——不幸的是,它的设计并不能很好地处理这种情况。如果您想这样做,您应该使用mesos或Thread。不幸的是,不是。我真的不需要它,我会很舒服。如果您不需要充分利用群集,只需要首先,您可以复制Spark文件夹并更改设置中的端口以运行它两次。