hdoop机架感知策略

      在大型的hadoop集群中数据中心会分布在多个机架上,同样小的集群一般也会占据俩到三个机架。这样对于集群来说,在单个机架发生故障时,能够提供额外的冗余性。hadoop本身实现了机架感知在(rack-aware),同时能够根据服务器所属的机架进行一定的优化。其中一个示例是hadoop使用的分块副本分布策略。它会尝试在不同的机架上存储至少一个副本,以此来增加数据弹性。在请求分布块时(例如在MapReduce作业中),hadoop会选择相同机架上的服务器,从而避免了跨越机架的网络访问。

为了使用该特性,hadoop需要开启机架感知策略,默认是不开启的。开启该策略需要hadoop管理员提供一个返回机架标识以及服务器Ip或者主机名的可执行文件。该文件最常见的做法是创建一个由逗号分隔的文本文件,其中包含服务器所对应的机架,同时编写一个命令行,或者python或者perl脚本,他将IP或者主机名作为参数并且返回机架标识。机架标识可以为任意的字符串。其配置在core-site.xml中加入:

<name>net.topology.script.file.name</name>

<value>/etc/hadoop/conf/rackTopology.py</value>

/etc/hadoop/conf/rackTopology.py
#-*-coding:UTF-8 -*-
import sys

rack = {"hadoop-node-01":"rack1",
        "hadoop-node-02":"rack1",
        "hadoop-node-03":"rack1",
        "hadoop-node-04":"rack1",
        "hadoop-node-09":"rack2",
        "hadoop-node-10":"rack2",
        "hadoop-node-11":"rack2",
        "hadoop-node-12":"rack2",
        "hadoop-node-13":"rack2",
        "hadoop-node-14":"rack2",
        "192.168.1.11":"rack1",
        "192.168.1.12":"rack1",
        "192.168.1.13":"rack1",
        "192.168.1.14":"rack1",
        "192.168.1.39":"rack2",
        "192.168.1.30":"rack2",
        "192.168.1.31":"rack2",
        "192.168.1.32":"rack2",
        "192.168.1.33":"rack2",
        "192.168.1.34":"rack2",
        }

if __name__=="__main__":
        print "/" + rack.get(sys.argv[1],"rack0")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值