为什么Spark Standalone集群不使用所有可用内核?

时间:2015-04-22 09:39:09

标签: java apache-spark

我已完成Apache Spark 1.2.1独立群集的以下配置:

  • Hadoop 2.6.0
  • 2个节点 - 一个主节点和一个从节点 - 在独立群集中
  • 3节点Cassandra
  • 总核心数:6(2个主人,4个奴隶)
  • 总内存:13 GB

我在独立集群管理器中运行Spark:

SELECT [VAR1], [VAR2], [VarName] = 'Score1', [Value] = [Score1]
FROM [dbo].[UnknownMe]
UNION ALL
SELECT [VAR1], [VAR2], [VarName] = 'Score2', [Value] = [Score2]
FROM [dbo].[UnknownMe]
UNION ALL
SELECT [VAR1], [VAR2], [VarName] = 'Score3', [Value] = [Score3]
FROM [dbo].[UnknownMe]

我的工作是成功执行,即从文件中读取数据并将其插入Cassandra。

Spark文档说,在独立群集中使用所有可用内核,但我的群集每个应用程序仅使用1个内核。此外,在Spark UI上启动应用程序后,它显示Applications:0 running和Drivers:1 running。

我的查询是:

  1. 为什么不使用所有可用的6核?
  2. 为什么火花UI显示应用程序:0正在运行?
  3. 代码:

    ./spark-submit --class com.b2b.processor.ProcessSampleJSONFileUpdate \
                   --conf num-executors=2 \
                   --executor-memory 2g \
                   --driver-memory 3g \
                   --deploy-mode cluster \
                   --supervise \
                   --master spark://abc.xyz.net:7077 \ 
                   hdfs://abc:9000/b2b/b2bloader-1.0.jar ds6_2000/*.json 
    

3 个答案:

答案 0 :(得分:7)

如果您要将应用中的主人设置为本地(通过.setMaster("local")),则无法连接到spark://abc.xyz.net:7077

如果使用spark-submit命令进行设置,则无需在应用程序中设置主控。

答案 1 :(得分:2)

发生的事情是您认为您使用的是独立模式,默认情况下使用所有可用节点,但实际上使用“本地”作为主节点,您使用的是本地模式。在本地模式下,即使设置了local [*],Spark也将始终只使用1个核心,因为本地模式是非分布式单JVM部署模式。这也是为什么当您将主参数更改为“spark://abc.xyz.net:7077”时,一切都按照您的预期进行。

答案 2 :(得分:0)

尝试将master设置为local [*],这将使用所有核心。