Hadoop的一些高频面试题 --- hdfs、mapreduce以及yarn的面试题

news2024/9/20 22:39:54

文章目录

  • 一、HDFS
    • 1、Hadoop的三大组成部分
    • 2、本地模式和伪分布模式的区别是什么
    • 3、什么是HDFS
    • 4、如何单独启动namenode
    • 5、hdfs的写入流程
    • 6、hdfs的读取流程
    • 7、hdfs为什么不能存储小文件
    • 8、secondaryNameNode的运行原理
    • 9、hadoop集群启动后离开安全模式的条件
    • 10、hdfs集群的开机启动流程
  • 二、MapReduce
    • 1、MapReduce的原理
    • 2、MapReduce的shuffer过程
    • 3、块和片的区别
    • 4、Combiner
    • 5、环形缓冲区
  • 三、Yarn
    • 1、Yarn的三种调度器


一、HDFS

1、Hadoop的三大组成部分

1、HDFS(分布式文件系统):用于存储大规模的数据,具有高容错性和可扩展性
2、MapReduce(分布式计算框架):用于处理大规模数据的编程模型和计算框架
3、YARN(资源管理框架):负责管理集群中的资源分配和任务调度

2、本地模式和伪分布模式的区别是什么

本地模式是在单个节点上运行所有的进程,资源利用相对简单,通常将数据存储在本地文件系统中
而伪分布模式虽然也是在单个节点上运行,但会模拟出分布式环境,分配和管理多个进程所需的资源,会按照分布式的架构来组织和存储数据

3、什么是HDFS

HDFS(Hadoop 分布式文件系统)是 Hadoop 生态系统中的核心组件之一,它是一种用于大规模数据存储的分布式文件系统,具有高容错性和可扩展性,其中
namenode负责管理datanode节点,记录各个块的信息;
secondarynamenode负责帮助namenode完成fsimage和edits文件的合并
datanode负责存储数据

4、如何单独启动namenode

hdfs --daemon start namenode

5、hdfs的写入流程

在这里插入图片描述

客户端发送写请求,namenode接收后先校验权限,然后通过机架算法,计算出三个节点,将这三个节点发送给客户端,客户端通过pipeline通道向这三个节点写入数据,传递的单位是packet,一个packet大小为64KB,各个节点传递完成后,给客户端响应

6、hdfs的读取流程

在这里插入图片描述

客户端发送读请求,namenode接收后先校验权限,然后从自己内存中查看文件放在哪几个节点,并将其详细信息发送给客户端,客户端到对应datanode节点去拉取数据,然后将拉取的数据整合,再发送给客户端。

7、hdfs为什么不能存储小文件

HDFS文件系统中,默认需要将存储的数据进行切割存储的,每一个块是128M,不管一个块中存放的是大文件还是小文件,都有元数据,这个元数据大约占用内存150字节,如果存放过多的小文件,会占用过多的块,从而消耗过多内存。

8、secondaryNameNode的运行原理

1、SecondaryNameNode 每隔一个小时,去nameNode中拉取数据
2、拉取的时候,会终止当前的edits文件,生成一个新的edits_inprogress_XXX.
3、接着会将edits文件和最新的fsiamge文件拉取到SecondaryNameNode的服务器上进行合并,生成一个最新的fsimage.ckpt
4、将fsimage.ckpt传递给nameNode ,NameNode 修改一下名字,变为新的fsimage ,删除掉之前的倒数第二个文件。因为fsimage只保留两个最新的文件。

9、hadoop集群启动后离开安全模式的条件

解除安全模式需要满足两个条件:

1、每个数据块的副本数量达到了设定的阈值
2、并且加载出来的副本总数和所有数据块的所有副本数之和的比值需要大于99.99%

10、hdfs集群的开机启动流程

  1. 初始化 NameNode:与SecondaryNameNode配合,读取fsimage和edits文件,加载元数据,并重新生成一个新的edits文件
  2. 启动 DataNode,并与NameNode建立心跳机制
  3. 进入安全模式:只读模式,不能删除和修改文件
  4. 达到条件后,解除安全模式

二、MapReduce

1、MapReduce的原理

AppMaster: 整个Job任务的核心协调工具
MapTask: 主要用于Map任务的执行 ReduceTask:
主要用于Reduce任务的执行

