Spark Standalone

版本: 2.3.0 - 2.6.0

http://spark.apache.org/docs/latest/spark-standalone.html

spark除了可以在Mesos 或Yarn上运行, 也可以以standalone模式运行。
可以手工启动master 和workers 或者通过官方提供的启动脚本来进行 launch scripts.

Standalone模式下手工启动

手工启动master

./sbin/start-master.sh

启动时, master 会打印出 spark://HOST:PORT URL 。 这是master的 web UI 。
默认端口8080 。

手工启动一个或多个workers , 并连接到master:

./sbin/start-slave.sh <master-spark-URL>

启动worker后, 可以在master的UI上查看到他,及为之分配的资源。

最后,如下选项可以传给master 和worker :

图片.png

conf/spark-env.sh

拷贝conf/spark-env.sh.template 为 conf/spark-env.sh , 并将该文件同步到所有的机器上。
配置属性有如下:

Environment Variable Meaning
SPARK_MASTER_HOST 指定master的主机名或ip .
SPARK_MASTER_PORT 指定master的端口 (default: 7077).
SPARK_MASTER_WEBUI_PORT master web UI 端口 (default: 8080).
SPARK_MASTER_OPTS 以 "-Dx=y" (default: none)的格式配置只对master启动生效的参数. 参数选项见下
SPARK_LOCAL_DIRS Spark的 "scratch"目录, 包括映射output文件 和 RDDs。该目录应该是一个本地系统的快速目录. 它也可以是以逗号分隔的位于不同磁盘的目录列表.
SPARK_WORKER_CORES 机器上运行spark应用程序使用的总共的cores (default: all available cores).
SPARK_WORKER_MEMORY 机器上运行spark应用程序的总共的内存, e.g. 1000m, 2g (default: 最小 1 GB); 注意每个应用程序单独的内存使用spark.executor.memory 属性配置
SPARK_WORKER_PORT 指定Spark worker的端口 (default: random).
SPARK_WORKER_WEBUI_PORT worker web UI 端口(default: 8081).
SPARK_WORKER_DIR 应用程序运行的目录,包括 logs and scratch space (default: SPARK_HOME/work).
SPARK_WORKER_OPTS 以 "-Dx=y" (default: none)格式配置worker启动参数 . See below for a list of possible options.
SPARK_DAEMON_MEMORY 分配给Spark master and worker 守护进程本身的内存(default: 1g).
SPARK_DAEMON_JAVA_OPTS 以 "-Dx=y" (default: none)格式启动master 和worker的守护进程的JVM 参数.
SPARK_DAEMON_CLASSPATH Spark master and worker 守护进程本身的CLASSPATH (default: none).
SPARK_PUBLIC_DNS Spark master and workers的默认DNS (default: none).

Note: 该启动脚本目前不支持 Windows. 在 Windows下启动spark 需要手工启动master 和worker 。

SPARK_MASTER_OPTS 支持的选项

图片.png

SPARK_WORKER_OPTS 支持的选项

图片.png

连接集群

要连接spark集群, 传送 master 的 spark://IP:PORT URL 。

./bin/spark-shell --master spark://IP:PORT

可以通过输入 --total-executor-cores <numCores> 选项来控制 spark-shell使用的cores数量。

启动spark 应用程序

spark-submit脚本提供提交spark应用程序到集群。 对于standalone集群, 当前支持两种部署模式, client 模式和 cluster 模式 。 client 模式下, dirver 进程同client进程。 cluster 模式下,driver有集群的摸个worder 进程启动, 客户端进程在提交成功后不会等待执行完成就会推出。

当使用spark-submit提交应用程序, 应用程序jar会自动分发给集群中的所有的worker 。 对于所有的依赖jar , 需要通过--jar参数指定, 使用逗号分隔。 要控制应用程序的配置或者执行环境,参见 Spark Configuration.

