iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用Hadoop源码分析心跳机制
  • 353
分享到

怎么用Hadoop源码分析心跳机制

2023-06-17 10:06:09 353人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关怎么用hadoop源码分析心跳机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一.心跳机制 hadoop集群是master/slave模式,master包括Na

这篇文章将为大家详细讲解有关怎么用hadoop源码分析心跳机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一.心跳机制

hadoop集群是master/slave模式,master包括Namenode和Jobtracker,slave包括Datanode和Tasktracker。

master启动的时候,会开一个ipc server在那里,等待slave心跳。

slave启动时,会连接master,并每隔3秒钟主动向master发送一个“心跳”,这个时间可 以通过”heartbeat.recheck.interval”属性来设置。将自己的状态信息告诉master,然后master也是通过这个心跳的返回值,向slave节点传达指令。

需要指出的是:namenode与datanode之间的通信,jobtracker与tasktracker之间的通信,都是通过“心跳”完成的。

二.Datanode、Namenode心跳源码分析

既然“心跳”是Datanode主动给Namenode发送的。那Datanode是怎么样发送的呢?下面贴出Datanode.class中的关键代码:

代码一:

   public void offerService() throws Exception {  •••      while (shouldRun) {        try {          long startTime = now();           // heartBeatInterval是在启动Datanode时根据配置文件设置的,是心跳间隔时间          if (startTime - lastHeartbeat > heartBeatInterval) {            lastHeartbeat = startTime;  //Datanode发送心跳            DatanodeCommand[] cmds = namenode.sendHeartbeat(dnReGIStration,                                                         data.getCapacity(),                                                         data.getDfsUsed(),                                                         data.getRemaining(),                                                         xmitsInProgress.get(),                                                         getXceiverCount());            myMetrics.addHeartBeat(now() - startTime);                       if (!processCommand(cmds))              continue;          }                 •••        }      } // while (shouldRun)    } // offerService

需要注意的是:发送心跳的对象并不是datanode,而是一个名为namenode的对象,难道在datanode端就直接有个namenode的引用吗?其实不然,我们来看看这个namenode吧:

代码二:

public DatanodeProtocol namenode = null;

namenode其实是一个DatanodeProtocol的引用,在对hadoop rpc机制分析的文章中我提到过,这是一个Datanode和Namenode通信的协议,其中有许多未实现的接口方法,sendHeartbeat()就是其中的一个。下面看看这个namenode对象是怎么被实例化的吧:

代码三:

this.namenode = (DatanodeProtocol)       RPC.waitForProxy(DatanodeProtocol.class,                       DatanodeProtocol.versionID,                       nameNodeAddr,                        conf);

其实这个namenode并不是Namenode的一个对象,而只是一个Datanode端对Namenode的代理对象,正是这个代理完成了“心跳”。代理的底层实现就是RPC机制了。

三.Tasktracker、Jobtracker心跳源码分析

同样我们从Tasktracker入手,下面贴出Tasktracker.class的关键代码:

代码四:

代码一:  State offerService() throws Exception {      long lastHeartbeat = System.currentTimeMillis();      while (running && !shuttingDown) {       •••                    // 发送心跳,调用代码二          HeartbeatResponse heartbeatResponse = transmitHeartBeat(now);         •••      return State.NORMAL;    }   代码二:  HeartbeatResponse transmitHeartBeat(long now) throws IOException {     •••      HeartbeatResponse heartbeatResponse = jobClient.heartbeat(status,                                                                 justStarted,                                                                justInited,                                                                askForNewTask,                                                            heartbeatResponseId);                                •••      return heartbeatResponse;    }

其实我觉得分析到这里大家就可以自己分析了,jobClient也是一个协议:

代码五:

InterTrackerProtocol jobClient;

该协议用于定义Tasktracker和Jobtracker的通信。同样,它也是一个代理对象:

代码六:

this.jobClient = (InterTrackerProtocol)       UserGroupInformation.getLoginUser().doAs(          new PrivilegedExceptionAction<Object>() {        public Object run() throws IOException {          return RPC.waitForProxy(InterTrackerProtocol.class,              InterTrackerProtocol.versionID,              jobTrackAddr, fConf);        }      });

终于,hadoop底层通信整个系列的源码分析全部完成了。

关于怎么用Hadoop源码分析心跳机制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 怎么用Hadoop源码分析心跳机制

本文链接: https://www.lsjlt.com/news/288284.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Hadoop源码分析心跳机制
    这篇文章将为大家详细讲解有关怎么用Hadoop源码分析心跳机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一.心跳机制 hadoop集群是master/slave模式,master包括Na...
    99+
    2023-06-17
  • Ceph心跳机制的示例分析
    这篇文章将为大家详细讲解有关Ceph心跳机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 心跳介绍心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。问题:故障...
    99+
    2023-06-05
  • Flask核心机制--上下文源码剖析
    一、前言   了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很多博文有关于对flask上下文管理...
    99+
    2023-01-30
    上下文 源码 机制
  • hadoop 切片机制分析与应用
    前言 上面是一张MapReduce读取一个文本数据的逻辑顺序处理图。我们知道,不管是本地运行还是集群模式下,最终以job的任务调度形式运行,主要分为两个阶段 Map阶段,开启Map...
    99+
    2024-04-02
  • RocketMQ producer容错机制源码分析
    这篇文章主要介绍“RocketMQ producer容错机制源码分析”,在日常操作中,相信很多人在RocketMQ producer容错机制源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • Vue3响应式机制源码分析
    本篇内容介绍了“Vue3响应式机制源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是响应式响应式一直都是 Vue 的特色功能之一;...
    99+
    2023-07-06
  • SpringCloud @RefreshScope刷新机制源码分析
    今天小编给大家分享一下SpringCloud @RefreshScope刷新机制源码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2023-07-05
  • java锁机制ReentrantLock源码实例分析
    目录一:简述二:ReentrantLock类图三:流程简图四:源码分析lock()源码分析:非公平实现:公平锁实现:tryAcquire()方法公平锁实现:非公平锁实现:addWai...
    99+
    2024-04-02
  • MySQL多版本并发控制机制源码分析
    本篇内容主要讲解“MySQL多版本并发控制机制源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL多版本并发控制机制源码分析”吧!MVCC(多版本并...
    99+
    2024-04-02
  • webpack源码之loader机制的示例分析
    这篇文章主要介绍webpack源码之loader机制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!loader概念loader是用来加载处理各种形式的资源,本质上是一个函数...
    99+
    2024-04-02
  • 从源码角度分析Android的消息机制
    目录前言ThreadLocal的工作原理Looper的工作原理Handler的工作原理总结参考资料前言 说到Android的消息机制,那么主要的就是指的Handler的运行机制。其...
    99+
    2024-04-02
  • 如何进行HashMap扩容机制源码分析
    这期内容当中小编将会给大家带来有关如何进行HashMap扩容机制源码分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体看源码之前,我们先简单的说一下HashMap的底层数据结构  1、HashMap底...
    99+
    2023-06-02
  • 怎么用源代码分析FileZilla
    本篇文章给大家分享的是有关怎么用源代码分析FileZilla,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代...
    99+
    2023-06-16
  • HashMap源码怎么分析
    这篇文章主要介绍“HashMap源码怎么分析”,在日常操作中,相信很多人在HashMap源码怎么分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HashMap源码怎么分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-05
  • hadoop切片机制怎么应用
    这篇文章主要介绍“hadoop切片机制怎么应用”,在日常操作中,相信很多人在hadoop切片机制怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”hadoop切片机制怎么应用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • 怎么用源码分析Play Framework hotswap
    这期内容当中小编将会给大家带来有关怎么用源码分析Play Framework hotswap,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Play Framework hotswap的卖点就在于 hot ...
    99+
    2023-06-17
  • RocketMQ源码分析之Broker过期消息清理机制
    目录前言Broker消息清理机制简介Broker与消息清理相关配置消息清理机制源码分析CommitLog清理源码分析ConsumeQueue和IndexFile清理源码分析Consu...
    99+
    2023-05-19
    RocketMQ Broker过期消息清理 RocketMQ Broker
  • 怎么进行ActionInvoker源码分析
    本篇内容介绍了“怎么进行ActionInvoker源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!throw new&nbs...
    99+
    2023-06-17
  • Vue异步更新DOM及$nextTick执行机制源码分析
    本篇内容介绍了“Vue异步更新DOM及$nextTick执行机制源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vue异步更新DOM策...
    99+
    2023-07-05
  • Android事件分发机制深入刨析原理及源码
    目录前言事件分发原因事件分发对象事件分发方法事件分发参与者事件分发流程事件分发源码前言 在 Android 中,事件分发机制是一块很重要的知识点, 掌握这个机制能帮你在平时的开发中解...
    99+
    2023-05-16
    Android事件分发机制 Android事件分发机制原理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作