Hadoop机架感知

Hadoop提供了机架(rack)的概念,Hadoop集群上面的一个node属于哪一个rack,rack信息由网络管理员配置。Hadoop提供机架感知的功能来获取管理员配置的机架和节点的信息。
https://blog.csdn.net/xhh198781/article/details/7162270这篇文章讲的很清楚了,不多说了。

一个Windows下直接运行的栗子

java代码

public class TestRack {
    public static void main(String[] args){
        YarnConfiguration conf = new YarnConfiguration();
        ScriptBasedMapping sbp = new ScriptBasedMapping();
        sbp.setConf(conf);

        List<String> ips = new ArrayList<String>();
        ips.add("127.0.0.1");
        ips.add("127.0.0.2");
        ips.add("127.0.0.3");
        ips.add("127.0.0.4");

        // 我自己提供的1.bat一次只能解析一个IP,这里一个IP一个IP进行解析
        // 生产提供的脚本一次会解析过个IP,最大参数个数由maxArgs限制
        // maxArgs由配置项`net.topology.script.number.args`在core-site中进行配置,默认值是100

        for(String ip: ips){
            List <String> tmpList = new ArrayList<String>(1);
            tmpList.add(ip);
            System.out.println(sbp.resolve(tmpList));
        }
    }
}

core-site.xml

<configuration>
    <property>
        <name>topology.script.file.name</name>
        <value>/C:\Users\64371\Desktop\yarn\1.bat</value>
        <description>可执行文件ipresolve的绝对路径</description>
    </property>
</configuration>

可执行脚本

@echo off
echo /rack/rack%1%
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。