【HDFS】hadoop的机架感知策略是啥?

Hadoop的机架感知策略是通过建立服务器和机架的位置拓扑图,实现副本放置、作业本地化等优化。系统并不能自动感应网络拓扑,而是依赖管理员配置的脚本来映射机器和机架的关系。Namenode中的FSNamesystem使用NetworkTopology类维护拓扑,Datanode注册时,通过ScriptBasedMapping执行脚本确定节点位置。
摘要由CSDN通过智能技术生成

了解hadoop的或多或少都听说过机架感知策略,无论是balancer还是jobtracker分配作业、数据副本放置策略都会用到机架感知。那什么叫机架感知?

首先故名思意机架感知就是感知机架,谁感知?就是hadoop系统嘛,更确切地说是hadoop能在系统内部建立一套服务器和机架的位置拓扑图,并且能识别系统节点的拓扑位置,知道了这些,才能做副本放置策略、作业本地化等更高层的设计。

难道说hadoop系统能自动感应集群或者机房内部的网路拓扑结构?想想看,各个公司的机房拓扑或者网络结构都不一样,采用的设备类型也不相同,hadoop真的那么吊能感受到?显然不能!hadoop系统想获得这个网络拓扑结构,需要系统管理员的帮助。

试想一下,hadoop能构建一幅网络拓扑图,实际的网络拓扑图又千变万化,管理员该怎么弄?所以这时候hadoop有必要设计一抽象的拓扑图结构,管理员需要让实际的网络拓扑结构尽量地与之适配。

Namenode的大管家FSNamesystem有两个重要的成员:

  NetworkTopology clusterMap = new NetworkTopology();
  private DNSToSwitchMapping dnsToSwitchMapping;
  
这两个东西就负责构建了机架及机架感知。

首先说拓扑逻辑类  NetworkTopology clusterMap = new NetworkTopology();这个NetworkTopology构造函数就搞了一把锁就完事了:

  public NetworkTopology() {
    netlock = new ReentrantReadWriteLock();
  }
从构造函数里似乎看不出来啥东西。我看查看这个clusterMap对象,会发现很多地方调用它的add、remove等操作,也许从这里可以看清楚这个网络拓扑类的面貌:

  public void add(Node node) {
    if (node==null) return;
    if( node instanceof InnerNode ) {
      throw new IllegalArgumentException(
        "Not allow to add an inner node: "+NodeBase.getPath(node));
    }
    netlock.writeLock().lock();
    try {
      Node rack = getNode(node.getNetworkL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值