目录

  • staging目录的用途
  • MapReduce作业Staging的配置
    • 示例
  • Spark 作业Staging目录的配置
    • 示例

staging目录的用途

关于staging目录可能很多人都不太会关注,毕竟日常运行作业也用不到这些配置。不过了解它对于我们理解作业的执行流程也是有所帮助的,比如我们都会使用hadoop jar 或 spark-submit等命令来提交一个MR或Spark作业,然后我们就会看到在集群的某些计算节点上启动executor(MapRedece对应的是mapper和reducer)来执行任务。这些executor都是一个JVM进程,既然如此,那么启动一个JVM进程必然需要用到至少一个jar包,那这些jar包是从哪里来的呢?此时就用到了staging 目录(有人把staging翻译为舞台目录,这也有一定的含义,提交作业,就要登上集群这个舞台了)了。提交作业的时候,会把相关的jar包和配置信息都上传到这个staging目录下,然后在启动executor之前,会从这里将这些信息下载到计算节点本地。

MapReduce作业Staging的配置

  • yarn.app.mapreduce.am.staging-dir:提交mapreduce作业的staging目录,默认是/tmp/hadoop-yarn/staging
  • yarn.app.mapreduce.am.staging-dir.erasurecoding.enabled:staging目录下的文件是否使用纠删码方式存储,默认false,这可以在提交作业时指定
  • mapreduce.client.submit.file.replication:提交到staging目录下的文件的副本数,默认是10
  • mapreduce.job.split.metainfo.maxsize:split元数据信息文件的最大大小,默认10000000,超过该大小AppMaster将不会再读取。设置为-1,则表示不限制该文件的大小。这个文件通常不会很大,一般也不会去单独设置

示例

下面从一个实际的MR作业来看一下stageing目录中的内容,可以看到文件job.jar和job.split以及libjars目录中的文件副本数都是10,这个10就是由配置项mapreduce.client.submit.file.replication指定的

下面通过提交一个测试作业验证一下这个配置项,指定mapreduce.client.submit.file.replication为12

作业提交后,查看对应的staging 目录文件,如下,说明配置参数生效了

最后解释一下这些文件的副本为什么是10呢,难道3副本还不能满足数据安全的要求吗?这里其实涉及到MR作业运行时的一个步骤就是资源本地化,本文开头已经介绍过staging目录的作用了,而比如一个MR作业的mapper有几百几千个的时候,那么就意味着会有上千的客户端会同时下载这个jar包,此时将这个jar包的副本数设置的大一点可以提高资源本地化的效率,而反之如果只是一个很小的MR作业,这么高的副本数就是浪费了。这也侧面说明了MR的设计初衷就是面向大规模数据的。

Spark 作业Staging目录的配置

下面是spark on yarn模式下的配置

  • spark.yarn.submit.file.replication:提交作业时上传到HDFS相关文件的副本数,默认是HDFS的默认副本数,通常是3
  • spark.yarn.stagingDir:提交作业时的staging目录,默认是用户的家目录
  • spark.yarn.preserve.staging.files:在提交作业时的staged 文件(Spark jar, app jar, distributed cache files) 在作业结束时是否保留,默认false,也就是作业执行结束后进行删除

示例

下面从一个实际的Spark作业来看一下stageing目录中的内容

可以看到,和MR作业的Staging目录相比,spark并未将spark的jar包设置为10副本;而且把配置信息和jar包分别进行了压缩,结构相对简单一点。

