设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

这是一篇最通熟易懂的Hadoop HDFS实践攻略!(3)

发布时间:2021-01-16 19:28 所属栏目:53 来源:网络整理
导读:具体写入流程: client向namenode发请求,说想要上传文件 namenode会检查目标文件是否存在、父目录是否存在,检查没有问题后返回确认信息 client再发请求,问第一个block应该传到哪些datanode上 namenode经过衡量,返回

具体写入流程:

  1. client向namenode发请求,说想要上传文件
  2. namenode会检查目标文件是否存在、父目录是否存在,检查没有问题后返回确认信息
  3. client再发请求,问第一个block应该传到哪些datanode上
  4. namenode经过衡量,返回3个可用的datanode(A,B,C)
  5. client与A建立连接,A与B建立连接,B与C建立连接,形成一个pipeline
  6. 传输管道建立完成后,client开始向A发送数据包,此数据包会经过管道一次传递到B和C
  7. 当第一个block的数据都传完以后,client再向namenode请求第二个block上传到哪些datanode,然后建立传输管道发送数据
  8. 就这样,直到client把文件全部上传完成

这是一篇最通熟易懂的Hadoop HDFS实践攻略!

2、读取机制

  1. Client把要读取的文件路径发给namenode,查询元数据,找到文件块所在的datanode服务器
  2. Client直到了文件包含哪几块儿、每一块儿在哪些datanode上,就选择那些离自己进的datanode(在同一机房,如果有多个离着近的,就随机选择),请求简历socket流
  3. 从datanode获取数据
  4. Client接收数据包,先本地缓存,然后写入目标文件
  5. 直到文件读取完成

3、NameNode机制

通过对HDFS读写流程的了解,可以发现namenode是一个很重要的部分,它记录着整个HDFS系统的元数据,这些元数据是需要持久化的,要保存到文件中.

Namenode还要承受巨大的访问量,client读写文件时都需要请求namenode,写文件时要修改元数据,读文件时要查询元数据.

为了提高效率,namenode便将元数据加载到内存中,每次修改时,直接修改内存,而不是直接修改文件,同时会记录下操作日志,供后期修改文件时使用.

这样,namenode对数据的管理就涉及到了3种存储形式:

  1. 内存数据
  2. 元数据文件
  3. 操作日志文件

namenode需要定期对元数据文件和日志文件进行整合,以保证文件中数据是新的,但这个过程很消耗性能,namenode需要快速地响应client的大量请求,很难去完成文件整合操作,这时就引入了一个小助手secondnamenode.

secondnamenode会定期从namenode中下载元数据文件和操作日志,进行整合,形成新的数据文件,然后传回namenode,并替换掉之前的旧文件.

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读