hadoop主要由两部分组成,存储系统和计算系统。今天写的是存储系统HDFS.
1问 HDFS主要由哪些特性?
答:1HDFS是基于主从架构的
2 由分块机制和副本机制
3 元数据:首先,元数据是描述数据的数据。一个文件拆分成多少个block块
哪个block块放在哪台机器,哪个block快存文件的哪部分数据。
其次,元数据保存在内存和磁盘中 不仅仅是内存中。防止服务挂了 数据丢失,
存在内存中是为了读取速度更快。这个特性可以类比redis。
其三,存在于磁盘的元数据有两种文件 一种是fsimage(完整的元数据) 一种是edits(最近的操作信息)
4 一次写入,多次读取。每次写都会新增元数据,一条元数据嘻嘻大概15
个字节
5名称空间 hdfs://xxx ftp://xxx 等。
2 问:HDFS中的元数据是怎样管理的?
答:NameNode 管理着元数据信息,其中有两类持久化元数据文件:edits 操作日志文件和 fsimage 元数据镜像文件。新的操作日志不会立即与 fsimage 进行合并,也不会刷到 NameNode 的内存中,而是会先写到 edits 中(因为合并需要消耗大量的资源),操作成 功之后更新至内存。
3 问 secodaryNamenode如何辅助管理元数据信息?
答:主要是合并fsimage和edits
定期检查edits文件 一旦edits文件触发合并条件 (时间长短或者文件大小
)一条元数据信息是150个字节 默认3600s和64M
合并的步骤 切 取 合 发 替
1secondaryNamenode 通知namonode准备切换edits文件
2namenode接收到切换通知,所有操作的日志往新的edits当中写入
3secodarynamenode获取fsimage和edits两个文件,一次性的把
两个都加载到内存中 并合并成一个新的fsimage
4 secondaryNameNode把合并好的fsimage 发送给NameNode
5 由NameNode把刚刚收到的fsimage 替换成原来老的fsimage

4 问:hdfs的写入流程 (原理)?
HDFS的特性和读写原理
答:1客户端请求namenode,NamoNode做权限认证,有权限进入第二步。
2 客户端请求Nomenode第一个block块在哪里
3Nemonode根据机架感知原理,找到最近(网络拓扑图)的三台机器
4 三台机器建立管道pipeline,(因为有副本机制)
5 准备写入数据,本质是io操作,以packet为单位(默认64k)写道三台机器
6 确认第一个block块写完没有,ack机制(acknowledge)
7 客户端找namenode写第下一个block块

5 问 HDFS的读取流程(原理)?
HDFS的特性和读写原理

答: - 第一步:客户端发起读取数据的请求,确定block块

  • 第二步:NameNode返回全部或者部分block块以及block所在机器的信息

  • 第三步:客户端选取靠前的机器上的block进行读取(底层是用到FSDataInputStream)

  • 第四步:如果没有读完,客户端会请求NameNode下一批block

  • 第五步:每一个block会做验证

  • 第六步:合并所有读到的block,形成一个完整的文件

    注意点:1.每读一个block都会验证 2.可以并行(可以多线程)去读

相关文章:

  • 2021-06-28
  • 2021-04-16
  • 2021-09-14
  • 2021-11-16
  • 2021-07-10
  • 2021-11-26
  • 2021-07-03
猜你喜欢
  • 2021-09-20
  • 2021-06-04
  • 2021-12-12
  • 2021-06-06
  • 2021-10-12
  • 2021-05-31
相关资源
相似解决方案