前言

spark.local.dir/SPARK_LOCAL_DIRS 用于Spark 在 Shuffle阶段临时文件及RDD持久化存储等,可以使用逗号分隔配置多个路径对应到不同的磁盘,Spark on Yarn时这个路径默认会被Yarn集群的配置LOCAL_DIRS所取代。在Spark on k8s下,这个路径默认是emptyDir这个Volume所对应的位置,可以简单的理解为java.io.tmpDir对应的/tmp目录。

配置

spark.kubernetes.driver.volumes.[VolumeType].spark-local-dir-[VolumeName].mount.path=<mount path>
spark.kubernetes.driver.volumes.[VolumeType].spark-local-dir-[VolumeName].options.path=<host path>

[VolumeType] - hostPath, emptyDir,…
[VolumeName] - 命名
- pod中对应的目录
- 宿主机文件目录

Driver

spark.kubernetes.driver.volumes.hostPath.spark-local-dir-0.mount.path=/opt/dfs/0
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-1.mount.path=/opt/dfs/1
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-2.mount.path=/opt/dfs/2
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-3.mount.path=/opt/dfs/3
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-4.mount.path=/opt/dfs/4
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-5.mount.path=/opt/dfs/5
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-6.mount.path=/opt/dfs/6
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-7.mount.path=/opt/dfs/7
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-8.mount.path=/opt/dfs/8
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-9.mount.path=/opt/dfs/9
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-10.mount.path=/opt/dfs/10
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-11.mount.path=/opt/dfs/11spark.kubernetes.driver.volumes.hostPath.spark-local-dir-0.options.path=/mnt/dfs/0
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-1.options.path=/mnt/dfs/1
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-2.options.path=/mnt/dfs/2
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-3.options.path=/mnt/dfs/3
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-4.options.path=/mnt/dfs/4
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-5.options.path=/mnt/dfs/5
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-6.options.path=/mnt/dfs/6
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-7.options.path=/mnt/dfs/7
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-8.options.path=/mnt/dfs/8
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-9.options.path=/mnt/dfs/9
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-10.options.path=/mnt/dfs/10
spark.kubernetes.driver.volumes.hostPath.spark-local-dir-11.options.path=/mnt/dfs/11

Executor

spark.kubernetes.executor.volumes.hostPath.spark-local-dir-0.mount.path=/opt/dfs/0
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-1.mount.path=/opt/dfs/1
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-2.mount.path=/opt/dfs/2
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-3.mount.path=/opt/dfs/3
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-4.mount.path=/opt/dfs/4
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-5.mount.path=/opt/dfs/5
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-6.mount.path=/opt/dfs/6
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-7.mount.path=/opt/dfs/7
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-8.mount.path=/opt/dfs/8
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-9.mount.path=/opt/dfs/9
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-10.mount.path=/opt/dfs/10
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-11.mount.path=/opt/dfs/11spark.kubernetes.executor.volumes.hostPath.spark-local-dir-0.options.path=/mnt/dfs/0
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-1.options.path=/mnt/dfs/1
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-2.options.path=/mnt/dfs/2
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-3.options.path=/mnt/dfs/3
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-4.options.path=/mnt/dfs/4
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-5.options.path=/mnt/dfs/5
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-6.options.path=/mnt/dfs/6
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-7.options.path=/mnt/dfs/7
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-8.options.path=/mnt/dfs/8
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-9.options.path=/mnt/dfs/9
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-10.options.path=/mnt/dfs/10
spark.kubernetes.executor.volumes.hostPath.spark-local-dir-11.options.path=/mnt/dfs/11

性能测试

当默认使用emptyDir, Spark on k8s性能比同配置的Spark on yarn有极大的性能差距,当数据规模增大是,性能问题暴露的越发明显。

通过观察宿主机上的metrics信息,发现sda这块盘被打满,而其他11块盘都空闲。这也导致该宿主机的cpu利用率无法上去。

以上面的配置,重新测试Terasort,我们可以看到Spark on k8s的性能得到了极大的提升,尤其是在大数据量的情况下

通过观察宿主机上的metrics,12块磁盘都得到了利用,spark shuffle的能力得到提升,CPU的使用率相比之前得到质的飞跃。

参考连接:
https://www.jianshu.com/p/c6903a7a2c67

