yarn资源多租户隔离

标题随意取的,别太在意。

技术栈

实时计算:spark streaming + kafka + yarn
离线计算:sparkSQL + yarn

当前yarn集群资源如图

image.png

目前公司离线计算和实时计算都是跑在一个yarn集群,最近离线计算资源占用非常高,整个CDH集群状态高负载运行。


yarn资源多租户隔离_第1张图片
image.png

通过运维人员监控发现,实时计算服务发现kafka消息堆积大量波动,排查后发现离线计算任务占用大量yarn资源。


yarn资源多租户隔离_第2张图片
image.png

对于业务价值,实时计算的优先级远大于离线计算,必须优先保证实时计算资源。

目前有2种方案:

1、独立2套yarn集群分别用于实时计算和离线计算
2、继续使用同一套yarn集群,分2个QUEUE(default,realtime)隔离yarn资源

分析:

方案1

服务器完全隔离,cpu,memory,io完全独立,但服务器资源紧张,无法调度到资源。

方案2

现有yarn集群配置,内存完全隔离,cpu理论上也可隔离,但是io和network不一定完全隔离,还存在一定影响。

结论

相关同事讨论后,一致选择方案2

实施

1、由大数据同事负责yarn具体实施,对QUEUE realtime 资源分配: memory 1T, vcore:1500
2、由测试同事负责测试环境验证可行性
3、由运营同事负责线上实施

参考

1、利用yarn多队列实现hadoop资源隔离 https://blog.csdn.net/bbaiggey/article/details/53574468
2、CDH Yarn资源队列划分管理 https://blog.csdn.net/u012551524/article/details/80544595

spark submit参数介绍

你可以通过spark-submit --help或者spark-shell --help来查看这些参数。
使用格式:
./bin/spark-submit
--class
--master
--deploy-mode
--conf =
... # other options

[application-arguments]
参数名 格式 参数说明
--master MASTER_URL 如spark://host:port, mesos://host:port, yarn, yarn-cluster,yarn-client, local
--deploy-mode DEPLOY_MODE Client或者master,默认是client
--class CLASS_NAME 应用程序的主类
--name NAME 应用程序的名称
--jars JARS 逗号分隔的本地jar包,包含在driver和executor的classpath下
--packages 包含在driver和executor的classpath下的jar包逗号分隔的”groupId:artifactId:version”列表
--exclude-packages 用逗号分隔的”groupId:artifactId”列表
--repositories 逗号分隔的远程仓库
--py-files PY_FILES 逗号分隔的”.zip”,”.egg”或者“.py”文件,这些文件放在python app的PYTHONPATH下面
--files FILES 逗号分隔的文件,这些文件放在每个executor的工作目录下面
--conf PROP=VALUE 固定的spark配置属性,默认是conf/spark-defaults.conf
--properties-file FILE 加载额外属性的文件
--driver-memory MEM Driver内存,默认1G
--driver-java-options 传给driver的额外的Java选项
--driver-library-path 传给driver的额外的库路径
--driver-class-path 传给driver的额外的类路径
--executor-memory MEM 每个executor的内存,默认是1G
--proxy-user NAME 模拟提交应用程序的用户
--driver-cores NUM Driver的核数,默认是1。这个参数仅仅在standalone集群deploy模式下使用
--supervise Driver失败时,重启driver。在mesos或者standalone下使用
--verbose 打印debug信息
--total-executor-cores NUM 所有executor总共的核数。仅仅在mesos或者standalone下使用
--executor-core NUM 每个executor的核数。在yarn或者standalone下使用
--driver-cores NUM Driver的核数,默认是1。在yarn集群模式下使用
--queue QUEUE_NAME 队列名称。在yarn下使用
--num-executors NUM 启动的executor数量。默认为2。在yarn下使用

yarn资源多租户隔离_第3张图片
image.png

你可能感兴趣的:(yarn资源多租户隔离)