前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop——健康检测

Hadoop——健康检测

作者头像
陈猿解码
发布2023-02-28 14:39:02
5280
发布2023-02-28 14:39:02
举报
文章被收录于专栏:陈猿解码

【前言】

通常后端服务都会设计自身的健康检测逻辑。

所谓的健康检测,就是定期检测节点运行所必须的环境是否满足需求,如果不满足则拒绝提供服务。

HDFS和YARN中涉及的各个服务也不例外,基本上也都设置了相应的检测逻辑。

当检测不满足指定条件时拒绝提供服务,直到所需的条件满足要求。

下面就来总结下hdfs与yarn涉及的组件的健康检测逻辑及相关配置。


【NameNode】

Namenode存储了整个HDFS的元数据信息,而这些元数据信息会持久化到磁盘上,如果磁盘满了,元数据信息无法写入的话,可能会导致数据的丢失。

因此,Namenode在启动后,会定期对fsimage和editlog存储的目录进行检测,当目录所在的磁盘空间小于设置的阈值时,namenode会进入安全模式,直到磁盘空间大于设置的阈值时,才离开安全模式。

涉及的配置项有:

代码语言:javascript
复制
dfs.namenode.resource.check.interval

namenode进行检测的时间间隔,默认值为5000ms

代码语言:javascript
复制
dfs.namenode.resource.du.reserved

数据存储目录所需的最小剩余空间大小,剩余空间小于该值时,进入安全模式。默认值为 104857600字节,即100MB

代码语言:javascript
复制
dfs.namenode.resource.checked.volums

额外指定需要检测的目录列表。

默认仅检测指定的目录,如果还有其他目录需要一并检测,可以通过该配置项进行设置。


【NodeManager】

Nodemanager所在的节点主要是运行各个application中的container,而container运行过程中产生的中间数据以及日志信息都会写到磁盘上。

因此,nodemanager也会定期对指定目录进行检测,如果目录所在的磁盘剩余空间小于指定的阈值,nodemanager自身进入非健康状态,并将此状态上报给resourcemanager,resourcemanager将不会再给该节点分配任务。

涉及的配置项有:

代码语言:javascript
复制
yarn.nodemanager.local-dirs

存放container执行过程中中间数据的根目录列表,多个目录以逗号分隔。

代码语言:javascript
复制
yarn.nodemanager.log-dirs

存放application本地执行日志的根目录列表,多个目录以逗号分隔。

代码语言:javascript
复制
yarn.nodemanager.disk-health-checker.enable

是否启用对磁盘的健康检测。

默认值为 true,即启用健康检测。

代码语言:javascript
复制
yarn.nodemanager.disk-health-checker.interval-ms

进行健康检测的时间间隔。

默认值为 120000ms 即2分钟。

代码语言:javascript
复制
yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage

目录对应磁盘空间已使用空间的最大值,即当目录对应磁盘空间已使用空间超过该值时,NM会标记该磁盘为坏盘。

可选值范围为 0.0-100.0 默认值为 90.0。

(假如NM所在节点只有一块磁盘,并且该磁盘的已使用的空间超过阈值,那么NM将变为非健康状态)

代码语言:javascript
复制
yarn.nodemanager.disk-health-checker.disk-utilization-watermark-low-per-disk-percentage

坏盘重新被标记为好盘的最小值,也就是磁盘已使用空间小于该值时,才重新被标记为好盘。

代码语言:javascript
复制
yarn.nodemanager.disk-health-checker.min-healthy-disks

被标记为健康状态时,好(磁)盘占总磁盘个数的最小百分比。

由于local可以配置为一个目录列表,当这些目录所在磁盘被标记为好盘的个数占总数的百分比超过该值时,NM服务才算是健康状态。

默认值为 0.25

注:local和log目录是分别进行计算的

也就是只有local和log目录对应的好盘比例都超过该值时,才为健康状态

除了上面默认的检测机制外,还可以通过编写脚本的方式,自定义健康检测机制,涉及的配置项如下所示(这里不展开讲解,读者可以自行查看官方文档)

代码语言:javascript
复制
yarn.nodemanager.health-checker.interval-ms
yarn.nodemanager.health-checker.script.timeout-ms
yarn.nodemanager.health-checker.script.path
yarn.nodemanager.health-checker.script.opts

【Datanode】

Datanode上存放block数据块,因此,也会对磁盘空间进行检测。

datanode与nodemanger的机制类似,通过将自身状态上报给namenode,namenode感知datanode的状态,并决定是否要将block块存放到该datanode上。

涉及的配置项有:

代码语言:javascript
复制
dfs.datanode.du.reserved.calculator

磁盘空间的计算方式。

默认值为

代码语言:javascript
复制
org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.ReservedSpaceCalculator\ReservedSpaceCalculatorAbsolute

其他可选的值有

代码语言:javascript
复制
org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.ReservedSpaceCalculator\ReservedSpaceCalculatorPercentage
代码语言:javascript
复制
dfs.datanode.du.reserved

磁盘预留(剩余)空间的字节数大小,默认值为0

代码语言:javascript
复制
仅当dfs.datanode.du.reserved.calculator配置为
org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.ReservedSpaceCalculator\ReservedSpaceCalculatorAbsolute
时有效
代码语言:javascript
复制
dfs.datanode.du.reserved.pct

磁盘预留(剩余)空间大小的百分比

代码语言:javascript
复制
仅当dfs.datanode.du.reserved.calculator配置为
org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.ReservedSpaceCalculator\ReservedSpaceCalculatorPercentage
时有效

【总结】

本文主要总结了hadoop中各个节点的健康检测策略,以及对应的配置项。

像namenode作为管理节点,本身一旦检测到达不到健康的条件,则主动进入安全模式拒绝提供写服务(仍旧可读),而像datanode和nodemanager作为自节点则是进行自身状态的上报,由namenode和resourcemanager来决定是否继续作为工作节点提供服务。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈猿解码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档