hadoop 配置机架感知
周海汉?2013.7.24 http://abloz.com 假如设备链接层次分3层,第一层交换机d1下面连多个交换机rk1,rk2,rk3,rk4,. 每个交换机对应一个机架。 d1(rk1(hs11,hs12,),rk2(hs21,hs22,), rk3(hs31,hs32,),rk4(hs41,hs42,),) 可以用程序或脚本完成由host到设备的映射
周海汉?2013.7.24
http://abloz.com
假如设备链接层次分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中配置
NetworkTopology names. Example: the script would take host.foo.bar as an
argument, and return /rack1 as the output.
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”,
…
}
如果 len(sys.argv)==1:
打印 DEFAULT_RACK
其他:
print join([RACK_MAP.get(i, DEFAULT_RACK) for i in sys.argv[1:]],” “)
原来这个程序我返回的是
“hs11”:”/rk1/hs11”,
结果执行mapreduce 程序时报如下错误:
MapReduce 作业总数 = 1
启动工作 1 中的 1
由于没有reduce操作符,reduce任务的数量被设置为0
开始作业 = job_201307241502_0003,跟踪 URL = http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0003
终止命令 = /home/hadoop/hadoop-1.1.2/libexec/../bin/hadoop 作业? -kill job_201307241502_0003
Stage-1的Hadoop作业信息:映射器数量:0;减速机数量:0
2013-07-24 18:38:11,854 第一阶段地图 = 100%,?减少=100%
已结束作业 = job_201307241502_0003,有错误
作业出错,获取调试信息…
职位跟踪网址:http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0003
FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.MapRedTask
返回代码 2
MapReduce 作业启动:
工作 0:? HDFS 读取:0 HDFS 写入:0 失败
MapReduce CPU 总花费时间:0 毫秒
通过http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0002?可以看到:
作业初始化失败:
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)
在 org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:3775)
at?org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:90)
在?java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
在 java.lang.Thread.run(Thread.java:662)
原来系统在配置敏感时,不需要在脚本中返回设备名或主机名,系统会自动添加。改为上面的topology.py后,系统执行正确。
相关博文:
- hadoop 打印配置参数
- hadoop 中的 ClassNotFoundException
- hadoop ubuntu 集群安装
译文地址:hadoop配置装载,感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

标题:如何在PyCharm中正确配置Git在现代软件开发中,版本控制系统是非常重要的工具,而Git作为其中一种流行的版本控制系统,为开发者提供了强大的功能和灵活的操作。而PyCharm作为一款功能强大的Python集成开发环境,自带了对Git的支持,能够让开发者更加便捷地管理代码版本。本文将介绍如何在PyCharm中正确地配置Git,以便于在开发过程中更好地

PyCharm是一款强大的集成开发环境(IDE),而PyTorch是深度学习领域备受欢迎的开源框架。在机器学习和深度学习领域,使用PyCharm和PyTorch进行开发可以极大地提高开发效率和代码质量。本文将详细介绍如何在PyCharm中安装配置PyTorch,并附上具体的代码示例,帮助读者更好地利用这两者的强大功能。第一步:安装PyCharm和Python

标题:Linux系统中GDM的工作原理及配置方法在Linux操作系统中,GDM(GNOMEDisplayManager)是一种常见的显示管理器,用于控制图形用户界面(GUI)登录和用户会话管理。本文将介绍GDM的工作原理和配置方法,以及提供具体的代码示例。一、GDM的工作原理GDM是GNOME桌面环境下的显示管理器,负责启动X服务器并提供登录界面,用户输

了解LinuxBashrc:功能、配置与使用方法在Linux系统中,Bashrc(BourneAgainShellruncommands)是一个非常重要的配置文件,其中包含了系统启动时自动运行的各种命令和设置。Bashrc文件通常位于用户的家目录下,是一个隐藏文件,它的作用是为用户自定义设置Bashshell的环境。一、Bashrc的功能设置环境

Win11系统如何配置工作组工作组是一种在局域网中连接多台计算机的方式,它允许计算机之间共享文件、打印机和其他资源。在Win11系统中,配置工作组非常简单,只需按照以下步骤操作即可。步骤1:打开“设置”应用程序首先,点击Win11系统的“开始”按钮,然后在弹出的菜单中选择“设置”应用程序。你也可以使用快捷键“Win+I”打开“设置”。步骤2:选择“系统”在“设置”应用程序中,你会看到多个选项。请点击“系统”选项,进入系统设置页面。步骤3:选择“关于”在“系统”设置页面中,你会看到多个子选项。请点

PyCharm是一款常用的集成开发环境(IDE),在日常开发中,使用Git管理代码是必不可少的。本文将介绍如何在PyCharm中配置Git,并使用Git进行代码管理,并附带具体代码示例。第一步:安装Git首先,确保在你的计算机上已经安装了Git。如果没有安装,可以前往[Git官网](https://git-scm.com/)下载并安装最新版本的Git

标题:Linux系统中如何配置和安装FTPS,需要具体代码示例在Linux系统中,FTPS是一种安全的文件传输协议,与FTP相比,FTPS通过TLS/SSL协议对传输的数据进行加密,提高了数据传输的安全性。在本文中,将介绍如何在Linux系统中配置和安装FTPS,并提供具体的代码示例。步骤一:安装vsftpd打开终端,输入以下命令安装vsftpd:sudo

MyBatisGenerator是MyBatis官方提供的一个代码生成工具,可以帮助开发人员快速生成符合数据库表结构的JavaBean、Mapper接口以及XML映射文件。在使用MyBatisGenerator进行代码生成的过程中,配置参数的设置是至关重要的。本文将从配置参数的角度出发,深入探讨MyBatisGenerator的
