HDFS体系结构(各种进程状态)_hdfs中包含哪些守护进程-程序员宅基地

技术标签: datanode  HDFS  hadoop  yarn  namenode  

HDFS体系结构(各种进程状态)

NameNode【名称节点】

  • 开启方式(关闭方式):
      1. hdfs namenode(关闭Terminal)
      1. hadoop-daemon.sh start namenode(hadoop-daemon.sh stop namenode或杀死进程)
      1. start-dfs.sh(stop-dfs.sh或杀死进程)
  1. namenode默认大小1000M
  2. namenode守护进程作用:
    1. 维护HDFS集群元数据的镜像文件[fsimage],【fsimage】包括:文件属性信息,文件与block块的对应关系
    2. 维护客户端对HDFS的相关操作,并记录[Edits_log]
    3. 接收所有来自datanode的心跳汇报,内容:block块的信息与所属节点位置

DataNode【数据节点】

  • 开启方式(关闭方式):
      1. hdfs datanode(关闭Terminal)
      1. hadoop-daemon.sh start datanode(hadoop-daemon.sh stop datanode或杀死进程)
      1. start-dfs.sh(stop-dfs.sh或杀死进程)
  1. datanode守护进程作用:
    1. datanode负责实时监控当前节点的运行状态
    2. datanode以block块的形式进行存储
    3. datanode要响应客户端的请求

SecondaryNameNode【辅助名称节点】

  • 开启方式(关闭方式):

      1. hdfs secondarynamenode(关闭Terminal)
      1. hadoop-daemon.sh start secondarynamenode(hadoop-daemon.sh stop secondarynamenode或杀死进程)
      1. start-dfs.sh(stop-dfs.sh或杀死进程)
  • 【定期合并fsimage文件和edits_log文件,保证集群的可靠性】

  1. secondarynamenode守护作用:【解决HDFS的可靠性】

    • 【secondarynamenode利用检查点机制,将fsimage和edits_log合并,解决宕机以后对HDFS的】

    • 【HA高可用是解决HDFS的单点故障】

    • 【区别:】

      • secondarynamenode是解决高可靠

        HA解决的是高可用,两者实现系统稳定运行的角度不一样

        用了高可用就不需要secondarynamenode了,有另一台节点存储namenode在运行的namenode挂掉的时候,该节点顶上去,保证高可用

  2. 可靠性:

    • 数据3份副本:确保数据的可靠性

      心跳机制:确保数据节点的可靠性

      secondarynamenode:确保宕机恢复的可靠性

      机架感知:性能的可靠性

YARN体系结构

ResourceManager(资源管理器)

  • 开启方式(关闭方式):

    • start-yarn.sh
    • stop-yarn.sh或杀死进程
  • 作用:

    1. 监控并分配集群全局资源,包括:CPU、内存、磁盘和网络。
    2. 通过心跳机制获取每个NodeManager节点的资源数据以及运行情况。
    3. 它将用于开启ApplicationMaster,分配所需资源。

NodeManager(节点管理器)守护进程

  • 开启方式(关闭方式):

    • start-yarn.sh
    • stop-yarn.sh或杀死进程
  • 作用:

    1. 管理并监控当前节点(自己)的资源使用情况。
    2. 通过心跳机制向ResourceManager进行汇报,汇报内容:CPU、内存、磁盘和网络。
    3. 用户执行启动Task任务(MapTask和ReduceTask)。

ApplicationMaster(应用主节点)守护进程

  • 作用:

    1. MRAppMaster生命周期随着Job产生而产生。
    2. 监控当前Job应用程序的调度,内容:资源(jar、conf、split)
    3. 向ResourceManager申请提交所需任务的资源。

    jar 默认10份副本

    split 默认10份

    job.xml 默认3份

    splitmetainfo 默认3份,切分元数据

YarnChild(yarn运行MapReduce应用时开启的)

【随应用的开启而开启,生命周期同应用】

  • 作用:
    1. YarnChild生命周期随着Job产生而产生
    2. 被MRAppMaster调度,用于运行mapTask或者reduceTask
    3. 一个节点默认最多开启2个
    4. 每个进程默认使用200M内存

