搜索
首页数据库mysql教程hadoop本地目录相关代码分析
hadoop本地目录相关代码分析Jun 07, 2016 pm 04:38 PM
hadoop代码分析本地目录相关

最近hadoop本地磁盘总是坏,伴随着有些hadoop job失败,阅读了一些相关的代码。 本地磁盘健康检查 NodeManager默认会每两分钟检查本地磁盘(local-dirs),找出那些目录可以使用。注意这里如果判定这个磁盘不可用,则在重启NodeManager之前,就算磁盘好了,

最近hadoop本地磁盘总是坏,伴随着有些hadoop job失败,阅读了一些相关的代码。

本地磁盘健康检查

NodeManager默认会每两分钟检查本地磁盘(local-dirs),找出那些目录可以使用。注意这里如果判定这个磁盘不可用,则在重启NodeManager之前,就算磁盘好了,也不会把它变成可用。代码在LocalDirsHandlerService,DirectoryCollection。

当好磁盘数少于一定量时,会把这台机器变成unhealthy,将不会再给这台机器分配任务。

参数 :

yarn.nodemanager.disk-health-checker.enable ? ? 是否开启磁盘健康检查,默认是开启
yarn.nodemanager.disk-health-checker.interval-ms 检查间隔时间,默认是2分钟
yarn.nodemanager.disk-health-checker.min-healthy-disks ?最少健康磁盘的个数,默认值是0.25,如果少于这个值,则把这个节点变成unhealthy

本地磁盘使用

NodeManager会从hdfs下载job.jar等东西,这叫资源本地化。代码在ResourceLocalizationService和DefaultContainerExecutor里。

token文件会使用第一个好的local-dirs,其他的文件会顺序的使用local-dirs,文件可能分散在各个盘上。

?AppMaster重试

AppMaster重试是由RM触发,代码在RMAppImpl的AttemptFailedTransition事件里。默认重试次数是1次(也就是不重试)

参数:

yarn.resourcemanager.am.max-retries  AM最大重试次数

TaskAttempt重试

我们的map和reduce任务都是一个个TaskAttempt,TaskAttempt由AppMaster来管理,启动和重启的操作都是由AppMaster来处理。代码在TaskImpl的AttemptFailedTransition里

参数:

mapreduce.map.maxattempts          map最大重试次数,默认是4
mapreduce.reduce.maxattempts      reduce最大重试次数,默认是4

AppMaster资源分配

AppMaster会定时申请、释放container资源,代码在RMContainerRequestor.containerFailedOnHost

当taskAttempt在一个节点的失败数目超过一定上限(通过参数?mapreduce.job.maxtaskfailures.per.tracker 配置,默认是3),该节点会被加入临时的黑名单,为了防止大量的机器加入黑名单,还有个参数?yarn.app.mapreduce.am.job.node-blacklisting.ignore-threshold-node-percent 设置最多被加入黑名单的比例,默认值是33,当超过33%的机器被加入黑名单,则黑名单将会失效。

加入黑名单后,会让RM回收这台机器的container,申请其他机器的container

参数:

mapreduce.job.maxtaskfailures.per.tracker  失败多少次后,加入黑名单,默认是3
yarn.app.mapreduce.am.job.node-blacklisting.ignore-threshold-node-percent  加入黑名单的比例超过这个值时,关闭黑名单,默认是33
yarn.app.mapreduce.am.job.node-blacklisting.enable  是否使用黑名单,默认true

最终处理

在AM失败重启前,先sleep两分钟,等待磁盘健康检查完成。TaskAttempt有黑名单的方式,由于本地磁盘损坏造成的失败可能会比较少触发。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何在 Google Docs 中插入目录如何在 Google Docs 中插入目录Apr 13, 2023 pm 08:16 PM

无论是文章、论文还是教程,任何文档的主要亮点都是标题,当然还有目录。它描述了文档的大纲结构,以便用户可以到达他们期待从文档中读取的位置和内容。将目录添加到大多数文档中以使它们看起来更专业也是一种最佳实践。如今,一切都在网上进行,人们使用谷歌文档来创建大多数文档。许多用户仍然不确定如何在 google 文档中插入或添加目录。因此,我们提出了这篇文章来解释如何在谷歌文档中创建或插入目录。如何在 Google Docs 中插入目录第 1 步:点击此处访问 Google Docs 在线版。第 2 步:如

