HDFS分布式文件系统

HDFS分布式文件系统

在这里插入图片描述

HDFS采用master/slave架构

master:NameNode
​slave:DataNode

HDFS组成及功能
  • client:客户端,负责存储、读取
  • namenode:元数据节点,管理文件系统的namespace元数据,一个集群只能有一个Active namenode
  • datanode:数据节点,数据存储节点,保存、检索Block,一个集群可以有多个数据节点
  • secondary namenode:从元数据节点,合并namenode的edit
    logs到fsimage文件中,辅助namenode将内存中元数据信息持久化
    在这里插入图片描述
HDFS副本机制

在hdfs中数据以数据块(block)的形式存储的,数据块是hdfs中最基本的存储单位,在hadoop2.x版本中,数据块的默认大小为128M。
通常默认的副本数为3个,可在配置文件中修改
副本的存放机制为:一个本地机架节点、一个在同一个机架不同节点、一个在不同机架的节点
block:数据块,是hdfs最基本的存储单元,2.x版本默认大小为128M
副本机制的作用:避免数据丢失,副本数默认是3
如下图所示,每一个Rack都是一个机架,上面有若干个datanode节点,A、B、C都是一个block块,以A 为例,存储时现在Rack1的节点上存放,然后会在一个不同的节点上备份(Rack2的DataNode5)和同一机架的不同节点备份(Rack2的DataNode6)
在这里插入图片描述

HDFS优点
  • 高容错性:副本机制
  • 适合大数据处理
  • 流式数据访问
  • 可构建在廉价的机器上
HDFS缺点
  • 不适合低延时数据访问场景:hdfs是海量数据存储,因此耗时比较大
  • 不适合小文件存取场景:无论是大文件还是小文件在namenode中的存储大小是相同的,因此小文件过多会造成namenode溢出
  • 不适合并发写入,文件随机修改场景
HDFS写文件

如下图所示:
客户端client上传文件前,会将文件分块(默认128M),假设文件大小为300M,则会分成3块:0 ~ 128M、128~256M、256 ~300M
①首先client会想namenode发出请求上传第一个数据块
②namenode会查验目标路径,若不存在,则抛出异常;若存在则会返回一个空闲节点的列表(3个),假设为DN1、DN2、DN3
③NameNode将节点列表返回给客户端
④客户端会与DN建立Pipline连接
⑤上传一个数据块,会将数据块写书DN的内存中,在一边写入DN1内存的同时,会一边传给DN2
⑥响应写入成功
⑦其他块上传重复以上操作
在这里插入图片描述

HDFS读文件

①首先客户端向NameNode请求下载第一个块
②NameNode检查路径,若不存在则抛出异常,处在则返回存储数据的节点列表
③NameNode将列表返回给client
④建立Pipline连接
⑤下载第一个数据块
⑥下载其他数据块重复以上步骤
⑦数据块下载完成,client会将数据库块整合成一个文件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值