首页 > 其他分享 >Hadoop组件架构

Hadoop组件架构

时间:2024-01-16 16:36:06浏览次数:20  
标签:HDFS 架构 Hadoop 应用程序 ApplicationMaster DataNode 组件 Container block

一、HDFS

1.HDFS架构

HDFS是一个主/从(Master/Slave)体系结构,由三部分组成:NameNodeDataNode以及SecondaryNamenode

  • NameNode负责管理整个文件系统的元数据,比如文件名、文件目录结构、文件属性(生成时间、block副本数、权限)、block大小以及组成文件的block信息。
  • DataNode负责文件数据块(block)的读写操作和复制操作,每一个数据块都可以在多个DataNode上存储多个副本,默认为3个。DataNode之间会进行通信,复制数据块。
  • Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。最主要作用是辅助NameNode管理元数据信息。
NameNode DataNode
存储元数据 存储文件内容
元数据保存在内存中 文件内容保存在硬盘
保存文件、block、DataNode之间的映射关系 维护block id到DataNode本地文件的映射关系

2.HDFS的特性

  1. master/slave架构(主从架构)

    HDFS采用master/slave架构。一般一个HDFS集群是由一个NameNode和多个DataNode组成。Namenode是集群主节点,两者共同完成分布式的文件存储服务。

  2. 分块存储

    HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数来规定。

  3. 命名空间(NameSpace)

    HDFS 支持传统的层次型文件组织结构。Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 Namenode 记录下来。
    HDFS 会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。

  4. NameNode元数据管理

    目录结构及文件分块位置信息叫做元数据。NameNode负责维护整个 HDFS 文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的 id,及所在的 DataNode 服务器)。

  5. DataNode数据存储

    文件的各个block的具体存储管理由DataNode节点承担。每一个 block 都可以在多个 DataNode 上。DataNode 需要定时向 NameNode 汇报自己持有的 block 信息。 存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)

二、YARN

1. YARN架构

  1. ResourceManager

    RM是一个全局的资源管理器,负责整个系统的资源管理和分配,它主要由两个部分组成:调度器(Scheduler)和应用程序管理器(Application Manager)。

    调度器根据容量、队列等限制条件,将系统中的资源分配给正在运行的应用程序,在保证容量、公平性和服务等级的前提下,优化集群资源利用率,让所有的资源都被充分利用 。

    应用程序管理器负责管理整个系统中的所有的应用程序,包括应用程序的提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重启它。

  2. ApplicationMaster

    用户提交的一个应用程序会对应于一个ApplicationMaster,它的主要功能有:

    • 与RM调度器协商以获得资源,资源以Container表示。
    • 将得到的任务进一步分配给内部的任务。
    • 与NM通信以启动/停止任务。
    • 监控所有的内部任务状态,并在任务运行失败的时候重新为任务申请资源以重启任务。
  3. NodeManager

    NodeManager是每个节点上的资源和任务管理器,一方面,它会定期地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,他接收并处理来自AM的Container启动和停止请求。

  4. Container

    Container是YARN中的资源抽象,封装了各种资源。一个应用程序会分配一个Container,这个应用程序只能使用这个Container中描述的资源。

2.YARN任务提交流程

当jobclient向YARN提交一个应用程序后,YARN将分两个阶段运行这个应用程序:一是启动ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,监控运行直到结束。

具体步骤如下:

  1. 用户向YARN提交一个应用程序,并指定ApplicationMaster程序、启动ApplicationMaster的命令、用户程序。
  2. RM为这个应用程序分配第一个Container,并与之对应的NM通讯,要求它在这个Container中启动应用程序ApplicationMaster。
  3. ApplicationMaster向RM注册,然后拆分为内部各个子任务,为各个内部任务申请资源,并监控这些任务的运行,直到结束。
  4. AM采用轮询的方式向RM申请和领取资源。
  5. RM为AM分配资源,以Container形式返回
  6. AM申请到资源后,便与之对应的NM通讯,要求NM启动任务。
  7. NodeManager为任务设置好运行环境,将任务启动命令写到一个脚本中,并通过运行这个脚本启动任务
  8. 各个任务向AM汇报自己的状态和进度,以便当任务失败时可以重启任务。
  9. 应用程序完成后,ApplicationMaster向ResourceManager注销并关闭自己

