HDFS核心理论学习记录
创始人
2024-05-30 15:42:18
0

标题HDFS理论学习第一天

一、HDFS优缺点

1、优点

  • 高容错性:数据会保存多个副本
  • 适合处理大数据:能够处理GB,TB甚至PB级别的数据
  • 能够处理百万规模的数据数据
  • 廉价不吃配置

2、缺点

  • 不适合低延时数据访问,文件存储是放在磁盘中读取会有额外io时间。
  • 无法高效对大量小文件进行存储
  • 大量小文件会增加namenode的元数据信息(块信息和文件目录)会增加寻址时间。
  • 不支持并发写入只能单线程写。且仅支持在文件末尾追加数据不支持修改。

二、HDFS组织架构

1、 namenode

  • 管理hdfs的命名空间
  • 配置副本策略
  • 管理数据块映射信息
  • 处理客户端读写请求
    2、datanode
  • 存储实际的数据块
  • 执行数据块的读写操作
    3、client
  • 文件切分:在上传文件时由客户端将文件切分后再上传
  • 与namenode交互获取文件信息
  • 与datanode交互读写数据
  • 管理namenode比如格式化
  • 对hdfs的增删操作
    4、2NN secondaryNode
  • 2nn并非为namenode的热备份,当namennode挂了它并不能替换namenode,
  • 辅助namenode工作比如定期合并fsimage,edits,推送给namenode
  • 在紧急情况下可回复namenode

HDFS写数据流程

