• Hadoop原理讲解(面试题)


    一丶组件说明:

    hadoop主要组件构成部分:
    HDFS(存储)丶YARN(调度任务)丶MapReduce(分析计算)

    --------------------------------------HDFS-----------------------------------------

    NameNode(nn): 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等

    DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验.

    Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份

    --------------------------------------YARN-----------------------------------------

    ResourceManager(RM):整个集群资源(内存、CPU等)的老大

    NodeManager(NM):单个节点服务器资源老大

    ApplicationMaster(AM):单个任务运行的老大

    Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等

    说明:
    1.客户端可以有多个
    2.集群上可以运行多个ApplicationMaster
    3.每个NodeManager上可以有多个Container

    关系图:
    在这里插入图片描述

    --------------------------------------MapReduce-----------------------------------------

    说明: 主要分为两个阶段, Map阶段和Reduce阶段,Map阶段主要负责并行处理输入数据,Reduce阶段主要负责对 Map 结果进行汇总计算

    三大组件之间的关系图:
    在这里插入图片描述

    二丶HDFS文件的块大小

    在这里插入图片描述

    思考:为什么块的大小不能设置太小,也不能设置太大?
    (1)HDFS的块设置太,会增加寻址时间,程序一直在找块的开始位置;
    (2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢

    总结:HDFS块的大小设置主要取决于磁盘传输速率

    三丶HDFS写数据流程

    在这里插入图片描述

    四丶HDFS读数据流程

    在这里插入图片描述

    五丶NameNode和SecondaryNameNode工作机制

    1. 主要是fsimage进行存储元数据信息,为了防止效率过低,将此加入到内存当中,然后进行更新(不能实时更新,那会和直接从磁盘读取没什么两样,造成效率低下)
    2. 又为了防止断电造成元数据没进行更新,导致数据丢失,增加了Edits文件(只追加一些更新操作)
    3. 这个合并更新的任务就交给了SecondaryNameNode,每一个小时进行检测

    在这里插入图片描述

    六丶DataNode工作机制

    在这里插入图片描述
    DataNode掉线时限参数设置:
    在这里插入图片描述

    七丶MapReduce工作流程(难点)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Merge阶段(递归合并):当所有数据处理完成后,MapTask 对所有临时文件进行一次合并, 以确保最终只会生成一个数据文件,最终让每个 MapTask 最终只生成一个数据文件,可避免同时打开大量文件同时读取大量小文件产生的随机读取带来的开销

    八丶Yarn的工作机制

    在这里插入图片描述

    Yarn的调度器和调度算法:

    调度器: FIFO容量(Capacity Scheduler)公平(Fair Scheduler)
    Apache Hadoop3.1.3 默认的资源调度器是 Capacity Scheduler

    FIFO 调度器(First In First Out):单队列,根据提交作业的先后顺序,先来先服务
    在这里插入图片描述

    容量调度器(Capacity Scheduler):
    在这里插入图片描述

    1、多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略
    2、容量保证:管理员可为每个队列设置资源最低保证资源使用上限
    3、灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列
    4、多租户
    支持多用户共享集群和多应用程序同时运行。
    为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定

    注意: 使用深度优先算法,优先选择资源占用率最低的队列分配资源

    公平调度器(Fair Scheduler)
    在这里插入图片描述
    缺额的解释:
    在这里插入图片描述
    公平调度器中的队列资源分配:
    在这里插入图片描述
    公共调度器中的队列内的作业资源分配:
    在这里插入图片描述

  • 相关阅读:
    第2章 Linux多进程开发 2.18 内存映射
    2022年,软件测试还能学吗?别学了,软件测试岗位饱和了...
    如何用 GPT-4 帮你写游戏(以24点游戏举例)
    PMP每日一练 | 考试不迷路-11.01(包含敏捷+多选)
    基于ffmpeg 对音视频进行编解码存在内存泄露问题记录
    HTML期末大作业——游戏介绍(HTML+CSS+JavaScript) web前端开发技术 web课程设计网页规划与设计 Web大学生网页成品
    [NSSCTF 2022 Spring Recruit]easy C
    [附源码]SSM计算机毕业设计音乐网站JAVA
    3D基础:Y-Up和Z-Up
    本地生活服务正在借助小程序迎战增量市场
  • 原文地址:https://blog.csdn.net/First_____/article/details/126069114