标签:HDFS,架构,Hadoop,应用程序,ApplicationMaster,DataNode,组件,Container,block
From: https://www.cnblogs.com/coke0914/p/17967963

相关文章

  • Hadoop集群搭建
    Hadoop集群搭建1、服务器配置服务器名称配置master2C2Gslave12C2Gslave21C2G1.1修改主机名#Centos永久修改主机名命令hostnamectlset-hostnamemaster1.2主机映射vim/etc/hosts#需要设置的服务器:ip为内网,其他服务器:ip为外网172.16.0.3mas......
  • Hue安装以及集成组件
    ​ 介绍Hue支持以下服务HDFS、HBase、S3Hive、Impala、Presto、Trino、Flink、Phoenix、DruidSolr、ES、ClickHouseSpark、Yarn、Ooize、KnoxOracle、PG、DB2、Vertica、MYSQL最新5.x版本支持Ozone用于数据库、数据仓库甚至数据湖的Hadoop用户体验(HUE)Hue是一个......
  • 北斗GPS卫星时钟服务器(NTP服务器)架构方法步骤
    北斗GPS卫星时钟服务器(NTP服务器)架构方法步骤北斗GPS卫星时钟服务器(NTP服务器)架构方法步骤京准电子科技官微——ahjzsz一、施工简介:应贵司要求,我司提供卫星时钟系统(NTP时钟同步服务器),为解决全网络计算机系统时间同步问题; 二、施工须知:1.使用本装置之前,请您仔细阅读用户手册......
  • 《全局实例篇》Vue.compont注册全局组件
    注册一个全局组件语法格式如下:Vue.component(tagName,options)tagName为组件名,options为配置选项。注册后,我们可以使用以下方式来调用组件:<tagName></tagName>全局组件所有实例都能用全局组件。<divid="app"> <runoob></runoob></div><script>//注册Vue.compon......
  • Spring Cloud整体架构解析
    SpringCloud整体架构SpringCloud的中文名我们就暂且称呼它为“春云”吧,听上去是多么朴实无华的名字,不过呢一般名字起的低调的都是厉害角色,我们就看看SpringCloud都提供了哪些靠谱功能吧。SpringCloud是一款微服务架构的一站式解决方案,你在微服务化过程中碰到的任何问题,都可......
  • Apollo系列之架构设计(一)
    原创文章,转载请标注。https:https://www.cnblogs.com/boycelee/p/17967590目录一、什么是配置中心?二、传统配置有什么问题?三、配置中心的场景四、架构设计(1)基础模型(2)详细架构六、模块介绍客户端层ClientPortal网络层NginxLBMetaServerEureka服务端层ConfigServiceAdminService......
  • VUE-组件间通信BUS
    VUE-组件间通信BUS1. 在src 下创建文件夹 eventBus 创建文件bus.jsimportVuefrom'vue';exportdefaultnewVue(); 创建文件busenum.jsletEvs={fun_struct_relation:"fun_struct_relation",//关联工程结构树};exportdefaultEvs;  2. 调......
  • Hadoop集群常用组件的命令
    1.Hadoop(1).HDFS:启动HDFS:start-dfs.sh关闭HDFS:stop-dfs.sh格式化NameNode:hdfsnamenode-format查看文件系统状态:hdfsdfsadmin-report创建目录:hdfsdfs-mkdir/path/to/directory上传本地文件到HDFS:hdfsdfs-put/path/to/local/file/path/to/hdfs/directory下载HDFS文件......
  • spring Cloud 有哪些组件?
    Eureka:服务注册与发现,每个服务都向eureka提供自己的ip地址,端口号,协议,通信协议,eureka将各个服务维护到一个服务清单中(双层map,第一层key为服务名,第二层key为实例名),同时对服务维持心跳,剔除不可用的服务。发现:eurkeka注册的服务之间不用指定服务的地址,而是通过服务名向注册中心咨询,......
  • vue3使用 vant ui 3 如何获取组件 popup dom的高度?
    我目前使用的是vant-ui 3.1.2popup弹出层组件,我想要获取弹出层的高度来计算一些东西,但是使用常规定义refdom的方式总是无法获取,最终找到方案如下:vant-ui官方文档:https://vant-contrib.gitee.io/vant/v3/#/zh-CN/popup<template><van-popupv-model:show="show......