「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」
HDFS服务
是hadoop中的一个服务
分布式文件存储服务
层级目录结构 /itcast/zookeeper.out
HDFS设计目标
- 故障检测和自动恢复功能
- 存储大文件数据
- 高吞吐量
- 一次写入多次读取
- 兼容性
HDFS的特性
- 主从管理结构
- 主服务 namenode 所有请求都要经过namenode 负责管理从服务datanode
- 从服务 datanode 负责数据存储
- 块存储(block)
- 在磁盘上开辟一块一块空间存储数据,每一块存储空间大小是128m
- 副本机制
- 存储数据时不止存储一份,会根据指定副本数量存储相应个数据的数据内容,默认情况副本数量是3
- 一次写入多次读取
- 命名空间
- 层级目录结构 /itcast/zookeeper.out
- 存储数据时需要常见一个目录空间
- 可以通过命名空间对数据进行区分 /user/ /order/
HDFS的核心服务
- NameNode
- 负责管理datanode
- 所用请求交给namenode处理
- 保存了元数据
- 元数据:
- 文件数据 文件路径,文件大小,文件名称,文件权限
- 块数据 块在磁盘上的位置,块所属的datanode
- datanode数据 datanode服务的状态,所有在服务器,
- 元数据保存在内存上的
- 持久化:将内存上的元数据,写入到磁盘上
- 元数据:
- namenode进行运行在内存较大的服务器上
- 单点故障:一旦namenode出现问题,整个hdfs服务停止运行
- datanode
- 负责数据存储
- 记录存储块的位置
- 定时的将信息同步给namenode
- 状态 心跳机制 默认3s
- 块数据 默认6h
保存数据流程
获取数据流程
读取数据和写入数据第一步请求namenode,获取相关datanode信息
读数据 从返回的就近的运行状态的datanode中获取相应信息,如果多块数据,依次读取每块数据后同意合并多块数据存入本地文件
写数据 将数据写入就近机器,多个副本按照顺序依次写入数据,每次传递写入64kb数据
一个块内只有一个文件信息