JobHistoryServer

  • 开启方式:

    [hadoop@master hadoop]$ mr-jobhistory-daemon.sh start historyserver
    starting historyserver, logging to /home/hadoop/soft/hadoop-2.7.3/logs/mapred-hadoop-historyserver-master.out

    [hadoop@master hadoop]$ jps
    21896 JobHistoryServer
    21931 Jps

  • 作用:

    1. 记录Job作业的历史情况

伪分布式集群守护线程开启状态

方式一:start-dfs.sh + start-yarn.sh

  • start-dfs.sh会开启如下线程:

    • [hadoop@master ~]$ start-dfs.sh
      Starting namenodes on [master]
      master: starting namenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-namenode-master.out
      master: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-master.out
      Starting secondary namenodes [0.0.0.0]
      0.0.0.0: starting secondarynamenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-master.out

      主节点:(仅一个节点)

      [hadoop@master ~]$ jps
      17922 Jps

      17804 SecondaryNameNode

      17583 NameNode

      17886 DataNode

  • start-yarn.sh会开启如下线程:【只能在主节点执行该命令,从节点执行ResourceManager无法开启】

    • [hadoop@master ~]$ start-yarn.sh
      starting yarn daemons
      starting resourcemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-master.out
      slave02: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-slave02.out
      slave03: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-slave03.out
      slave01: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-slave01.out

      主节点:

      [hadoop@master ~]$ jps
      18262 Jps
      17804 SecondaryNameNode
      17998 ResourceManager
      17583 NameNode
      17886 DataNode

完全分布式集群守护线程开启状态:

  • 方式一:start-dfs.sh + start-yarn.sh

    • start-dfs.sh会开启如下线程:

      • [hadoop@master ~]$ start-dfs.sh
        Starting namenodes on [master]
        master: starting namenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-namenode-master.out
        slave03: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-slave03.out
        slave01: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-slave01.out
        slave02: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-slave02.out
        Starting secondary namenodes [0.0.0.0]
        0.0.0.0: starting secondarynamenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-master.out

        主节点:

        [hadoop@master ~]$ jps
        17922 Jps
        17804 SecondaryNameNode(仅1个,辅助名称节点单独主机上开启)
        17583 NameNode(仅1个,主节点中开启)

        【主节点开启NameNode守护进程以及SecondaryNameNode(一般会再启用一个主机给辅助名称节点)】

        从节点:

        [hadoop@slave01 ~]$jps
        19360 DataNode(多个,每个数据节点都会开启,用于维护和管理数据)
        19472 Jps

        【从节点开启DataNode守护进程,每个数据节点都会开启】

    • start-yarn.sh会开启如下线程:【只能在主节点执行该命令,从节点执行ResourceManager无法开启】

      • [hadoop@master ~]$ start-yarn.sh
        starting yarn daemons
        starting resourcemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-master.out
        slave02: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-slave02.out
        slave03: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-slave03.out
        slave01: starting nodemanager, logging to /home/hadoop/soft/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-slave01.out

        主节点:

        [hadoop@master ~]$ jps
        18262 Jps
        17804 SecondaryNameNode
        17998 ResourceManager(仅1个,主节点中开启)
        17583 NameNode

        【在主节点中会开启ResourceManager,,用于调度整体的资源】

        从节点:

        [hadoop@slave03 ~]$ jps
        18870 DataNode
        19035 NodeManager(多个,每个数据节点都会开启)
        19485 Jps

        【从节点会开启NodeManager,用于管控本节点的资源调度】

  • 方式二:

    hadoop-daemon.sh start namenode +

    hadoop-daemon.sh start datanode +

    hadoop-daemon.sh start secondarynamenode +

    start-yarn.sh

    • hadoop-daemon.sh start namenode

      • [hadoop@master ~]$ hadoop-daemon.sh start namenode
        starting namenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-namenode-master.out

        [hadoop@master ~]$ jps
        18731 NameNode
        18862 Jps

  • hadoop-daemon.sh start datanode

    • [hadoop@slave01 ~]$ hadoop-daemon.sh start datanode
      starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-slave01.out

      [hadoop@slave01 ~]$ jps
      19877 Jps
      19829 DataNode

      【分别在要开启的数据节点执行该命令,开启DataNode】

    • hadoop-daemon.sh start secondarynamenode

    • [hadoop@master ~]$ hadoop-daemon.sh start secondarynamenode
      starting secondarynamenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-master.out

      [hadoop@master ~]$ jps
      18827 SecondaryNameNode
      18862 Jps

      【任意节点都能开,将fsimage和edits_log文件做合并操作】

    • start-yarn.sh

  • 【通常采用方式二开启守护进程】