Java错误:Hadoop错误,如何处理和避免Java错误:Hadoop错误,如何处理和避免Jun 24, 2023 pm 01:06 PM

Java错误:Hadoop错误,如何处理和避免当使用Hadoop处理大数据时,常常会遇到一些Java异常错误,这些错误可能会影响任务的执行,导致数据处理失败。本文将介绍一些常见的Hadoop错误,并提供处理和避免这些错误的方法。Java.lang.OutOfMemoryErrorOutOfMemoryError是Java虚拟机内存不足的错误。当Hadoop任

使用java的File.isDirectory()函数判断文件是否存在且为目录类型使用java的File.isDirectory()函数判断文件是否存在且为目录类型Jul 24, 2023 pm 06:57 PM

使用java的File.isDirectory()函数判断文件是否存在且为目录类型在Java编程中,经常会遇到需要判断一个文件是否存在且为目录类型的情况。Java提供了File类来操作文件和目录,其中的isDirectory()函数可以帮助我们判断一个文件是否是目录类型。File.isDirectory()函数是File类中的一个方法,其作用是判断当前Fil

汽水音乐本地音乐怎么添加汽水音乐本地音乐怎么添加Feb 23, 2024 pm 07:13 PM

汽水音乐本地音乐怎么添加?汽水音乐APP中可以添加自己喜爱的本地音乐,但是多数的小伙伴不知道如何添加本地音乐,接下来就是小编为用户带来的汽水音乐本地音乐添加方法图文教程,感兴趣的用户快来一起看看吧!汽水音乐使用教程汽水音乐本地音乐怎么添加1、首先打开汽水音乐APP,主页面最下方【音乐】功能专区点击;2、之后进入到播放页面,点击右下角【三个点】图标;3、最后下方展开功能栏,选择其中【下载】按钮即可添加到本地音乐。

PHP函数介绍—rename(): 重命名文件或目录PHP函数介绍—rename(): 重命名文件或目录Jul 25, 2023 pm 12:10 PM

PHP函数介绍—rename():重命名文件或目录介绍:在PHP中,rename()函数用于重命名文件或目录。它提供了一种简单的方法来更改文件或目录的名称。无论是单个文件还是整个目录,都可以使用这个函数进行重命名操作。通过指定源文件或目录的名称以及目标名称,可以轻松地完成重命名过程。语法:boolrename(string$source,str

PHP保存远程图片到本地后如何添加水印并保存?PHP保存远程图片到本地后如何添加水印并保存?Jul 11, 2023 pm 11:48 PM

PHP保存远程图片到本地后如何添加水印并保存?在PHP开发中,经常会遇到需要将远程图片保存到本地的需求。而有时候,我们可能还需要在保存后的图片上添加水印以保护版权或增加额外信息。本文将介绍如何使用PHP保存远程图片到本地,并在保存后的图片上添加水印。一、保存远程图片到本地首先,我们需要使用PHP的文件操作函数将远程图片保存到本地。下面是一个简单的示例代码:&

linux怎么查看目录是否为空linux怎么查看目录是否为空Mar 20, 2023 am 10:17 AM

linux查看目录是否为空的方法:1、进入linux终端;2、通过执行“res=`ls -A $dir` if [ -z $res ];then echo "$dir ..."else echo "$dir ..."fi”方法判断目录是否为空即可。

使用path/filepath.Split函数将路径拆分为目录和文件名两部分使用path/filepath.Split函数将路径拆分为目录和文件名两部分Jul 25, 2023 pm 05:57 PM

使用path/filepath.Split函数将路径拆分为目录和文件名两部分在开发程序或处理文件时,经常需要将路径拆分为目录和文件名两部分进行操作。在Go语言中,可以使用path/filepath包中的Split函数来实现这一功能。本文将介绍Split函数的用法,并给出代码示例。Split函数的定义如下:funcSplit(pathstring)(di

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境