大数据2_10_HDFS概述和数据流

1 HDFS概述

HDFS(Hadoop Distributed File System),Hadoop分布式文件系统

hdfs适合一次写入、多次读出,不支持文件修改,可以追加。

1.1 HDFS组成架构

image-20201012182722579

Namenode(nn):名称节点

存储元数据

管理HDFS的命名空间,配置副本策略,管理块block,处理客户端读写请求。

Datanode(dn):数据节点

存储实际数据,存储的位置在/opt/module/hadoop-3.1.3/data/dfs/data下。

SercondaryNamenode(2nn):第二名称节点

namenode的助手,不是namenode的热备份,当namenode宕机不能顶替namenode工作,可以帮助恢复namenode

1.2 HDFS文件块

HDFS文件在物理上是分块存储的,在hadoop2x - hadoop3x的版本中一个块是128M,之前的老版本是64.

hdfs文件块的大小为什么不能设置太大?为什么不能设置太小?

原因:

  1. 文件块太小,块太多了会增加寻址时间。

  2. 文件块太大,寻址块了,但是从磁盘传输数据的时间会太长,导致程序处理这个数据太慢。

总结:HDFS块的大小取决于磁盘的传输速度。

4 HDFS的数据流

4.1 HDFS写数据流程

image-20201015221747850

(1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。

(2)NameNode相应是否可以上传。

(3)客户端请求第一个 Block上传到哪几个DataNode服务器上。

(4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。

如何选择3个节点?

选择距离namenode距离最近的datanode接收数据。(网络拓扑-节点距离计算。)

  • 第一个副本:在Client所处的节点上,如果客户端在集群外,那么就随机选择一个。
  • 第二个副本:在另一个机架的随机一个节点上。
  • 第三个副本:在第二个副本所在机架的随机节点上。

image-20201015222129661

(5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

为什么要用这种通信管道的方式上传数据?

如果客户端连接dn1,dn2,dn3并联的方式传输,IO压力太大,每个人都传输一份数据,传输效率也低。只传给dn1,效率会高,传输过程dn2也会和dn3传输。

(6)dn1、dn2、dn3逐级应答客户端。

(7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

(8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。

4.2 HDFS读数据流程

image-20201015224608685

(1)客户端通过DistributedFileSystem向Namenode请求下载文件。

(2)Namenode通过查找元数据,找到文件块所在的datanode节点,挑选一台datanode,就近原则。

(3)客户端根据namenode返回的datanode发送请求。分块请求。

(4)datanode传输给客户端。

真正的数据块存储在datanode的这个路径下:

/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-36455346-192.168.255.102-1602322387076/current/finalized/subdir0/subdir0/

image-20201015225544072

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最佳第六六六人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值