Job运行状态下的守护线程

  • 主节点:

    • [hadoop@master hadoop]$ jps
      20321 SecondaryNameNode
      20119 NameNode
      20761 Jps
      20474 ResourceManager

      【没有变化】

  • 从节点:

    • [hadoop@slave03 ~]$ jps
      20544 NodeManager
      20420 DataNode
      20857 YarnChild(在MRAppMaster开启后,MRAppMaster会根据Mapper任务的开启,启动YarnChild,用于执行Mapper任务以及reducer任务,一个数据节点默认最多开启2个YarnChild,而在哪个数据节点开启YarnChild也是随机的)
      20905 Jps
      20765 MRAppMaster(Job开启后,ResourceManager随机选定某个NodeManager,让其开启一个应用主节点,管理所有应用的运行,生命周期随Job的开启而开启,随Job的消亡而消亡)

      【开启了两个守护线程,MRAppMaster和YarnChild】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43855370/article/details/101721637

智能推荐

初学者python编辑器_Thonny:适合初学者的Python编辑器-程序员宅基地

文章浏览阅读8.9k次,点赞4次,收藏17次。初学者python编辑器Are you a Python beginner looking for a tool that can support your learning? This article is for you! Every programmer needs a place to write their code. This article will discuss an aweso..._thonny调试灰色

Java开发中token 的使用_java中token用法-程序员宅基地

文章浏览阅读8.7k次,点赞2次,收藏47次。Token流程: 1.建立token工具类,先编辑token签名sign():设置超时时长、token秘钥。 2.配置拦截器类,拦截器中重写preHandle()方法,对每次请求进行自定义的拦截操作。 3.建立配置类:定义拦截与不拦截的接口信息。页面请求登录接口→登录成功后,返回登录信息+token秘钥给前端→前端记住密钥信息,并赋予每个接口(例:在每个接口访问时将秘钥信息放置于headers中的参数下)→拦截器接到请求,从headers获取token密钥进行匹配,通过则继续访问,不通过则返回提示信_java中token用法

Web安全之PHP的伪协议漏洞利用,以及伪协议漏洞防护方法_php伪协议是漏洞吗-程序员宅基地

文章浏览阅读1.6k次,点赞3次,收藏14次。单纯看伪协议利用与之前的文件包含漏洞及其相似,但是在真实环境中是对用户输入进行了过滤替换的,在使用漏洞就需要不断考虑如何绕过这些过滤条件。只要我们开发过程中对于使用了伪协议这些函数的时候,一定要严格对用户参数进行过滤,避免一时偷懒导致服务器被黑,其实最终难逃其就。如有还不太理解或有其他想法的小伙伴们都可以私信我或评论区打出来哟,如有写的不好的地方也请大家多多包涵。_php伪协议是漏洞吗

oracle grant 授权语句_oracle授权语句grant-程序员宅基地

文章浏览阅读5.3k次。oracle grant 授权语句 --select * from dba_users; 查询数据库中的所有用户 --alter user TEST_SELECT account lock; 锁住用户 --alter user TEST_SELECT account unlock; 给用户解锁 --create user xujin identified by xu_oracle授权语句grant

软件创业见闻-程序员宅基地

文章浏览阅读87次。今天应一位朋友的邀请,过去蹭了个饭吃,顺便坐了一个下午在聊着。这位老哥是一家软件公司的老板,原来是从硬件销售转型到做软件这一块。因为说到软件这一块,我就很想了解一下这位老哥对于2009年的大势是怎么看的,在2009年这个年头他的业务是如何规划的? 结果老哥的一通说法,使得我受益不浅。老哥说道:09年的大势是好是坏比较难说,我也并不看的太清,但是我相信的一点是09年是我们公司发展的关键年,成败就..._软件实施创业

有关Linux下线程的调度_线程调度未执行某线程-程序员宅基地