Spark on k8s: 通过hostPath设置SPARK_LOCAL_DIRS加速Shuffle相关推荐

  1. Spark On K8S 在有赞的实践与经验

    一.前言 随着近几年业务快速发展与迭代,大数据的成本也水涨船高,如何优化成本,建设低成本高效率的底层服务成为了有赞数据基础平台2020年的主旋律.本文主要介绍了随着云原生时代的到来,经历7年发展的有赞 ...

  2. 大数据 | Spark on K8S 在有赞的实践

    转载自公众号:有赞Coder:原文链接:https://mp.weixin.qq.com/s/dcymNAco7P4IzuXA4pHezg 一.前言 随着近几年业务快速发展与迭代,大数据的成本也水涨船 ...

  3. Spark on K8S 的最佳实践和需要注意的坑

    本文来自 Data Mechanics 的 CEO Jean-Yves Stephan 和 CTO Julien Dumazert 在 Spark Summit North America 2020 ...

  4. Spark on k8s Operator 部署安装

    Spark on k8s Operator 部署安装 1. 背景 受限于公司内网环境,无法构建梯子及部分网络策略,不能使用网络资源直接部署,需要手动编译安装 2. 环境准备 centos 7 Kube ...

  5. Spark On K8S(Standalone模式部署)

    Spark on K8S 的几种模式 Standalone:在 K8S 启动一个长期运行的集群,所有 Job 都通过 spark-submit 向这个集群提交 Kubernetes Native:通过 ...

  6. Spark on K8S及history服务部署

    Spark on K8S环境部署细节 https://www.cnblogs.com/lanrish/p/12267623.html spark history helm部署 https://gith ...

  7. Spark on K8S 的几种模式

    Spark on K8S 的几种模式 Standalone:在 K8S 启动一个长期运行的集群,所有 Job 都通过 spark-submit 向这个集群提交 Kubernetes Native:通过 ...

  8. spark on k8s准确完整的测试步骤:提交Pi计算程序至k8s集群

    部署流程: 下载spark环境包https://www.apache.org/dyn/closer.lua/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tg ...

  9. spark on k8s:apache YuniKorn(Incubating)的助力

    背景 为什么选择spark on k8s Apache Spark 作为一站式平台统一了批处理,实时处理,流分析,机器学习,以及交互式查询.虽然说spark 提供了多样的使用场景,但是也带来了额外的复 ...

最新文章

  1. C# 二进制字节流查找函数IndexOf
  2. linux服务器secureCRT RSA登录配置
  3. come type6 定义_COMe-B6101龙芯3A3000 COM Express Type6模块
  4. 64位ubuntu kylin 16.04下制作tiny4412可用的SD启动卡
  5. Vue基础学习(一)------内部指令
  6. VueCli3 项目结构和具体作用
  7. String(byte[] bytes, int offset, int length)
  8. oracle 知识点
  9. shell中encoding=utf-8_如何在Linux中将文件转换为UTF-8编码
  10. C#中对txt文件的读写操作
  11. 嵌入式开发Verilog教程(二)——Verilog HDL设计方法概述
  12. 卡内基梅隆计算机专业排名,2019年卡内基梅隆大学计算机专业排名多少?
  13. Linux电源管理(五)thermal【转】
  14. 各大自媒体平台的收益情况汇总
  15. 利用Nexus搭建私服
  16. linux提示Another app is currently holding the xtables lock. Perhaps you want to use the -w option?
  17. 苹果电脑怎么关闭当前页面、打开终端、截图
  18. linux下的打包命令
  19. 秩和检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析
  20. 三个指标怎么做分层图_分层性能指标以及在哪里找到它们

热门文章

  1. linux内核杂记(11)-进程调度(6)
  2. 【机器学习】随机森林、GBDT、XGBoost、LightGBM等集成学习代码练习
  3. 【机器学习基础】Python机器学习入门指南(全)
  4. 【数据分析】2020年创业公司到底过得怎么样?数据分析来为你揭晓
  5. 【NLP】相当全面:各种深度学习模型在文本分类任务上的应用
  6. 【面向工业界】京东NLP落地应用实战
  7. 【机器学习入门】深入浅出聚类算法!如何对王者英雄聚类分析,探索英雄之间的秘密...
  8. 全国人工智能大赛 行人重识别(Person ReID)赛项 季军团队方案分享
  9. 中文分词的古今中外,你想知道的都在这里
  10. AAAI论文首发:几何驱动的自监督的人体3D姿态估计方法