2015-12-18 72 views
0

我有四个节点通过设置运行我的火花程序--num -executeors 4, 但问题是只有两个运行,其他两台计算机不做任何计算,这里是: Executor_ID地址.... ..Total_Task Task_Time输入 1 slave8 88 21.5s 104MB 2 slave6 0 0 0B 3 SLAVE1 88 1分钟99.4MB 4 SLAVE2 0 0 0B如何使执行程序使用--num-executors运行spark程序?

怎样使运行我火花程序所有这些四个节点?

+0

您正在使用YARN? –

回答

0
  1. 执行者运行任务。在spark中,任务由数据分区预先确定。如果你有2个分区,但只有4个执行者,那么只有2个执行者可能有工作要做。
  2. 在独立集群中,节点需要工作人员启动执行程序才能运行。
  3. 将CPU和内存与执行程序相关联。如果节点无法获得请求的资源,它将排队等待这些资源可用。
  4. 如果两个节点本身具有足够的CPU内核来完成所有工作,那么其他节点将不会工作。数据的地点很重要,所以如果可能的话,所有的任务将被安排在一个节点上。

我怀疑你的情况,这可以通过更好地划分你的数据来解决。更好并不总是意味着更多。这也意味着在正确的时间,并以一种可能避免一些洗牌的方式。

1

我猜你在YARN上运行。在这种情况下,您需要在capacity-scheduler.xml文件中设置

yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator 

。请参阅Apache Hadoop Yarn - Underutilization of cores。否则,无论您使用--num-executors标志指定什么,YARN都将只启动2个执行程序。