HDFS概述

HDFS的产生和定义

HDFS的定义和产生

HDFS(Hadoop Distributed File System)是一个分布式的文件系统,用于存储文件,通过目录树(跟linux目录结构是一样的)的方式来定位文件,可以单台,也可以多台分布式存储

随着数据量越来越大,一台机器存不下所有的数据,那么就需要多台服务器去存储,例如:一台机器10T的空间,现在有一个100T的数据,那么就需要多台服务器去分别存储这个文件,但是存储之后不方便管理和维护。所以就出现了分布式文件管理系统,HDFS就是其中之一

HDFS的使用场景:适合一次写入,多次读出的场景

HDFS的优缺点

优点

  • 高容错性
    数据保存多个副本,只要还有一个副本存在,文件就不会丢失,他可以通过增加副本的方式,提高容错性
    在这里插入图片描述
  • 某一个副本丢失后,他可以自动恢复
  • 适合处理大数据:数据规模可以处理TB甚至PB级别的数据,可以处理百万以上的文件数量
  • 价格便宜:可以使用便宜的机器,通过多副本的机制,提高可靠性

缺点

  • 不适合低延时数据访问,例如:毫秒几倍的存储数据
  • 无法高效的对大量小文件进行存储,小文件多的话,用占用大量的NameNode目录和块。
  • 如果小文件特别多,那么小文件存储的寻址时间会超过读取的时间
  • 不支持并发写入:一个文件只能有一个写,不允许多个同时写入,仅支持追加,不支持修改

HDFS的组成

NameNode:管理HDFS的名称空间,配置副本策略,管理数据块的映射信息
DataNode:存储实际的数据块,执行数据块的读写操作
Client:文件切分,文件上传HDFS的时候将文件切分成一个个的block进行上传,于NameNode进行交互,获取文件的位置信息,于DataNode交互,读写数据,Client可以通过一个命令管理和访问HDFS
Secondary NameNode:辅助NameNode工作,例如:定期合并Fsimage和Edits,并推送给NameNode,在紧急情况下可以辅助恢复NameNode
在这里插入图片描述

HDFS文件块大小

HDFS中的文件是分块进行存储的,块的大小可以通过dfs.blocksize来规定,默认在2.x和3.x的版本中是128M,1.x版本中是64M
寻址时间为传输时间的1%为最佳状态,寻址时间就是找到block的时间

块的大小不能设置太小,也不能太大
如果块的大小设置太小,会增加寻址时间
如果块的大小设置太大,从磁盘传输数据的时间会明显大于定位这个块开始位置说需要的时间
HDFS块大小设置主要取决去磁盘传输速率,如果磁盘是100M/s,就可以设置为128M

HDFS,全称为Hadoop Distributed File System,是一个分布式文件系统,特别适用于大规模数据处理。以下是关于HDFS架构的详细介绍: **一、HDFS概述** HDFS的设计目标是提供高吞吐量的数据访问,适合于大量的批处理任务,而不是实时交互。它采用了主从(Master-Slave)架构,由NameNode作为全局命名空间管理者和DataNodes作为大量数据块的存储节点。 **二、HDFS存储体系结构** 1. **NameNode**: 主要负责元数据管理,如文件系统的目录树结构、文件属性和块到DataNode映射等信息。它是一台中心化的服务器,对整个集群进行全局状态维护。 2. **DataNodes**: 存储实际的数据块。每个DataNode都有自己的内存缓存,并通过心跳报文向NameNode报告存活状态和块的位置信息。 **三、HDFS文件写流程** 1. **客户端发起写操作**: 客户端首先创建一个新的文件,这会生成一个元数据块并记录在NameNode中。 2. **分块与复制**: 文件被切分成多个固定大小的数据块(默认64MB),然后客户端随机选择若干个DataNodes将这些块存储起来。通常会选择三个副本,保证冗余和容错性。 3. **数据写入**: 数据块被逐个写入DataNodes,客户端并不直接控制具体的DataNode,而是通过NameNode获取写入地址。 4. **确认写入**: DataNodes完成写入后,会更新自身的块列表并将此消息发送给NameNode,NameNode确认所有副本都已写入后,返回成功信号给客户端。 5. **最终持久化**: NameNode定期同步各个DataNode的块位置信息,当大部分副本存活时,这个文件被认为持久化了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值