一个任务提交 --> AppMaster–> 根据切片的数量统计出需要多少个MapTask任务 -->向ResourceManager(Yarn平台的老大)索要资源 --> 执行Map任务,先读取一个分片的数据,传递给map方法。–> map 方法不断的溢写 --> reduce 方法 --> 将统计的结果存放在磁盘上。

2、MapReduce的shuffer过程

1、Shuffle 过程是 MapReduce 框架中连接 Map 阶段和 Reduce 阶段的中间环节,它的主要作用是对 Map
阶段的输出结果进行整理和分区,以便 Reduce 任务能够高效地获取和处理数据。
2、map端写出数据到环形缓冲区中,环形缓冲区默认阈值为100MB,达到该阈值的80%,就开始溢写数据到磁盘,map会将这些小的磁盘文件进行归并和快排,变成一个大文件。
3、reduce端根据不同的分区,拉取map写到磁盘中对应的数据
4、而这个过程被称为shuffle过程,简单来说就是reduce对map端数据的各种拉取,就是数据的拉来拉去

3、块和片的区别

1、块是物理概念,片是逻辑概念。一般片 = 块,但是到最后一次的时候,有可能片> 块,但是绝对不能超过块的1.1倍。
2、mapreduce 启动多少个MapTask任务跟片有关系,有多少个片,就启动多少个map任务。跟块儿无关。

4、Combiner

Combiner其实就是运行在mapTask中的reducer。 Reducer其实就是合并代码的。Combiner是作用在Map端的。
Combiner 只能用于对统计结果没有影响的场景下。 一般只用于统计之和,统计最大值最小值的场景下。统计平均值等情况是不能用的。

5、环形缓冲区

1、环形缓冲区,其实是一个数组,将数组分为两部分,分割的这个点就称之为轴心。
2、存储KV真实数据,是顺时针存储
3、每一个KV真实数据都有对应的元数据,元数据是逆时针存储。
4、当两者数据占用空间达到80%的时候,需要清理数据,清理完之后,轴心发生了变化

三、Yarn

1、Yarn的三种调度器

1、FIFO Scheduler(FIFO调度器):先进先出,先进去的任务先执行
缺点:假如第一个任务很大,就会阻塞后面的小任务
2、Capacity Scheduler(容量调度器):将cpu资源分为多个队列,将不同类型的任务分到不同队列中
缺点:如果真遇到了大任务,执行的时间会稍微长一些。因为要时刻给小的任务预留资源
3、Fair Scheduler(公平调度器):根据当前正在运行的任务数量和资源使用情况,为新任务分配适当的资源
缺点:资源分配可能不够精准,对小任务响应可能不及时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TortoiseSVN图标不显示的解决

解决办法一:修改svn软件的图标设置 1、选中一个文件夹或在桌面空白处,右击进入svn的setting 2、进入setting->Icon Overlays,Status cache选择Default或shell,然后点击应用 3、查看文件,图标可以正常显示 解决办法…

ubuntu下载安装部署docker,ubuntu下载最新的docker

1.#如果Ubuntu自带的Docker版本太低,我们需要卸载旧版本并安装新的 sudo apt-get remove docker docker-engine docker.io containerd runc2.# 备份原有软件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak3.选择合适的镜像源 # 或者使用清华大学sudo…

利用WPF绘制轮廓并保存为图片

1.前言 WPF作为显示工具也挺好用,用C#开发应用软件会比较省力,当然也有其缺点,如在对效率要求较高的情况下有性能问题,本文记录用WPF绘制轮廓并保存为图片相关内容。 显示效果也还不错,满足调试使用了&#xf…

变电站缺陷数据集8307张,带xml标注和txt标注,可以直接用于yolo训练

变电站缺陷数据集8307张, 带xml标注和txt标注,可以直接用于yolo训练,赠附五个脚本 变电站缺陷数据集 数据集概述 变电站缺陷数据集是一个专门针对变电站设备和环境缺陷检测的图像数据集。该数据集包含了8307张经过标注的图像,旨…

Maven和Springboot初识

(一)Maven Maven是一个项目管理工具,通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具 (可以通过pom.xml文件的配置来获取jar包,而不用手动添加) Maven可以提高我们的开发效率减少…

Mistral AI 又又又开源了闭源企业级模型——Mistral-Small-Instruct-2409

就在不久前,Mistral 公司在开源了 Pixtral 12B 视觉多模态大模型之后,又开源了自家的企业级小型模型 Mistral-Small-Instruct-2409 (22B),这是 Mistral AI 最新的企业级小型模型,是 Mistral Small v24.02 的…