YARN 作业 Staging目录的用途及配置相关推荐

  1. influxdb tsm文件_利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏

    Flink 从入门到精通 系列文章 前言 虽然笔者之前写过基于Prometheus PushGateway搭建Flink监控的过程,但是在我们的生产环境中,使用的是InfluxDB.InfluxDB是 ...

  2. Confluence 6 从外部目录中同步数据配置同步间隔

    在用户目录(User Directories)界面中显示了最后的系统同步时间,包括有这次同步所花费的时间. 注意:针对 Crowd  和 Jira 目录同步时间的配置只在 Confluence 3.5 ...

  3. Linux五部分的含义,Linux 目录下部分重要目录的用途及含义及一些命令的作用

    Linux根目录下部分重要目录的用途及含义 /proc:这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息.也就是说,这个目录的内容不在硬盘上而是在内存里. /sys:系统 (syste ...

  4. linux系统下nginx安装目录和nginx.conf配置文件目录

    linux系统下nginx安装目录和nginx.conf配置文件目录 1.查看nginx安装目录 输入命令 # ps  -ef | grep nginx 返回结果包含安装目录 root      26 ...

  5. 启动代码格式:nginx安装目录地址 -c nginx配置文件地址

    启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...

  6. 安装默认报表服务器虚拟目录,报表服务器虚拟目录(Reporting Services 配置)

    报表服务器虚拟目录(Reporting Services 配置) 12/15/2008 本文内容 使用"报表服务器虚拟目录"页可以配置报表服务器的虚拟目录.用于访问报表服务器 We ...

  7. linux samba 多个目录,linux7 Samba服务配置,多个部门相应管理自己的项目目录,其他有访问权限...

    多个部门相应管理自己的项目目录,对其他部门项目目录只有访问权限. 1.创建组和用户,使用useradd命令新建系统账户,然后再使用smbpasswd –a建立SMB账户. 2.创建目录文件 3更改目录 ...

  8. 设置微信小程序支持npm(解决微信小程序npm构建时提示“没有找到可以构建的NPM包,请确认需要参与构建的npm都在miniprogramroot目录内,或配置project...”错误)的方法

    提示:通过微信开发者工具创建小程序工程后,默认是不开启npm的,需要修改小程序npm配置参数,否则将会提示"没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 minipro ...

  9. LWN: 内核staging目录的驱动们最后下场如何?

    点击上方蓝色"Linux News搬运工"关注我们~ What happens to kernel staging-tree code By Jonathan Corbet sta ...

最新文章

  1. python栈溢出_Python栈溢出【新手必学】
  2. 当程序崩溃的时候怎么办
  3. Microsoft Visual Studio 宏脚本添加注释模板
  4. 微信悄然上线了十款新表情,你注意到了吗?
  5. test libvirt
  6. 8tupian图片加密平台源码 v3.5
  7. 使用js对select动态添加和删除OPTION示例代码
  8. Jquery 获取 radio选中值(转)
  9. 基于Bokeh库,手把手教你制作“子弹图“和“瀑布图“!
  10. linux从a自增10_C语言程序前后自增(++a、a++)在Linux下的实现机制
  11. git checkout远程分支_Git检出远程分支
  12. win7开机动画_win7系统怎么修改开机动画 win7系统开机动画修改方法
  13. dataworks/odps上传资源,注册函数,下载资源
  14. php字符串常用内置函数
  15. Golang mgo 剖析之 Session
  16. 短信接口被恶意调用?企业短信防火墙+【中昱维信】短信验证码【Java】
  17. 上海疫情后一个前端的面试心路历程
  18. 360更新补丁之后,程序无法运行解决历程
  19. Python3使用动态规划处理背包问题:完全背包(含背包恰好装满的情况)
  20. Token及Token经济

热门文章

  1. oracle使用sysdba连接报错 ORA-01031: insufficient privileges
  2. CPU性能篇-CPU使用率
  3. 鸟哥linux学习途中感言-误删除/bin目录
  4. Mac安装node遇到的问题记录
  5. arm c语言编译器,ARM C/C++编译器
  6. 《java虚拟机规范SE7》整理——第二章:Java虚拟机结构
  7. 1.什么是PyTorch
  8. JavaScript--【JS】排他思想
  9. Flutter开发之——下拉刷新
  10. oracle列分区,Oracle数据库分区--实例