HDFS架构及其副本放置策略

本文介绍了HDFS架构,包括将文件分成block块存储,默认大小128M。NameNode存储文件系统信息,DateNode存储数据块。副本是重要容错机制,默认副本数为3。还阐述了副本放置策略,以及生产上副本数的选择,必要时可将历史数据移至AWS S3或阿里云oss。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

架构

在这里插入图片描述

block

HDFS会将文件分成若干block块来存储,这个dfs.blocksize参数默认block大小为128M

NameNode(NN)

主要是存储整个HDFS的文件系统,包括:文件名称/文件目录结构/文件属性(权限,创建时间,副本数等)/文件对应的哪些块(副本块),这里的文件和副本块的映射关系并不会持久化,而是在集群运行或者启动时,DN定期发送blockreport给NN来更新映射关系。

DateNode(DN)

用来存储数据块和校验以及读写数据,一般来说DN和NN之间的通信靠下面两个参数:

  1. blockreport dfs.blockreport.intervalMsec=21600000毫秒=6小时
  2. heartbeat dfs.heartbeat.interval=3秒

副本

在这里插入图片描述
HDFS中副本是个很重要的容错机制,防止硬件故障带来的文件损失。副本直接复制文件的各个block,HDFS中dfs.replication默认规定副本数为3。
列如:如果你要存储一个260M的文件,在不修改上述的参数情况下,HDFS实际上有它的3乘3=9个block,实际存储3乘260=780M。

副本放置策略

如果写请求出现在DataNode机器上,第一个副本就会存放在本机器上,否则就会随机存放在任意一个DataNode上,接着第二个副本就会存放在不同于第一个副本所在机架的机架上,第三个副本会随机存放在第二个副本所在机架的任一DataNode上。

生产上副本数

一般来说副本数使用3是比较适合的,但是如果你的使用场景中数据增长过快亦或者存储空间不是太够,建议把副本数调成2。在实际上,为了存储空间通常会将历史数据移到AWS的S3或者阿里云的oss上,在代码中只需要将hdfs://hadoop001:9000/换成oss://hadoop001:9000/或者s3://hadoop001:9000/。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值