我已经在 3 个节点的集群上设置了 Spark,其中一个是我的 namenode-master(名为 h1),另外两个是我的 datanode-workers(名为 h2 和 h3)。当我发出在主控上运行 Spark 作业的命令时,似乎该作业没有分发给工作人员,而只是在主控上完成。我运行 Spark 作业的命令是
bin/spark-submit --class org.dataalgorithms.chap07.spark.FindAssociationRules /home/ubuntu/project_spark/data-algorithms-1.0.0.jar ./in/xaa
我认为它只在主服务器上运行的原因是,当我进入 Spark 应用程序 GUI 时,我只在执行程序列表中看到主服务器 h1。我想我也应该在这里看到我的工作节点 h2 和 h3 吗? SparkUI
如果我错了,请纠正我。我是个新手,所以请原谅我的无知。
最佳答案
您尚未指定部署作业的模式。您需要指定 --deploy-mode 将作业部署到集群,还需要指定 --master 可以是 YARN/Mesos。
此外,当您指定 YARN 时,您需要确保您使用的资源(如执行程序内存、执行程序核心和执行程序数)由集群管理器(即 YARN)管理。 YARN 为您提供了不同的调度程序来分配资源。因此,您需要检查您配置的调度程序的类型。
在此处了解调度程序
https://blog.cloudera.com/blog/2016/01/untangling-apache-hadoop-yarn-part-3/
spark-submit --num-executors 50 --executor-memory 4G --executor-cores 4 --master yarn --deploy-mode cluster
关于apache-spark - Spark作业不使用集群上的工作节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902987/