HDFS详解二之副本放置策略

副本放置策略

假设在数据中心的一个机架上面有5个服务器。一般正常的机架放10个,为什么10个,这个是按照机架的电量去算的,每个服务器分配多少安培的电流,一个机柜的电流安培数是有标准的,一个机柜的电流大小除以一个服务器的电流大小,算一个估算值。】

正常情况下,就是三个副本。副本不是越多越好,越多,需要的存储空间就大了,而且写的越慢。

第一个副本:

放置在上传的DN节点上,比如现在用client客户端上传的文件提交到HDFS上面,上传的那台机器正好是DataNode节点,会优先在自己所在的节点上上传一个副本,这样就不需要通过网络IO通过网线去传输数据包,这样会节省时间。

如果是集群外提交,则随机挑选一台磁盘不太慢、CPU不太忙的节点上。(老大NN是知道哪些节点是空闲的,会返回地址列表让你去上传)。

第二个副本:

放置在与第一个副本不同的机架的节点上。

第三个副本:

放置在与第二个副本相同机架的不同节点上。

假如还有更多的副本,就随机放,随机放在节点上。

生产上 尽量将上传数的动作,读写的动作 选取DataNode节点上。优先自己,这样减少网络带宽消耗,减少时间。

面试题:
集群上有DataNode 3个,其中一个DataNode挂了,那么一个文件有三个副本,
那么我现在能够正确读取文件内容吗?

待补充........

(网上:第一不会给储存带来影响,因为有其他的副本保存着,不过建议尽快修复,第二会影响运算的效率,机器少了,reduce在保存数据时选择就少了,一个数据的块就大了所以就会慢。)


其中DataNode挂了其实就是block Miss,那么怎样去修复?

1.手动修复
参考:https://blog.csdn.net/high2011/article/details/72461376

hdfs |grep debug

hdfs debug
Usage: hdfs debug <command> [arguments]

verify [-meta <metadata-file>] [-block <block-file>]
recoverLease [-path <path>] [-retries <num-retries>]

2.自动修复
参考:https://www.cnblogs.com/prayer21/p/4819789.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值