1. 剖析文件写入
在这里插入图片描述
(1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
(2)NameNode返回是否可以上传。
(3)客户端请求第一个 Block上传到哪几个DataNode服务器上。
(4)NameNode返回3个DataNode节点和输出流对象,分别为dn1、dn2、dn3。
(5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。
(6)dn1、dn2、dn3逐级应答客户端,。
(7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答,通过ack数据校验包返回数据是否传输完成。
(8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。
成功后 关闭输出流,并向namenode返回文件已上传完毕,等待namenode
确认。因为NameNode已经知道文件由哪些块组成,因此仅需等待最小复制块即可成功返回即可。至此整个流程就完成了。

网络拓扑-节点距离计算

在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?
节点距离:两个节点到达最近的共同祖先的距离总和。

机架感知(副本存储节点选择)

众所周知,数据块会在hdfs上有多个副本默认三分。那么副本是按照什么策略存储呢?
副本1会存储在client所处节点上,如果client不在对应datanode节点则会随机存储在datanode集群。
副本2会存储在另一个机架随机的一个节点,副本3会存储在和副本3相同机架另个节点。

HDFS读数据流程

1.客户端通过distribute file system 向 NamenNode 发送 请求下载文件A 德的请求。
2.namenode接收到后 判断是否在存在该文件,且该用户是否有权限如果有则返回对应文件的元数据信息
3 . 客户端接收到元数据信息后,创建input输入流 去找最近的节点D1去下载block1块数据,如果D1负载过高,那么下载block2块会打到另个d2节点。
4.传输block1数据,以packet为单位,每隔packet占64字节。先写入缓存,然后再写入目标文件

NN和2NN工作机制

NameNode中的元数据信息是存储在哪里的呢?
首先想到的是数据会存储在内存中,但是如果断电那么数据就会丢失,整个集群就会挂掉。
如果存放在磁盘中读取效率又很低,因为有io操作。
为了解决这个问题 hdfs 在磁盘中产生了备份文件fsimage。和历史操作记录文件Edits
fsimage是存储大部分的元数据序列化信息镜像。
edits文件保存元数据最近的操作记录。元数据修改操作信息会首先同步到edits文件中,再同步到,内存中。这么做的原因是如果修改元数据期间断电,数据不会丢失。
所以即便断电 通过fsimage和edits两个文件合并最终也可以得到元数据信息。
如果修改记录过多放到edits文件中会导致文件数据过大,效率降低,开机恢复时间过长出于这个问题,所以需要定期更新合并fsimage和edit文件。如果这个操作由namenode完成,那么namennode工作效率就会降低。
这也是为什么namenode 和 SecondaryNamenode不在一台服务器节点的原因。

总结如下:

一、

  1. 第一次namenode格式化后会产生fsimage和edits文件。如果不是第一次启动则会直接加载fsimage和edits文件到内存
  2. 客户端发送增删改请求
  3. namenode记录操作日志到edits文件
  4. namenode执行增删改更新操作加载结果到内存

二、
在此期间

  1. 2nn会定期向1nn是否需要checkpoint 也就是合并镜像文件。
  2. 如果edit文件过大则会触发合并服务。超过100w大概。
  3. 期间如果有增删改元数据操作 会被滚动在新的edit文件中。旧的edit文件和fsimage会发送到2nn节点,2nn节点负责fsimage文件和edits文件的合并,产生新的fsimage.chkpoint文件发送给1nn。
  4. 1nn接收到后恢复改掉原来的fsimage文件 并改名为fsimage,那么最后fsiamge和新的正在滚动的edits文件 相加就是最新的元数据了。

checkpoint 服务时间再 hdfs-default.xml 中可以配置 默认是1分钟检查一次

HDFS的五大机制

  1. 切片机制:
    hdfs中的实际数据都是以快的形式存储在datanode节点当中,块大小可配置一般根据磁盘io速度配置
  2. 汇报机制
    datanode节点开机启动后会想namenode节点汇报注册。namenode与datanode会有一个心跳机制一般为3妙,块信息也会定时向namenode汇报是否可用默认为6小时。
  3. 心跳检测机制
    datanode会每隔三秒汇报自己的是否可用信息,如果namenode没有收到该信息,datanode节点会继续汇报10次,3S*10=30秒。如果十分钟后还是没有恢复,则datanode节点会被视为宕机状态,当前机器上的数据namenode会找新的datanode节点做备份。‘
  4. 负载均衡
    让集群中所有的节点(服务器)的利用率和副本数尽量都保持一致或在同一个水平线上
    5.副本机制
    默认备份三个副本,如果副本多了会删,少于3会新增。少于三且无法新增则会进入安全模式只能读不能写。

相关内容

热门资讯

西安大雁塔的导游词作文 关于西安大雁塔的导游词作文  一篇完整的导游词,其结构一般包括习惯用语、概括介绍、重点讲解三个部分,...
庐山探美之旅导游词 庐山探美之旅导游词  各位游客,大家好!我是探美旅行社的'导游潘昶皓。欢迎你们来庐山旅游。  庐山位...
沙面小学介绍导游词 沙面小学介绍导游词  不到沙面非尖子,不游珠江真遗憾。  各位旅客们早上好,我叫刘玮,大家可以叫我刘...
介绍成都景点的导游词 介绍成都景点的导游词(精选6篇)  作为一名专门引导游客、助人为乐的导游,时常需要编写导游词,导游词...
陈列馆导游词 陈列馆导游词  作为一名导游,常常需要准备导游词,导游词不是以一代百、千篇一律的,它必须是从实际出发...
浙江大明山景点导游词 浙江大明山景点导游词  作为一名专门为游客提供优质服务的导游人员,编写导游词是必不可少的,导游词不是...
吉林导游词 吉林导游词 15篇  作为一位尽职的导游,就不得不需要编写导游词,导游词是导游员在游览时为口头表达而...
江西鄱阳湖导游词 江西鄱阳湖导游词  作为一名可信赖的导游人员,时常要开展导游词准备工作,导游词具有注重口语化、精简凝...
龙宫风景区导游词 龙宫风景区导游词  导游词是对一个地方的介绍和说明,通过导游词,能让游客更加清晰的了解和明白当地的文...
贝子庙导游词 贝子庙导游词  朋友们,在塞外名城锡林浩特市额尔敦敖包山下,有一座绿野古刹——贝子庙。贝子庙始建于清...
兰州五泉山导游词 兰州五泉山导游词  作为一名导游,通常会被要求编写导游词,导游词作为一种解说的文体,它的作用是帮助游...
湖北恩施大峡谷导游词 湖北恩施大峡谷导游词  大峡谷位于恩施沐抚境内,听人们说,那是很久以前,一次自然灾害形成的奇观。5月...
山西概况的导游词 山西概况的导游词  山西省,简称晋,位处华北,东靠太行山,因在太行山以西,故称山西。省会太原,古时又...
导游词 我做一次小导游 导游词500字 我做一次小导游  作为一名具备丰富知识的导游,就难以避免地要准备导游词,借助导游词可...
布达拉宫的导游词 布达拉宫的导游词  作为一名乐于为游客排忧解难的导游,时常需要用到导游词,导游词具有注重口语化、精简...
吉林关东三宝讲解导游词 吉林关东三宝讲解导游词范文  吉林人参关东三宝之一。  为多年生草本植物,素有“百草之王”美称。吉林...
介绍西湖的导游词 介绍西湖的导游词(精选18篇)  作为一名乐于为游客排忧解难的导游,时常要开展导游词准备工作,导游词...
泰山景点导游词 泰山景点导游词  作为一位不辞辛劳的导游,时常会需要准备好导游词,导游词由引言、主体和结语三部分构成...
陕西省简介导游词 陕西省简介导游词  陕西,简称“陕”或“秦”,中华人民共和国省级行政单位之一,省会古都西安。下面是小...
故宫导游词 故宫导游词300字2篇  导游词一  各位朋友,现在我们已经进入故宫,故宫导游词300字2篇。此处是...