hadoop rackawareness实现

由于集群扩大,新机器安装在另一台机架上,所以需要配置机架感知。机器感知没有使用默认脚本实现,而是采用直接配置topology.node.switch.mapping.impl,实现类是java类。以下是在测试集群中的实现。

public class JavaTestBasedMapping implements DNSToSwitchMapping {

	//key:ip value:rack
	private static ConcurrentHashMap<String,String> cache = new ConcurrentHashMap<String,String>();
	
	static {
		//rack0 16
		cache.put("192.168.5.116", "/ht_dc/rack0");
		cache.put("192.168.5.117", "/ht_dc/rack0");
		cache.put("192.168.5.118", "/ht_dc/rack0");
		cache.put("192.168.5.120", "/ht_dc/rack0");
		cache.put("192.168.5.121", "/ht_dc/rack0");
		cache.put("host116", "/ht_dc/rack0");
		cache.put("host117", "/ht_dc/rack0");
		cache.put("host118", "/ht_dc/rack0");
		cache.put("host120", "/ht_dc/rack0");
		cache.put("host121", "/ht_dc/rack0");
	}
	
	@Override
	public List<String> resolve(List<String> names) {
		List<String> m = new ArrayList<String>();
		
		if (names == null || names.size() == 0) {
			m.add("/default-rack");
			return m;
		}
		
		for (String name : names) {
			String rack = cache.get(name);
			if (rack != null) {
				m.add(rack);
			}
		}
		
		return m;
	}
}
打成jar,加上执行权限。我是直接放到了$HADOOP_HOME/lib下。

core-site.xml加入 

<property>
                <name>topology.node.switch.mapping.impl</name>
                <value>com.dmp.hadoop.cluster.topology.JavaTestBasedMapping</value>

</property>

测试成功。hadoop dfsadmin -report 显示配置的RACK名称。


建议写一个配置文件。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值