Spark on Yarn资源分配实验,解决长期Accepted问题

如前文,为了彻底解决Yarn提交任务之后停留在ACCEPTED的问题,我们对Yarn的资源分配做了多组实验,过程及结果如下。

调度方式:FairScheduler
节点配置信息:


image.png

Spark on Yarn实验:
client模式和cluster模式差距不大,统一用client运行一个资源消耗比较大的连表Spark SQL查询并输出。

  1. 第一次实验
    Driver: 1核2g
    executor:1核2g
    executor/container数量:未指定
spark-submit --master yarn --conf spark.yarn.am.memory=2g --conf spark.yarn.am.cores=1 --conf spark.executor.cores=1 --executor-memory 2g ./src/main/pybin/ttemp.py

实验结果:
成功运行
Driver:1核3g
excutor:1核3g
executor数量:6个


image.png
  • 简单解释下,3g是因为Yarn会额外把分配的内存,加上max(384,10%已分配的内存),规整向上1024MB,即为3g。
  1. 第二次实验:
    Driver: 1核2g
    executor:1核2g
    executor/container数量:2
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=2g --conf spark.yarn.am.cores=1 --conf spark.executor.cores=1 --executor-memory 2g --num-executors 2 ./src/main/pybin/ttemp.py

实验结果:
成功运行:
Driver:1核3G
Executor:1核3G
Executor个数:2个


image.png

实验结论1:在Fair模式下,不指定Executor数量,则会尽量多的配置,结果不固定;指定数量的话,按照指定的来配置。

  1. 第三次实验:
    Driver: 1核4g
    executor:2核4g
    executor/container数量:未指定
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=4g --conf spark.yarn.am.cores=1 --conf spark.executor.cores=2 --executor-memory 4g ./src/main/pybin/ttemp.py

实验结果:
成功运行:
Driver:1核5G
Executor:2核5G
Executor个数:2个


image.png
  1. 第四次实验:
    第四次实验我们过度指定Executor数量,看会不会陷入ACCEPTED:
    Driver: 1核4g
    executor:2核4g
    executor/container数量:5
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=4g --conf spark.yarn.am.cores=1 --conf spark.executor.cores=2 --executor-memory 4g --num-executors 5 ./src/main/pybin/ttemp.py

实验结果:
成功运行
Driver:1核5G
Executor:2核5G
Executor个数:2个

image.png

实验结论2:在Fair模式下,过度指定Executor数量会被忽视。

  1. 第五次实验:
    第五次试验我们对资源需求过度要求,再次看看情况

Driver: 2核4g
executor:3核8g
executor/container数量:未指定

spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=4g --conf spark.yarn.am.cores=2 --conf spark.executor.cores=3 --executor-memory 8g  ./src/main/pybin/ttemp.py

实验结果:
在Spark端就挂掉了
java.lang.IllegalArgumentException: Required executor memory (8192), overhead (819 MB), and PySpark memory (0 MB) is above the max threshold (6144 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.
这个主要是因为我们设置了单个应用最大申请的资源为3核6g,超过的拒绝接受,发token。


image.png
  1. 第六次实验:
    第六次试验我们仍然对资源需求过度要求,但不超过限制,再次看看情况
    Driver: 2核4g
    executor:3核5g
    executor/container数量:未指定
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=4g --conf spark.yarn.am.cores=2 --conf spark.executor.cores=3 --executor-memory 5g  ./src/main/pybin/ttemp.py

实验结果:
Driver:1核5g(不知道为什么CPU核被削减了)
Exexutor:3核6g
executor/container数量:2个


image.png
  1. 第七次实验
    第七次试验我们满载
    Driver: 3核5g
    executor:3核5g
    executor/container数量:未指定
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=4g --conf spark.yarn.am.cores=2 --conf spark.executor.cores=3 --executor-memory 5g  ./src/main/pybin/ttemp.py

实验结果:
运行成功
Driver:1核5g
Exexutor:3核6g
executor/container数量:未指定

spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=5g --conf spark.yarn.am.cores=3 --conf spark.executor.cores=3 --executor-memory 5g  ./src/main/pybin/ttemp.py

image.png

实验结论3:在Fair模式下,Driver的cpu cores会被设为1个,内存不会增加10%

综上来看,对每个任务进行资源限制,是非常重要的!!
接下来我们测试多任务在Fair Scheduler的调度情况。
我们统一设置为一个队列。


image.png
  1. 第八次实验
    任务1:
    Driver: 1核2g
    executor:2核5g
    executor/container数量:未指定
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=2g --conf spark.executor.cores=2 --executor-memory 5g  ./src/main/pybin/ttemp.py

任务2资源申请同任务1

实验结果:
任务1运行成功,任务2ACCEPTED。
任务1运行结束,任务2RUNNING。

  1. 第九次实验
    任务1:
    Driver: 1核2g
    executor:1核2g
    executor/container数量:未指定
spark-submit --master yarn --deploy-mode client --conf spark.yarn.am.memory=2g --conf spark.executor.cores=1 --executor-memory 2g  ./src/main/pybin/ttemp.py

任务2资源申请同任务1

实验结果:
任务1运行成功,分配了4个Executor


image.png

任务2Accepted了..
在任务1运行结束后,任务2长时间ACCEPTED了。。。
原来是同事把主机名给改了,看了日志才知道,Yarn不认识,一直在发请求,重新实验。

同时RUNNING起来了。


image.png

经验教训:多读日志!

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