[Hadoop] 期末答辩问题准备

news2024/12/22 20:20:26

0.相关概念

1.什么是NameNode?

NameNode是整个文件系统的管理节点,它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。并接收用户的操作请求。

2.SecondaryNameNode的主要作用?

SecondaryNameNode定期合并fsimage和edits日志,将edits日志文件大小控制在一个限度下。

1.HDFS写入流程(hdfs dfs -put /a.avi /aaa/bbb)

  • (0)HDFS的客户端可以创建FileSystem对象实例,该类中封装了HDFS文件系统操作的相关操作。
  • (1)客户端Client通过调用FileSystem对象的create()方法,通过RPC向NameNode发起文件上传请求,NameNode执行各种检查判断:目标文件是否存在,父目录是否存在以及客户端是否具有创建文件的权限,并返回是否可以上传,可以则会返回FSDataOutputStream输出流对象给客户端用于写数据。
  • (2)客户端Client将文件进行切分,切分为几个数据块
  • (3)客户端请求第一个数据块block该传到哪些DataNode服务器上。
  • (4)NameNode会返回可用的DataNode的地址
  • (5)客户端通过FSDataOutputStream开始请求向第一个DataNode上传数据,第一个DataNode收到请求后会向第二个DataNode请求,直到整个通信管道pipeline的建立。
  • (6)通信管道pipeline建立后,客户端开始向第一个DataNode上传第一个数据块,在上传的过程中会将数据拆分为一个个数据包packet,默认大小为64k,第一个DataNode收到packet后会传给第二个DataNode,再传给第三个DataNode。
  • (7)数据以packet大小在通信管道上传输着,在传输的反方向上,会通过ACK应答机制校验数据包是否传输成功,最后由pipeline第一个DataNode结点将ack消息发送给客户端Client。
  • (8)当一个 block 传输完成之后,client 再次请求 NameNode 上传第二个 block 到服务器,待所有的数据块传输完成后,FSDataOutputStream调用close()方法关闭输出流。

 1.HDFS读取流程(hdfs dfs -get /aaa/bbb/a.avi /)

  • (1)Client会向NameNode发起RPC请求,NameNode接收读取的请求,然后检查用户是否具有读取数据的权限以及判断在指定路径下是否存在这个文件。
  • (2)NameNode会视情况返回文件的部分或者全部的block列表,对于每个block,NameNode都会返回含有该block副本的DataNode地址,这些返回的DataNode地址会按照集群拓扑结构计算出DataNode与客户端的距离,然后进行排序。
  • (3)客户端Client选取排序靠前的DataNode读取block,底层本质上是通过类FSDataInputStream建立Socket Stream,重复地调用父类DataInputStream的read方法,直到这个块上的数据读取完毕。
  • (4)最终读取来的所有的block会合并成一个完整的文件。

2.NameNode和SecondaryNameNode工作机制

2.1 名词熟悉:

1、元数据

·元数据必须存储在内存当中(保证快速检索);

·元数据必须持久化(保证数据的安全持久);

·将元数据信息保存在fsimage镜像文件当中

2.fsimage文件

·保存元数据信息的文件

·是NameNode中关于元数据的镜像

·包含了NameNode管理下的所有DataNode中文件以及文件Block以及block所在的DataNode的元数据信息

3.Edits文件

·edits编辑日志文件记录了客户端操作元数据的信息

 2.2 NameNode端的工作流程

  • (0)首先得明白:Namenode始终在内存中保存metadata元数据,用于处理客户端对元数据的增删改查的请求,而Hadoop会维护一个fsimage文件,也就是NameNode中元数据metadata的镜像,但是fsimage并不会随时都与NameNode内存中的元数据metadata保持一致,而是每隔一段时间通过合并edits文件来更新内容。
  • (1)第一次启动NameNode格式化后,会创建fsimage镜像文件和edits编辑日志文件(若不是第一次启动,则直接加载fsimage镜像文件和edits编辑日志文件到内存)。
  • (2)客户端对元数据发起增删改查的请求。
  • (3)NameNode记录操作日志,更新滚动日志
  • (4)NameNode对内存中的数据进行增删改查操作。

2.3 Secondary NameNode工作流程

  • (1)Secondary NameNode询问NameNode是否需要执行checkpoint检查点(默认Edits记录的修改次数达到一定值,或者距离上个checkpoint时间间隔了一定时间) 
  • Secondary NameNode请求执行check point
  • NameNode的edit_inprogress_001(edits_inprogress_xxx 存储的是还没有更新到 edits中的数据)中存储的改变向量滚动写入到Edits,如果客户端此时有向NameNode发出改变元数据的请求,那么新的改变向量会被暂时写入到edit_inprogress_002中。
  • 将NameNode中的Edits和fsimage拷贝到SecondaryNameNode
  • Secondary NameNode将Edits、fsimage信息加载到自己的内存当中,在fsimage基础上顺序执行Edits中改变向量。
  • 将内存中的计算结果生成新的镜像文件fsimage.checkpoint
  • 将fsimage.checkpoint拷贝给NameNode
  • NameNode将fsimage.checkpoint重命名为fsimage,覆盖原有的fsimage

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

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

相关文章

JUC阻塞队列BlockingQueue---ArrayBlockingQueue

JUC阻塞队列BlockingQueue---ArrayBlockingQueue ArrayBlockingQueue示例代码原理构造方法内部常量入队put方法出队take方法 什么是阻塞队列? ArrayBlockingQueue ArrayBlockingQueue是典型的有界阻塞队列,其内部是用数组存储元素的,初始化…

chatgpt赋能python:Python程序安装指南

