setMaster`local [*]`在spark中意味着什么?

时间:2015-09-02 14:38:13

标签: scala apache-spark

我找到了一些用本地启动spark的代码:

val conf = new SparkConf().setAppName("test").setMaster("local[*]")
val ctx = new SparkContext(conf)

[*]是什么意思?

5 个答案:

答案 0 :(得分:52)

来自doc

./bin/spark-shell --master local[2]
  

--master选项指定分布式的主URL   集群,或本地在一个线程本地运行,或本地[N]运行   本地有N个线程。您应该首先使用local进行测试。

来自here

  

local [*]使用尽可能多的工作线程在本地运行Spark   你机器上的核心。

答案 1 :(得分:26)

  

主URL含义

本地:使用一个工作线程在本地运行Spark(即根本没有并行性)。

local [K] :使用K个工作线程在本地运行Spark(理想情况下,将其设置为计算机上的核心数)。

local [K,F] :使用K个工作线程和F maxFailures在本地运行Spark(有关此变量的说明,请参阅spark.task.maxFailures)

local [*] :使用与计算机上逻辑核心一样多的工作线程在本地运行Spark。

local [*,F] :使用与计算机上的逻辑核心和F maxFailures一样多的工作线程在本地运行Spark。

spark:// HOST:PORT :连接到指定的Spark独立群集主服务器。端口必须是主服务器配置使用的端口,默认为7077。

spark:// HOST1:PORT1,HOST2:PORT2 :使用带有Zookeeper的备用主服务器连接到给定的Spark独立群集。该列表必须具有使用Zookeeper设置的高可用性群集中的所有主主机。端口必须是每个主服务器配置使用的默认端口,默认为7077。

mesos:// HOST:PORT :连接到给定的Mesos群集。端口必须是您配置使用的端口,默认为5050。或者,对于使用ZooKeeper的Mesos集群,请使用mesos:// zk:// ....要使用--deploy-mode集群进行提交,应将HOST:PORT配置为连接到MesosClusterDispatcher。

yarn :根据--deploy-mode的值,以客户端或群集模式连接到YARN群集。将根据HADOOP_CONF_DIR或YARN_CONF_DIR变量找到群集位置。

https://spark.apache.org/docs/latest/submitting-applications.html

答案 2 :(得分:10)

一些额外的信息

不要在本地运行Spark Streaming程序,并将master配置为" local"或者" local [1]"。这仅为任务分配一个CPU,如果在其上运行接收器,则没有剩余资源来处理接收到的数据。至少使用" local [2]"拥有更多核心。

From -Learning Spark:Lightning-Fast大数据分析

答案 3 :(得分:2)

Master URL

您可以使用本地,本地[n]或最通用的本地[*]作为主URL在本地模式下运行Spark。

URL说明总共可以使用多少个线程:

本地仅使用1个线程。

local [n]使用n个线程。

local [*]使用的线程数与Java虚拟机可用的处理器数量一样(它使用Runtime.getRuntime.availableProcessors()来知道数量)。

local [N,maxFailures](称为局部重试),其中N为*或要使用的线程数(如上所述),maxFailures为spark.task.maxFailures的值。

答案 4 :(得分:2)

您可以使用本地,本地[n]或最通用的本地[*]作为主URL在本地模式下运行Spark。

URL表示总共可以使用多少个线程:-

本地仅使用1个线程。

local [n]使用n个线程。

local [*]使用的Spark数量与您在其中运行应用程序的spark本地计算机所使用的线程数量相同。

您可以通过Linux计算机上的lscpu检查

[ie @ mapr2〜] $ lscpu 架构:x86_64 CPU操作模式:32位,64位 字节顺序:小尾数 CPU:56 在线CPU列表:0-55 每个核心线程:2

如果您的计算机具有56个内核,则意味着CPU将把您的Spark作业分为56个部分。

注意:-可能在您的Spark集群中, spark-defaults.conf 文件将分区值限制为默认值(例如10或其他值),则您的分区将为在配置中设置了与默认值相同的值。

local [N,maxFailures](称为局部重试),其中N为*或要使用的线程数(如上所述),maxFailures为spark.task.maxFailures的值。