【问题标题】:Spark job not using the worker nodes on the clusterSpark 作业不使用集群上的工作节点
【发布时间】:2018-04-20 03:21:08
【问题描述】:

我已经在 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

如果我错了,请纠正我。我是新手,请原谅我的无知。

【问题讨论】:

  • 请查看 master 的 UI 以查看可用工作人员的列表,而不是驱动程序的 UI
  • 你似乎没有传入 --master 和 --deploy-mode 开关
  • @ErnestKiwele 这是我主人的 UI。我猜我的驱动程序默认在我的主服务器上运行
  • 那么缺少一些基本的东西。您如何告诉 spark-submit 将其部署到集群?您使用的是什么资源管理器?
  • @MichelLemay 我试图通过 --master 和 --deploy-mode 开关,但它给了我一些绑定错误。如果我想在集群模式下运行它,是否绝对有必要通过这些。我会假设,我应该能够运行一个正常的命令并且仍然能够使用我的工作节点,如果它们是在 slaves 文件中设置的?

标签: apache-spark spark-submit


【解决方案1】:

您尚未指定要部署作业的模式。您需要指定 --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

【讨论】:

    【解决方案2】:

    感谢您的所有帮助和建议。我尝试了很多,但最终出现了一些或其他错误。帮助我的是用我的常规命令指定 --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
    

    这开始了我在真正分布式集群模式下的 spark 工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      相关资源
      最近更新 更多