DataNode磁盘检测服务

对于像hdfs这样处理磁盘读写的服务来说,如何处理磁盘异常情况,这是一个关系到服务稳定性的问题,以下我们就从两个方面来看下hdfs如何处理磁盘问题:
1.DataNode节点如何保证磁盘数据以及磁盘读写等操作的健壮性, DataNode中会在内存中维护一份磁盘块元数据的信息,一般来说,内存中维护的磁盘块和磁盘中的磁盘块是一一对应的,不管是文件大小还是文件的版本号,两者都是一模一样的

1.1 DataNode中有一个叫做DirectoryScanner的定时扫描任务,其作用就是检测内存中磁盘块的数据和磁盘中磁盘块的数据的一致性,如果发现读取某个磁盘块的文件大小和内存中记录的该磁盘快文件大小不一样,那么会使用磁盘块的文件信息覆盖内存中的文件信息,如果发现内存中的某个磁盘块在物理磁盘中并不存在,则把内存中的该磁盘块删除,相反,如果发现物理磁盘中的某个磁盘块在DataNode的本地内存中不存在,则把该物理磁盘块的信息添加到本地内存中.此外,如果发现读取某个物理磁盘块时发生IO异常,则把这个磁盘块标记位坏块,Datanode读写时会绕过这个坏块,并把这个坏块信息报告给NameNode,NameNode上对应的界面上可以查看坏块的信息.

1.2 DataNode中还包括坏盘检测服务,这个服务的作用就是扫描每个磁盘,在对应的目录中试着创建文件和校验文件的读写权限,如果比如在创建目录时发生IO异常,表明这个磁盘已经损坏,DataNode就会把这个磁盘上面的所有数据块都标识为Bad 块,并把坏盘的信息上报给NameNode服务,NameNode的对应界面上可以展示出来损坏的磁盘

1.3 准实时的磁盘块检测服务,这个服务会不停的扫描可疑磁盘坏块,如果确定真的是坏的磁盘块,DataNode会把这个Bad块的信息上报给NameNode,DataNode会维护一份是否可疑磁盘坏块的列表,当读写磁盘块发生IO异常时,就会把发生异常的磁盘块添加到可疑的磁盘坏块列表中进一步检测

总之,DataNode会维护本地内存的磁盘块和物理磁盘块的数据的一致性,如果发现内存中的数据和物理磁盘块的数据不一致,他会首先修复数据,比如从内存中删除物理磁盘上其实并不存在的磁盘块等等,也就是说,DataNode不仅仅检测磁盘坏块,他还尽力的进行修复。其实DataNode的这种做法值得我们做日常系统时进行借鉴,有时候出现问题的地方是不可以预测的,所以如果只是检测而不进行修复是不够的,检测+修复才是一个合格兜底任务应该完成的事情

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataNodeHadoop分布式文件系统(HDFS)的关键组件之一,它负责存储实际的数据块并提供对这些数据块的读写操作。以下是DataNode的主要职责: 1. 存储数据块:DataNode负责存储HDFS中的数据块。当客户端写入文件时,DataNode会接收并存储数据块的副本。它会将数据块写入本地磁盘,并定期与NameNode通信,报告存储的数据块信息。 2. 响应读写请求:DataNode负责响应客户端的读写请求。当客户端需要读取文件时,它会向所需数据块所在的DataNode发送请求,并获取数据块的副本。当客户端需要写入文件时,DataNode会接收数据并将其写入适当的数据块。 3. 数据块复制与副本管理:DataNode负责数据块的复制和副本管理。根据HDFS的默认配置,每个数据块都会有多个副本,分布在不同的DataNode上以实现数据的冗余和可靠性。DataNode会与其他DataNode进行通信,根据复制策略创建、复制和删除数据块的副本。 4. 心跳与健康检查:DataNode会定期向NameNode发送心跳信号,以保持与NameNode的连接并提供自身的健康状态信息。NameNode通过接收这些心跳信号来检测DataNode的可用性和健康状况。如果某个DataNode长时间未发送心跳信号或被判断为不可用,NameNode会将其标记为故障节点,并采取相应措施,如复制丢失的数据块。 5. 数据块的移动和平衡:DataNode可能会在集群中进行数据块的移动和平衡操作。当集群中的某些DataNode存储的数据块过多或过少时,NameNode可能会请求DataNode之间进行数据块的移动和平衡,以优化数据的分布和利用率。 总之,DataNodeHDFS中扮演着关键的角色,负责存储数据块、响应读写请求、复制与副本管理、心跳与健康检查以及数据块的移动和平衡。它的稳定性和高可用性对整个HDFS系统的可靠性和性能至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值