假如设备链接层次分3层,第一层交换机d1下面连多个交换机rk1,rk2,rk3,rk4,…. 每个交换机对应一个机架。

d1(rk1(hs11,hs12,…),rk2(hs21,hs22,…), rk3(hs31,hs32,…),rk4(hs41,hs42,…),…)

可以用程序或脚本完成由host到设备的映射。比如,用python,生成一个topology.py:

然后在core-site.xml中配置
<property>
<name>topology.script.file.name</name>
<value>/home/hadoop/hadoop-1.1.2/conf/topology.py</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>

python机架脚本:

[hadoop@hs11 conf]$ cat topology.py
#!/usr/bin/env python

”’
This script used by hadoop to determine network/rack topology. It
should be specified in hadoop-site.xml via topology.script.file.name
Property.
topology.script.file.name
/home/hadoop/hadoop-1.1.2/conf/topology.py

To generate dict:
for i in range(xx):
#print “\”hs%d\”:\”/rk%d/hs%d\”,”%(i,(i-1)/10,i)

print “\”hs%d\”:\”/rk%d\”,”%(i,(i-1)/10)

Andy 2013.7.23
”’

import sys
from string import join

DEFAULT_RACK = ‘/rk0′;

RACK_MAP = {
“hs11″:”/rk1″,
“hs12″:”/rk1″,
“hs13″:”/rk1″,
“hs14″:”/rk1″,
“hs15″:”/rk1″,
“hs16″:”/rk1″,
“hs17″:”/rk1″,
“hs18″:”/rk1″,
“hs19″:”/rk1″,
“hs20″:”/rk1″,
“hs21″:”/rk2″,
“hs22″:”/rk2″,
“hs23″:”/rk2″,
“hs24″:”/rk2″,
“hs25″:”/rk2″,
“hs26″:”/rk2″,
“hs27″:”/rk2″,
“hs28″:”/rk2″,
“hs29″:”/rk2″,
“hs30″:”/rk2″,
“hs31″:”/rk3″,
“hs32″:”/rk3″,
“hs33″:”/rk3″,
“hs34″:”/rk3″,
“hs35″:”/rk3″,
“hs36″:”/rk3″,
“hs37″:”/rk3″,
“hs38″:”/rk3″,
“hs39″:”/rk3″,
“hs40″:”/rk3″,
“hs41″:”/rk4″,
“hs42″:”/rk4″,
“hs43″:”/rk4″,
“hs44″:”/rk4″,
“hs45″:”/rk4″,
“hs46″:”/rk4″,

“10.10.20.11″:”/rk1″,
“10.10.20.12″:”/rk1″,
“10.10.20.13″:”/rk1″,
“10.10.20.14″:”/rk1″,
“10.10.20.15″:”/rk1″,
“10.10.20.16″:”/rk1″,
“10.10.20.17″:”/rk1″,
“10.10.20.18″:”/rk1″,
“10.10.20.19″:”/rk1″,
“10.10.20.20″:”/rk1″,
“10.10.20.21″:”/rk2″,
“10.10.20.22″:”/rk2″,
“10.10.20.23″:”/rk2″,
“10.10.20.24″:”/rk2″,
“10.10.20.25″:”/rk2″,
“10.10.20.26″:”/rk2″,
“10.10.20.27″:”/rk2″,
“10.10.20.28″:”/rk2″,
“10.10.20.29″:”/rk2″,
“10.10.20.30″:”/rk2″,
“10.10.20.31″:”/rk3″,
“10.10.20.32″:”/rk3″,
“10.10.20.33″:”/rk3″,
“10.10.20.34″:”/rk3″,
“10.10.20.35″:”/rk3″,
“10.10.20.36″:”/rk3″,
“10.10.20.37″:”/rk3″,
“10.10.20.38″:”/rk3″,
“10.10.20.39″:”/rk3″,
“10.10.20.40″:”/rk3″,
“10.10.20.41″:”/rk4″,
“10.10.20.42″:”/rk4″,
“10.10.20.43″:”/rk4″,
“10.10.20.44″:”/rk4″,
“10.10.20.45″:”/rk4″,
“10.10.20.46″:”/rk4″,


}

if len(sys.argv)==1:
print DEFAULT_RACK
else:
print join([RACK_MAP.get(i, DEFAULT_RACK) for i in sys.argv[1:]],” “)

原来这个程序我返回的是

“hs11″:”/rk1/hs11″,

结果执行mapreduce程序时报如下错误:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there’s no reduce operator
Starting Job = job_201307241502_0003, Tracking URL = http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0003
Kill Command = /home/hadoop/hadoop-1.1.2/libexec/../bin/hadoop job  -kill job_201307241502_0003
Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 0
2013-07-24 18:38:11,854 Stage-1 map = 100%,  reduce = 100%
Ended Job = job_201307241502_0003 with errors
Error during job, obtaining debugging information…
Job Tracking URL: http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0003
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
MapReduce Jobs Launched:
Job 0:  HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec
通过http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0002 可以看到:
Job initialization failed:

