我在3个节点的集群上设置了spark,一个是我的namenode-master(名为h1),另外两个是我的datanode-workers(名为h2和h3)。当我发出命令在我的主人身上运行一个火花工作时,似乎工作没有分配给工人,而是刚刚在主人身上完成。我给运行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
如果我错了,请纠正我。我是新手,所以请原谅我的无知。
答案 0 :(得分:0)
您尚未指定部署作业的模式。您需要指定--deploy-mode以将作业部署到集群,还需要指定--master可以是YARN / Mesos。
此外,当您指定YARN时,您需要确保您正在使用的资源(如executor-memory,executor-cores和num-executors)由集群管理器(即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
答案 1 :(得分:0)
感谢您提供的所有帮助和建议。我尝试了很多但最终出现了一些或其他错误。帮助我的是使用我的常规命令指定--master spark:// IP:PORT。所以我的新执行命令看起来像这样
bin/spark-submit --class org.dataalgorithms.chap07.spark.FindAssociationRules --master spark://IP:PORT /home/ubuntu/project_spark/data-algorithms-1.0.0.jar ./in/xaa
这在真正的分布式集群模式下启动了我的火花工作