Python程序安装指南 介绍 Python 是一种高级编程语言,广泛应用于数据分析、人工智能、Web开发等领域。安装 Python 程序是使用 Python 和运行 Python 脚本的必要步骤。在本文中,我们将提供详细的 Python 程序安装指南。 安装Python程序步骤 步骤1: 下…

1.1-python课程简介

一、python入门 1、python来源2、什么是python3、python编程软件下载4、python软件安装5、python软件运行和调试 1、python来源 Guido van Rossum 于1989年在荷兰国家数学和计算机科学研究所设计出来的。 2、什么是python Python 是一个高层次的结合了解释性、编译性、互动性…

【推荐】win 安装 rust 1.70 (GNU)

目录 一、下载二、安装三、配置环境变量四、检查是否安装成功五、参考文章 一、下载 官网地址:https://www.rust-lang.org/zh-CN/ https://forge.rust-lang.org/infra/other-installation-methods.html 历史版本下载地址: 二、安装 注意:安…

TypeScript ~ TS Webpack构建工具 ⑦

作者 : SYFStrive 博客首页 : HomePage 📜: TypeScript ~ TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &…

chatgpt赋能python:Python相加:实现快速、高效的计算

Python相加: 实现快速、高效的计算 Python 运用广泛,是一种功能强大的编程语言。它不仅易于学习,而且具备许多强大的功能,其中包括 Python 相加。今天,我们将介绍如何写 Python 相加的代码,以及如何实现快…

chatgpt赋能python:如何将Python程序打包成App-一个详细的指南

如何将Python程序打包成App - 一个详细的指南 如果你是一位有着丰富Python编程经验的开发者,可能你听说过Python App打包。Python App打包就是将Python程序打包成为操作系统所支持的应用程序的过程。这个过程可以让你的Python程序在Windows、Mac和Linux操作系统上更…

Linux网络、进程

一、网络环境配置 第一种方法:自动获取 登陆后,通过界面来设置自动获取IP,特点:linux启动后会自动获取IP,缺点是每次自动获取的IP地址可能不一样。这种就不适合服务器使用 第二种方法:指定IP 直接修改配置…

【Leetcode60天带刷】day24 回溯算法—— 77. 组合

​ 理论基础: 什么是回溯法? 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯法解决的问题 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合切割问题&#xff…

chatgpt赋能python:Python程序如何打包成安装包

Python程序如何打包成安装包 Python是一种受欢迎的编程语言,许多开发者使用它构建各种类型的应用程序。然而,当需要分发Python应用程序时,将所有代码和依赖项打包成新的安装包通常是最佳选择。本文将介绍如何使用Python打包工具将Python程序…

Java并发工具Fork/Join原理

我们一直讲,并发编程可以分为三个层面的问题,分别是分工、协作和互斥,当你关注于任务的时候,你会发现你的视角已经从并发编程的细节中跳出来了,你应用的更多的是现实世界的思维模式,类比的往往是现实世界里…

Golang每日一练(leetDay0107) 去除重复字母、最大单词长度乘积

目录 316. 去除重复字母 Remove Duplicate Letters 🌟🌟 318. 最大单词长度乘积 Maximum-product-of-word-lengths 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

【Less】四则运算

Less四则运算特点 对于两个不同单位值之间的运算,不要求你进行运算操作的几个值必须带单位,只要其中有一个有单位就可以了,运算结果的值会优先取第一个值的单位为准。如: 2030px-10em编译成40px。border:10em; border:(border2px)…

数据挖掘——宁县(区、市)农村居民人均可支配收入影响因子分析(论文)

《数据挖掘与分析》课程论文 题目:宁县(区、市)农村居民人均可支配收入影响因子分析 xx学院xx班:xxx 2022年6月 摘要:农村居民人均可支配收入可能被农作物产量、牲畜存栏、农作物播种数量等诸多因素影响。为此&#…

JavaSE基础语法--封装

Java是一门面向对象的语言。面向对象的三大特性:封装,继承,多态。封装到底是什么含义呢?通俗来讲就是屏蔽掉类的实现细节,对外提供接口让你调用。举个现实生活中的例子: 刚好618刚过,我因为需求…

chatgpt赋能python:Python算和的重要性及优势

Python算和的重要性及优势 在现代科技时代,计算机的应用范围越来越广泛,Python算和作为一种高效而强大的计算工具,已经成为了无数科学家和工程师的必备技能。Python算和不仅仅在各类科学实验中有着重要的应用,也在企业开发、数据…

chatgpt赋能python:Python程序一直运行怎么停止?

Python程序一直运行怎么停止? 在开发软件时,有时候我们会遇到Python程序一直运行不停止的情况,这时候我们该如何解决呢?本文将介绍一些常见的方法帮助您停止Python程序。 常见的停止Python程序的方法 1. KeyboardInterrupt&…

【硬件5】vr电源芯片驱动

文章目录 1.读MPS5023芯片:0x03ff即将前6位屏蔽2.读PXE1410CDM电压和电流:一个数&0x7ff,将这个数前5位全变为0,其余位不变2.1 1ine11:先看第15和10位,e9b6是上面读出的值2.2 1ine16:PMBUS协…

chatgpt赋能python:Python空循环:提高代码效率的神器

Python空循环:提高代码效率的神器 Python作为一门高效、易学的编程语言,广泛应用于各行各业。在编写Python代码时,循环结构是经常使用的。但是,有时候我们需要使用循环结构,但并不需要执行任何操作。这时候&#xff0…

chatgpt赋能python:Python中的空格:一种重要的编程元素

Python中的空格:一种重要的编程元素 在Python编程中,空格是被广泛使用的重要元素之一。本文将介绍Python中空格的重要性,并探讨空格在编程中的不同应用。 为什么空格在Python编程中如此重要? Python对空格敏感,意味…