C++源代码封装成dll动态链接库,并在WPF项目中使用的步骤说明

文章目录 1. 创建并生成C的DLL(C动态链接库)(1)新建项目-->开发语言选定C,在搜索栏搜索“动态链接库”-->配置项目名称和路径-->添加类,此处命名为My_C_Class(2)实现类的功能&#xff…

Elasticsearch 下载安装及使用总结

官网文档地址:Elasticsearch Guide [8.13] 官网下载地址:Download Elasticsearch 1. 下载安装 1、下载对应系统的版本 这里下载的 Elasticsearch 版本为 8.13.2,Elasticsearch 依赖 Java,因此要先在服务器上安装 JDK&#xff…

SOLIDWORKS® 2025 新增功能 - SIMULATION

SOLIDWORKS Simulation 1常规弹簧连接 • 通过定义仅轴向、各向同性或正交各向异性弹簧, 在曲面之间轻松创建自定义弹簧连接。 • 通过添加自定义合规性提高仿真性能和精度。 优点 利用新的弹簧连接功能, 实现更简单、更逼真的仿真 设置。 2增强了…

Unity 百度AI实现无绿幕拍照抠像功能(详解版)

目录 一、前言 1.抠像效果 2.去哪找百度ai抠图 3.基础流程跳过 二、获取AccessToken 1.什么是Token 2.为什么要获取Token 3.如何获取token 4.解析json 5.完整代码 三、抠像 1.准备地址 2.建立链接,和基本配置 3.图片格式转换 4.开始上传 5.获取回复…

SpringBoot 整合docker,执行容器服务

我使用以下文章的镜像作为演示镜像,读者有自己的镜像可以使用自己的 TencentARC/GFPGAN人脸恢复Ubuntu-22.04搭建(附带Docker镜像)_tencentarc gfpgan-CSDN博客 1. 封装springboot 启动docker容器的方法 public String runDockerCommand(String[] command) {StringBuilder res…

代码随想录Day 49|leetcode题目:42.接雨水、84.柱状图中最大矩形

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 题目题目一:42. 接雨水解题思路:暴力解法双指针优化思路:单调栈解法单调栈处理逻辑 题目二: 84.柱状图中最大的矩形解题思路:暴力解法双…

闯关leetcode——35. Search Insert Position

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/search-insert-position/description/ 内容 Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it wou…

【数据结构】排序算法---冒泡排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaCGo 结语 1. 定义 冒泡排序(英语:Bubble sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的…

svn回退到以前历史版本修改并上传

svn回退到以前版本,并在以前版本上修改代码后,上传到svn库当中,如下步骤: 3、 以回退到版本号4为例:选中版本号4,右键->Revert to this version,在出现的对话框中 点击yes! 4、 5、

【ARM】Trustzone和安全架构

Trustzone的基本概念&背景和历史 什么是Trustzone? 什么是TEE? Trustzone是一个技术,是一个技术的设计,一个安全架构,既不是软件也不是硬件。 TEE (Trusted Execution Environment) 可信执行环境。就是依托Trust…

Java项目——苍穹外卖(二)

Redis 简介 Redis是一个基于内存的key-value结构数据库 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 基础操作 启动 在redis安装目录中打开cmd,输入如上图指令即可启动,按下crtl…

linux入门到实操-6 Linux服务管理、系统运行级别、配置服务开机启动和关闭防火墙、关机重启

教程来源:B站视频BV1WY4y1H7d3 3天搞定Linux,1天搞定Shell,清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料(包含课程同版本linux系统文件等内容),供大家学习交流下载:…

html详细知识

1-标题标签、水平线、字体标签 <!--1.标题标签1&#xff09;格式&#xff1a;<hn></hn> n的范围是1-6&#xff0c;依次递减2&#xff09;标题标签特点&#xff1a;a:单独占一行b:自动加粗2.水平线1&#xff09;格式&#xff1a;<hr/>2)属性&#xff1a;…

soc及其相关概念

用户无法直接操作内存&#xff0c;只能让内存映射到用户空间然后操作 1. 内存映射&#xff08;Memory-Mapped Files&#xff09;内存映射文件是一种方法&#xff0c;它允许一个或多个进程将一个文件或者一个匿名区域映射到它们各自的虚拟地址空间中。当文件被映射到内存后&…