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

Abh*_*ute 4 java apache-spark

我为Apache Spark 1.2.1独立群集完成了以下配置:

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

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

./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 
Run Code Online (Sandbox Code Playgroud)

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

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

我的查询是:

  1. 为什么它没有使用所有可用的6核?
  2. 为什么火花UI显示应用程序:0运行?

代码:

public static void main(String[] args) throws Exception {

  String fileName = args[0];
  System.out.println("----->Filename : "+fileName);        

  Long now = new Date().getTime();

  SparkConf conf = new SparkConf(true)
           .setMaster("local")
           .setAppName("JavaSparkSQL_" +now)
           .set("spark.executor.memory", "1g")
           .set("spark.cassandra.connection.host", "192.168.1.65")
           .set("spark.cassandra.connection.native.port", "9042")
           .set("spark.cassandra.connection.rpc.port", "9160");

  JavaSparkContext ctx = new JavaSparkContext(conf);

  JavaRDD<String> input =  ctx.textFile("hdfs://abc.xyz.net:9000/dataLoad/resources/" + fileName,6);
  JavaRDD<DataInput> result = input.mapPartitions(new ParseJson()).filter(new FilterLogic());

  System.out.print("Count --> "+result.count());
  System.out.println(StringUtils.join(result.collect(), ","));

  javaFunctions(result).writerBuilder("ks","pt_DataInput",mapToRow(DataInput.class)).saveToCassandra();

}
Run Code Online (Sandbox Code Playgroud)

eli*_*sah 7

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

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