一、 前言

今天朋友问我HDFS中,如果namenode 10分30秒没有收到dn心跳,则判断dn不可用,这个10分30秒是怎么来的。翻源码过程如下。版本:hadoop270

二、Datanode发送心跳

1. DataNode.java的main方法

2. createDataNode方法

3. instantiateDataNode方法

4. makeInstance方法

5. 实例化DataNode对象,在初始化一些配置之后,进入startDataNode方法,启动dn

6. 初始化块池管理器,向nn注册

7. 启动BPOfferService,每个bpos对应一个nn组(一主一备)

8. BPServiceActor(每个BPServiceActor对应一个nn)是一个线程,找到其run方法。循环向nn注册/心跳

9. offerService方法,拿到nn的代理,通过RPC请求向nn发送心跳

10. NameNodeRpcServer类的sendHeartbeat方法,一路追

刷新lastUpdateMonotonic这个值

三、NameNode处理心跳

1. NameNode的main方法

2. 实例化

3. 初始化

4. 启动一些(主备)共有服务

5. 启动一些线程

6. 监控心跳的线程

可以看到,每隔5min(heartbeatRecheckInterval)就进行一次心跳检查

7. 心跳检查时候判断dn是否dead,如果10min30S没有收到心跳,既判断为dead

node.getLastUpdateMonotonic是datanode调用NN RPC服务时更新的。上文已表述

HDFS心跳机制--判断DN失联部分的源码解析相关推荐

  1. Handler消息机制(九):IntentService源码解析

    作者:jtsky 链接:https://www.jianshu.com/p/0a150ec09a32 简介 首先我们先来了解HandlerThread和IntentService是什么,以及为什么要将 ...

  2. jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)

    有序集合类型键实现 1. 有序集合命令 Redis有序集合命令如下表所示:Redis 有序集合命令详解 2. 有序集合类型实现 有序集合对象的底层实现类型如下表: 关于底层的数据结构剖析和实现,请看如 ...

  3. Handler消息机制(十):HandlerThread源码解析

    作为Android开发者都知道在子线程中使用Handler必须要创建Looper,其实HandlerThread就是在线程中封装了Looper的创建和循环,不用我们开发者自己去创建它,下面我们来看看源 ...

  4. Redis源码解析(15) 哨兵机制[2] 信息同步与TILT模式

    Redis源码解析(1) 动态字符串与链表 Redis源码解析(2) 字典与迭代器 Redis源码解析(3) 跳跃表 Redis源码解析(4) 整数集合 Redis源码解析(5) 压缩列表 Redis ...

  5. 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )

    文章目录 一.线程池作用 二.线程池种类 三.线程池工作机制 四.线程池任务调度源码解析 一.线程池作用 线程池作用 : ① 避免创建线程 : 避免每次使用线程时 , 都需要 创建线程对象 ; ② 统 ...

  6. [源码解析] 从TimeoutException看Flink的心跳机制

    [源码解析] 从TimeoutException看Flink的心跳机制 文章目录 [源码解析] 从TimeoutException看Flink的心跳机制 0x00 摘要 0x01 缘由 0x02 背景 ...

  7. HDFS源码解析:教你用HDFS客户端写数据

    摘要:终于开始了这个很感兴趣但是一直觉得困难重重的源码解析工作,也算是一个好的开端. 本文分享自华为云社区<hdfs源码解析之客户端写数据>,作者: dayu_dls. 在我们客户端写数据 ...

  8. 【kafka】Kafka 源码解析:Group 协调管理机制

    1.概述 转载:Kafka 源码解析:Group 协调管理机制 在 Kafka 的设计中,消费者一般都有一个 group 的概念(当然,也存在不属于任何 group 的消费者),将多个消费者组织成一个 ...

  9. MapReduce的分片机制源码解析

    目录 一.分⽚的概念 二.分片大小的选择 三.源码解析 1)FileSplit源码解析 2)FileInputFormat源码解析 3)TextInputFormat源码解析 4) LineRecor ...

最新文章

  1. css技巧之如何实现ul li边框重合
  2. 这个开源项目帮你将Linux命令行一网打尽!
  3. TF之RNN:实现利用scope.reuse_variables()告诉TF想重复利用RNN的参数的案例
  4. 多线程学习笔记一之内置锁
  5. 0222互联网新闻 | 快手推游戏直播App“电喵直播”及工具型App光音Mulight;“AI音乐学院”完成PreA轮融资...
  6. dotnet core开发体验之开始MVC
  7. 塑料壳上下扣合的卡扣设计_一种塑料件卡扣结构制造技术
  8. win8+sdk8+vs2012+freeglut+glew开发opengl
  9. OsmocomBB编译及GSM嗅探问题(转)
  10. 【知识图谱系列】基于2D卷积的知识图谱嵌入
  11. 一些嵌入式面试题目的集锦
  12. Xilinx FPGA 下载器驱动提示“系统找不到指定的路径”的解决办法
  13. html5银行理财项目实践作业,金融理财产品实践报告.doc
  14. 我对Javascript闭包的理解
  15. 计算机保研个人简介,保研个人简历模板
  16. 爬虫爬取招聘信息并进行数据分析
  17. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  18. Iphone 开发播放音频无声音
  19. Android中画布连线的连线动画的实现
  20. jQuery弹出插件thickbox使用心得

热门文章

  1. 场内场外交易成本_场内基金与场外基金各有什么优劣势?
  2. Docker容器入门及网易最佳实践
  3. 【UV打印机】电器之开关电源LRS-350
  4. arcgis10.2以上dbf用excel打开中文乱码问题(10.8为例)
  5. 基因编辑技术:能让人类永生下去?
  6. 韩老师——数据结构与算法—单链表的生成及增删改查操作和常见关于链表的面试题java代码实现
  7. 2022年人工智能在行业发展的趋势及普及
  8. Mind the Box: $\ell_1$-APGD for Sparse Adversarial Attacks on Image Classifiers
  9. 同态基本定理及其应用
  10. PHP中magic_quotes_gpc和magic_quotes_runtime的区别、作用和用法