单机测试HDFS多机架模拟

单机测试HDFS性能,HDFS的机架感知是需要配置,若没有配置则默认全部机器属于/default-rack。现需要模拟出多机架,又不需要去写脚本,Hadoop的测试框架已经提供了这样的功能,利用StaticMapping类就可以建立机器与机架的映射。


……

conf.setClass("topology.node.switch.mapping.impl",
                StaticMapping.class, DNSToSwitchMapping.class);

nameNode = NameNode.createNameNode(argv, config);

for(int idx=0; idx < datanodes; idx++) {
  dn[idx] = new TinyDatanode(idx, 10000);

  StaticMapping.addNodeToRack(dn[idx].getHost(), "/rack" + idx%5);
  dn[idx].register();
  dn[idx].sendHeartbeat();
}


机器与机架的映射相当与一个hash表(机器名->机架名),在Datanode注册时NN会查看这个表,调用StaticMapping.resolve(names)获取DN的networkLocation,即机架名,然后把这些位置信息存放到clusterMap,构成整个集群的DN网络拓扑结构。所以 StaticMapping.addNodeToRack()这一步必须在DN注册前完成,使得NN有机架表可查。

你可能感兴趣的:(单机测试HDFS多机架模拟)