hadoop集群的故障概率估算

hadoop集群的机器数业界(国内)最大的在5000左右,是什么限制了集群的规模呢?有好几个原因。

1. namenode的内存大小限制

2. 机器故障概率随着机器数目增大而增大,通常一份数据存储在hdfs集群时保存3份拷贝,因此需要估算故障概率。

两个问题:

问题1. hdfs的数据存在10000块硬盘,每份数据都保存3份拷贝,请问在12小时以内3块或3块以上硬盘损坏的概率是多少?

解答:

每块2T硬盘在12小时内损坏的概率为p=(年损坏率 为3%-8%)/(365*24/12) = 1e-4。(按8%计算).

假设每块硬盘是独立的,不受其它硬盘正常或损坏的影响, 那么n块硬盘里在12个小时内有k块损坏的概率为 Q(k) = C(n, k)* p^k *(1-p)^(n-k) 
n=10000块硬盘,在12小时内同时有3块或3块以上硬盘损坏的概率为 1 - Q(0) - Q(1) - Q(2) = 9%

问题 2. 假设10000块硬盘,一个硬盘放30000个块。每个块必须重复三次,那么随机三个硬盘有同样块的概率是多少?

解答:

这个题目比较难,简化一下:
假设每个盘可以放无穷多个块。
假设总共存了m块数据(每块数据保存在随机从n=10000中取3块硬盘上),则随机取三块硬盘,某块数据分布在这三块硬盘上的概率为:p = 1/C(n, 3)。
则随机取三块硬盘,上面保存了k块相同的数据的概率为: Q(k) = C(m, k)* p^k *(1-p)^(m-k) 
则随机取3块硬盘,这三块硬盘上面保存了相同块的概率为P(n,m)= 1 - Q(0).
计算两个实例:
n=10000, m=1时,P(n,m)= 6.0e-12
n=10000, m=n*1000时,P(n,m)= 0.01%

n=100, m=n*1000时,P(n,m)= 46.12%
这里n是问题的关键,n越小,P(n,m)越大。
这是实际问题的一个估算。

上一篇:Arduino利用TimerOne库产生固定频率和占空比的方波


下一篇:使用virtualenv搭建独立的Python环境