单机测试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();
}