另外, standalone集群下,若应用程序返回非0code,支持自动重启应用程序 。 要使用该功能, 需要使用--supervise选项。 若你想关闭重复失败的应用程序, 使用如下:

./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID>

driver ID 可用通过master的 web ui http://<master url>:8080. 找到。

资源调度

standalone模型目前只支持FIFO调度。 但是,为运行多用户并行,可以控制每个应用程序使用的最大资源。 默认情况下, 当一次只运行一个应用程序,它将获取所有的cores。你可以在 SparkConf.中通过设置spark.cores.max来限制cores的数量。 例如:

val conf = new SparkConf()
  .setMaster(...)
  .setAppName(...)
  .set("spark.cores.max", "10")
val sc = new SparkContext(conf)

另外,为防止未设置spark.cores.max的情况, 可以在master进程中设置 spark.deploy.defaultcores属性来设置默认值。 可以在spark-env.sh中配置如下:
export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=<value>"

这对于用户没有单独配置最大内核数量的共享集群非常有用。

Executors 调度

分配给每个executor的cores是可以配置的 。 当明确设置spark.executor.cores 时, 同一个worker可在资源充足的情况下为同一应用程序启动多个executor 。 否则,每个executor默认获取所有的cores ,这种情况下一个应用程序只会启动一个executor。

监控和日志

standalone模型提供一个机遇web的用户界面来监控集群。 master 和每个worker都有各自的web UI 来显示集群和job统计信息 。 默认情况下可以通过8080端口访问master 。
另外,每个job的详细日志信息会保存在每个节点上(默认SPARK_HOME/work )。 每个job有两个, stdout 和stderr 。

在Hadoop上运行

可以在已经存在的hadoop集群上启动spark 。 通过hdfs://URL访问hadoop数据。 或者可以搭建单独的spark集群,通过网络访问hdfs (这将比访问本地磁盘慢, 但是如果在同一局域网可能会快些)。

HA

默认情况下, standalone集群对worker节点的失效有弹性的(spark本身可以将工作交给其他worker)。 但是对于master 是没有弹性的, 会产生单点故障,有两种解决方案。

基于zk的备用master

概览

基于ZK的选举机制和状态存储, 可以启动多个master ,其他一个会被选中为leader ,其他的处于备用状态。 当leader 失效, zk会自动进行选举,然后恢复调度。 整个恢复过程可能会1-2分钟。 注意该延迟只会影响新应用程序的调度,不会影响已经运行了的。

更多信息参见 ZooKeeper here.

配置

要启用该配置, 在spark-env.sh中设置属性 SPARK_DAEMON_JAVA_OPTS 为 spark.deploy.recoveryMode and related spark.deploy.zookeeper.*
更多配置信息参见 configuration doc

图片.png

注意: 如果没有正确进行zk配置, 所有的master都认为自己是leader ,就会造成集群状态不正常(所有的master都独立调度)。

详细信息

为了向集群提交新应用或增加worker , 就需要知道leader的ip地址。 这可以通过上送masters的列表进行。 例如:spark://host1:port1,host2:port2. 这样SparkContext会向两个master进行注册, 若host1失效,该配置仍旧有效。

当集群启动时, 应用或worker需要能够找到并注册当前的lead master 。 一旦成功注册,就好存储在zk中。 当失效发生, 新leader 会联系已注册的所有的应用和worker ,通知他们更新leader 信息 , 所以他们不需要知道新master出现。

基于该属性, 新master 可以在任何时间创建, 唯一需要担心的是新应用和worker可以找到并注册到该新master(当他变为leader时)。

基于本地文件系统的单节点恢复

概览

zk是最好的ha方式。 但若你向在master失效时重启之,就可以使用FILESYSTEM 模式 。 当应用和worker注册时, 他们向提供的目录中写状态,以便在master 重启时恢复。

配置

在 spark-env.sh中配置 SPARK_DAEMON_JAVA_OPTS 属性如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容