实现hadoop中的机架感知(Rack aware)

原理

hadoop中声明是有机架感知的功能,能够提高hadoop的性能。平时我们使用的hadoop集群,实际上是从来没有使用上这个功能的。 hadoop中所说的机架感知的实现实际上这样的:

  • hadoop启动时会检查hadoop-default.xml和hadoop-site.xml中的一个配置选 项:topology.script.file.name,如果这个选项不为空,hadoop就会认为这是一个可运行脚本,于是在每检测到一个slave 连接上jobtracker时就会把这个slave的IP地址作为参数传给这个脚本,然后期待这个脚本的返回值返回这台slave所述的rack名。而这 个脚本内部具体是如何决定slave和rack的映射hadoop是不关心的。所以,哪台机器属于那个rack,其实是由写这个脚本的人决定。
  • 另外,和topology.script.file.name相对应的还有另外一个配置选 项:topology.script.number.args,这个选项的设定了以上脚本所能接受的最大参数个数,因为脚本被调用时会接受到不止一个参 数,每个参数都是一台机器的IP地址。

实现步骤

  • 1, 在jobtracker的hadoop-site.xml配置文件中加入一下配置选项:
<property>
<name>topology.script.file.name</name>
<value>/path/to/rackmap.sh</value>
<description> The script name that should be invoked to resolve DNS names to
NetworkTopology names. Example: the script would take host.foo.bar as an
argument, and return /rack1 as the output.
</description>
</property>

<property>
<name>topology.script.number.args</name>
<value>1000</value>
<description> The max number of args that the script configured with
topology.script.file.name should be run with. Each arg is an
IP address.
</description>
</property>
  • 编写rackmap.sh脚本,为每一个地址输出其所属的rack
  • 重启jobtracker

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值