java.lang.NullPointerException

at org.apache.hadoop.mapred.JobTracker.resolveAndAddToTopology(JobTracker.java:2751)
at org.apache.hadoop.mapred.JobInProgress.createCache(JobInProgress.java:578)
at org.apache.hadoop.mapred.JobInProgress.initTasks(JobInProgress.java:750)

at org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:3775)

at org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:90)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

原来系统在配置机架敏感时,并不需要在脚本中返回设备ns或hostname,系统会自动添加。改为上面的topology.py后,系统执行正确。

hadoop 配置机架感知相关推荐

  1. Hadoop配置机架感知

    配置机架感知 core-site.xml cat $HADOOP_HOME/etc/hadoop/core-site.xml <property> <name>net.topo ...

  2. Hadoop配置机架感知(python脚本)

    昨天QQ群里提了一个hadoop运行效率分配的问题,总结一下,写个文章.集群使用hadoop-1.0.3 有些hadoop集群在运行的时候,不完全是绝对平均的分配,不过需要尽可能平均的分配任务,避免某 ...

  3. Hadoop之——机架感知配置

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51935169 1.背景 Hadoop在设计时考虑到数据的安全与高效,数据文件默认在 ...

  4. Hadoop之机架感知

    在分布式集群下,由于机架的的槽位和交换机网口数量的限制,使得集群上的机器不得不跨越机架,通常一个大型的集群会跨越很多机架.一般情况机架内机器的通讯会快于跨机架机器之间的通讯,并且机架之间机器的网络通信 ...

  5. Hadoop机架感知配置及配置问题解决

    Hadoop在搭建集群的时候,集群的网络拓扑都是默认在同一个机架下的.以/default-rack为一个机架,如下格式. Rack: /default-rack 192.168.71.100:5001 ...

  6. Hadoop机架感知与balancer

    版本:Apache Hadoop 1.0.3 Hadoop集群节点通常会跨很多个机架,增加节点的情况时有发生,而且很多时候节点的磁盘容量还不统一,有大有小,所以集群节点非常容易出现磁盘利用不平衡的情况 ...

  7. Hadoop机架感知

    背景 分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群.机架内的机器之间的网络速度通常都会高于跨机架 ...

  8. HDFS机架感知概念及配置实现

    一.机架感知是什么? 告诉 Hadoop 集群中哪台机器属于哪个机架 二.那么怎么告诉呢? Hadoop 对机架的感知并非是自适应的,亦即,hadoop 集群分辨 某台 slave 机器是属于哪个 r ...

  9. hadoop之 hadoop 机架感知

    1.背景 Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份.这样如果本地数据损坏,节点可以从同一机 ...

最新文章

  1. 【小白学PyTorch】10.pytorch常见运算详解
  2. Linux下l2tp客户端xl2tpd的安装配置
  3. 互联网1分钟 | 0920
  4. IDEA第一个mybatis程序 mybatis增删查改操作 mybatis的map模糊查询
  5. 手绘风格的数据可视化 (萌萌风)Sketchify,及其他可视化工具(商业风)
  6. [respberry pi3][suse] 配置docker
  7. 【再探backbone 02】集合-Collection
  8. 刷新tabpanel中的子项目内容
  9. Bailian4145 放弃考试 POJ2976 ZOJ3068 Dropping tests【二分法+01分数规划】
  10. oracle的约束什么作用,Oracle数据库知识之约束
  11. 大过年的,程序员在家改bug…
  12. 视频教程-OCJP认证考试复习课-其他
  13. 两年开发工作总结及未来展望
  14. SQL 存储过程使用
  15. requests 已过时,初探协程与异步 http 框架 httpx
  16. 眼球追踪技术在用户体验中的应用
  17. java.lang.NoSuchMethodError:javax.persistence.PersistenceContext.synchronization()Ljavax/persistence
  18. c primer plus 第五章编程练习
  19. ARM的强硬未能吓住高通,高通和中国芯片的远离导致ARM前景黯淡
  20. Pytorch(pip安装示例)

热门文章

  1. Several ports (8005, 8080, 8009) required by MyEclipse Tomcat v7.0 are already in use.
  2. 最易懂Spring循环依赖
  3. 电磁兼容整改100个小技巧
  4. 行泊一体与智能泊车两大产品重磅升级,纵目科技智驾战略全线推进
  5. 松下6轴程序模板 1:plc采用FP-XHC60T ,标准可带6轴程序
  6. NFT Insider #41:The Sandbox 与舒淇等多个香港合作伙伴达成合作,YGG筹资帮助菲律宾台风灾民
  7. 立哥版-无线电通讯简史
  8. 巨杉数据库首批入选广州数字金融协会,引领大湾区数字金融创新
  9. 替换 google cdn 提高网页加载速度
  10. table表格的删除、新增、修改