HDFS的block块和副本数

1 block块

HDFS官方默认的值为:128m
如下图,我们可以计算下

134217728 / 1024 = 131072k
131072 / 1024 = 128m

在这里插入图片描述
比方说一个文件135m,那么会用下面的计算方式
135 % 128 = 1 余 7
先对128取模,得出1,余数为7;

那么在HDFS系统会有2个块,1个块128m,1个块7m。
举个例子:
有一碗水135ml,一个拼字的规格容量为128ml,要把这一碗水装到瓶子里,需要准备2个瓶子,一个瓶子装128ml,另外个瓶子实际装7ml


HDFS 系统的适应场景为大文件存储,小文件是致命的,为什么这么说呢
因为小文件会把NameNode(简称nn)撑爆
假设我们设定一个阀值30m,小于等于30m的就是小文件,nn节点维护的字节大约250个字节

如果现在我们的内存是4G,有1亿个小文件,我们计算下
1.计算4G是多少字节

4 * 1024 = 4096m
4096 * 1024 = 4194304k
4194304 * 1024 = 4294967296b

大约是42.9亿字节

2.一个文件nn节点需要250字节,1亿个小文件,就是需要250亿个字节
从上面的计算来看,nn需要的内存已超过4G内存


那么小文件我们处理的方式:
1.设定小文件的阀值
2.合并小文件,小文件的合并两种情况:
2.1 在数据未落到hdfs之前合并
2.2 数据已经落到hdfs,通过spark service 服务,每天调度去合并,不要今天去合并昨天的数据,根据自己的业务场景进行设置,如果3-5天之前的数据不会有什么变动了,那么可以设置成合并7天之前的数据

总结:小文件除了会撑爆nn,还会影响hive, spark的速度

2 副本数

生产上 副本一般就是官方默认参数3
在这里插入图片描述
比如我们上面刚刚那个例子
135 % 128 = 1 余 7
那么就会有3个128m的块,3个7m的块


题目:块大小128m,副本数3份,一个文件260m,请问多少块,多少实际存储?
260 % 128 = 2 余 4m
那么就是 3个块*3个副本 = 9个块
实际存储:260✖️3 =780m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值