文章浏览阅读677次。转载自:http://blog.csdn.net/hanchaoman/article/details/6697636 由于Linux对线程实现的一些特殊性,所以会给我们理解线程及其相关的一些函数带来疑惑,这里做个解答: 1、关于sleep 很多书籍上都说sleep这个系统调用会使整个进程sleep,而不单是sleep一个线程。这样说没错,但我们要是在Linux下写一_线程调度未执行某线程

随便推点

【计算机操作系统】实时操作系统-程序员宅基地

文章浏览阅读1.9k次。1. 实时内核:实时内核是实时系统的核心组成部分,它具有实时调度器、实时任务管理器、实时中断处理器等功能,能够确保任务在预定的时间内得到执行。实时任务通常分为硬实时任务和软实时任务两种类型,硬实时任务要求任务必须在预定的时间内完成,而软实时任务只需要尽量满足时间限制。它通常分为硬实时系统和软实时系统,其中硬实时系统要求任务的响应时间必须严格满足预定的时间限制,而软实时系统只需要尽量满足时间限制。实时调度算法必须满足实时系统的基本要求,例如任务的可预测性和响应时间的最小化等。_实时操作系统

手机可用熵_什么是熵?-程序员宅基地

文章浏览阅读279次。病房中的不确定性首先我们专注于一个简单的问题。在其他条件都相同的情况下,这三个病人中的哪个面临着最大的不确定性?这个问题的答案是显而易见的,病人 C。他所面临的是在这种情况下可能呢存在的最大程度的不确定性:就像医疗版本的抛硬币试验一样。对于病人 A 来说,虽然他的情况不容乐观,但是至少他对于是否患病这个问题有最小的不确定性。对于病人 B,他的不确定性在病人 A 和病人 C 之间。这就是为什么要引入..._熵用手机计算机怎么算

php 画验证码 header(image/png),php画图应用之验证码-程序员宅基地

文章浏览阅读416次。在画图里面,就像之前所说的。php的画图是真正动态画图,尽管自己承认会出的图是非常不好看的。但我们主要关注的应该还是数据处理。验证码我们差点儿无处不见,它的产生和画图技术是密不可分的。事实上,简单的验证码绘制出来是非常easy的,就像以下的一段代码就能够绘制出包括字母和数字的元素:$checkCode="";for($i=0; $i<=3;$i++){$checkCode.=dechex(r..._php header png

HTML期末作业-基于HTML+CSS+JavaScript制作学生信息管理系统模板_javascript、html进行信息管理-程序员宅基地

文章浏览阅读140次。‍ 学生管理系统网页设计 、OA管理系统、后台管理模板、智能停车系统、等网站的设计与制作。️HTML网页设计,采用DIV+CSS布局,共有多个页面,排版整洁,内容丰富,主题鲜明,首页使用CSS排版比较丰富,色彩鲜明有活力,导航与正文字体分别设置不同字号大小。导航区域设置了背景图。子页面有纯文字页面和图文并茂页面。 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新_javascript、html进行信息管理

【UiPath2022+C#】UiPath If条件语句_uipath闰年-程序员宅基地

文章浏览阅读1.3w次。本文主要介绍了UiPath的If语句三种实现方式,分别是通过序列、流程图和三目运算符实现。这大概是最详细的UiPath使用文档,环境:UiPath Studio Community 2022.4.3/Windows/C#,网上的文档和教程基本都是VB的,本文基于C#学习UiPath。..._uipath闰年

吉林省外国语大学计算机大赛,吉林 | 第五届吉林省"互联网+"大学生创新创业大赛总决赛在吉林外国语大学举行...-程序员宅基地

文章浏览阅读155次。原标题:吉林 | 第五届吉林省"互联网+"大学生创新创业大赛总决赛在吉林外国语大学举行 7月27日,"建行杯"第五届吉林省"互联网+"大学生创新创业大赛总决赛在吉林外国语大学举行。本届大赛由省教育厅、团省委、省发改委、省科技厅、省工业和信息化厅、省人力资源和社会保障厅、省农业农村厅、省网信办、省外事办、省扶贫办共同主办,吉林外国语大学承办,由建行吉林省分行协办。 吉林省委教育工委副书记、吉林省教育..._吉林省互联网+省赛决赛在什么时间

推荐文章

热门文章

相关标签