HDFS的副本存放策略
HDFS的副本存放策略
1 / 17
HDFS的副本存放策略
HDFS 的副本存放策略
HDFS 作为 Hadoop 中的一个分布式文件系统,而且是
专t;Node> excludedNodes, long blocksize, int
maxNodesPerRack, List<DatanodeDescriptor> results)
throws NotEnoughReplicasException { // if no local
HDFS的副本存放策略
HDFS的副本存放策略
3 / 17
HDFS的副本存放策略
machine, randomly choose one node
if (localMachine ==
null)
return chooseRandom(,
excludedNodes, blocksize, maxNodesPerRack, results);
// otherwise try local machine first
if
(!(localMachine))
{
(localMachine);
if
(isGoodTarget(localMachine, blocksize, maxNodesPerRack,
false, results)) {
(localMachine);
return localMachine;
}
}
// try
a node on local rack
return
chooseLocalRack(localMachine, excludedNodes, blocksize,
maxNodesPerRack, results);
}
[java] view
plaincopyprivate boolean isGoodTarget(DatanodeDescriptor
node, long blockSize, int maxTargetPerLoc, boolean
considerLoad, List<DatanodeDescriptor> results)
{
Log logr = ;
// 节
点不可用了
if (() ||
()) {
("Node
"+(node)+ " is not chosen because the node is
(being) decommissioned"); return false; }
long remaining = () -
(() * blockSize); // 节点剩余
HDFS的副本存放策略
HDFS的副本存放策略
4 / 17
HDFS的副本存放策略
的容量够不够
if (blockSize*
HDFS的副本存放策略
HDFS的副本存放策略
5 / 17
HDFS的副本存放策略
>remaining)
{ ("Node "+(node)+ " is
HDFS的副本存放策略
HDFS的副本存放策略
17 / 17
HDFS的副本存放策略
not chosen because the node does not have enough space");
return false;
}
//
节点当前的负载情况
if (considerLoad) {
double avgLoad = 0;
int
size = ();
if (size != 0)
{
avgLoad =
(double)()/size;
}
if
(
HDFS的副本存放策略 来自淘豆网m.daumloan.com转载请标明出处.