Hadoop在搭建集群的时候,集群的网络拓扑都是默认在同一个机架下的。以/default-rack为一个机架,如下格式。
Rack: /default-rack
192.168.71.100:50010 (repo)
192.168.71.101:50010 (node01)
192.168.71.102:50010 (node02)
192.168.71.103:50010 (node03)
在默认机架下副本放置策略是无法实现的,所以要对集群拓扑进行配置。常用方法是机架感知。默认情况下,hadoop的机架感知是没有被启用的。通过在 NameNode所在节点的/Hadoop安装路径/etc/hadoop的core-site.xml配置文件中配置一个选项:

<property><name>topology.script.file.name</name><value>/脚本放置路径/topology.sh</value>
</property>

其中topology.sh为运行脚本,内容为:

#!/bin/bash
HADOOP_CONF=/topology.data文件的路径
while [ $# -gt 0 ] ; donodeArg=$1exec<${HADOOP_CONF}/topology.dataresult=""while read line ; doar=( $line )if [ "${ar[0]}" = "$nodeArg" ]||[ "${ar[1]}" = "$nodeArg" ]; thenresult="${ar[2]}"fidoneshiftif [ -z "$result" ] ; thenecho -n "/default-rack"elseecho -n "$result"fidone
``

文件中的topology.data是配置网络拓扑的,内容为:

192.168.71.100 repo /dc1/rack1
192.168.71.101 node01 /dc1/rack1
192.168.71.102 node02 /dc1/rack2
192.168.71.103 node03 /dc1/rack2

文件格式为节点IP 主机名 机架名,具体解释可参考其它博客。
注意:配置时要将topology.sh赋予执行权限,本人在Linux下运行的,
指令为sudo chmod +x topology.sh
配置好后,重启集群。通过hdfs dfsadmin -printTopology查看:
Rack: /dc1/rack1
192.168.71.100:50010 (repo)
192.168.71.101:50010 (node01)
Rack: /dc1/rack2
192.168.71.102:50010 (node02)
192.168.71.102:50010 (node03)

下面我来说一下我配置中遇到的问题,折磨我一天~
我按照上述方法进行配置,但是没有成功,调试了许多次都没有成功,网上也没找到具体的方法。报错如下:
java.io.IOException: Cannot run program “/home/conf/topology.sh” (in directory “/usr/local/hadoop-2.7.3”): error=2, 没有那个文件或目录,总是报这个错误,对于我这个入门小白来说,太难解决了,网上找不到。
后来想到会不会与topology.sh的内容有关,偶然看到一篇关于.sh脚本格式的文章。
在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
查看脚本文件是dos格式还是unix格式的几种办法:
(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M,unix格式的文件行尾为,unix格式的文件行尾为,unix格式的文件行尾为。
(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。
解决方法:
(1)使用linux命令dos2unix filename,直接把文件转换为unix格式
(2)使用sed命令sed -i “s/\r//” filename 或者 sed -i “s/^M//” filename直接替换结尾符为unix格式
(3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。
于是我查看了我的topology.sh的文件格式:

果然我的是以^M$为结尾,因为我是在txt文本中编辑好了传到linux上的,所以是这个问题,按照上述方法,执行指令dos2unix topology.sh(如果未找到命令,请自行百度安装方法)。执行后如图所示:

文件修改后,重启集群就行了。上面是我遇到问题,大家有什么疑问和我不足之处,请指出。(编辑不易,求赞!)
(本文为原创文章,转载请标明出处。)

Hadoop机架感知配置及配置问题解决相关推荐

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

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

  2. Hadoop机架感知

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

  3. hadoop之 hadoop 机架感知

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

  4. 【转】hadoop机架感知

    原文链接 http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2843015.html 背景 分布式的集群通常包含非常多的机器,由于受到机架槽位和交 ...

  5. 第十三章 hadoop机架感知

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

  6. Hadoop机架感知与balancer

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

  7. hadoop机架感知原理

    背景 我们都知道hadoop是用来存储海量数据的,所以对于hadoop集群,服务器与服务器间的通信时,对于网络带宽尤为重要,但是带宽费用又特别昂贵.由于受上层交换机的影响相同的带宽下,相同机架内的服务 ...

  8. Hadoop3.2.0 Hadoop 机架感知

    Hadoop组件具有机架感知功能.例如,通过将一个块的分片放在不同的机架上,HDFS块放置将使用机架感知来实现容错.这可以在群集中发生网络切换故障或分区时提供数据可用性. Hadoop主守护进程通过调 ...

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

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

最新文章

  1. VMware虚拟机直连物理网络的两种方式
  2. python ctypes教程_Python ctypes: Python file object - C FILE * | 易学教程
  3. 在不进入Guest OS的情况下,取得Guest OS的IP地址
  4. Java课程设计基于ssm的微信小程序
  5. python和对象复习_面向对象阶段复习
  6. antd table设置表格一个单元格的字体颜色_开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件
  7. 层次和约束:项目中使用vuex的3条优化方案
  8. fastjson 1.2 版本之前的bug, 反序列化时自动排序,导致签名不过
  9. 某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!
  10. 【ElasticSearch】Es 源码之 AnalysisModule 源码解读
  11. 编程语言入门及进阶、设计模式、面向对象书籍
  12. [OpenDrive] OpenDrive学习笔记
  13. HTML中 常见的浏览器内核有哪些,主流浏览器的内核以及内核前缀是什么?
  14. 初次软件开发(总结篇 之二)_-Chaz-_新浪博客
  15. 四川轻化工大学计算机网络技术分数线,四川轻化工大学录取分数线2021是多少分(附历年录取分数线)...
  16. 产品经理眼中的SLAM技术学习路径
  17. Juniper-SRX-基于域控认证的用户防火墙
  18. 中国历史上十大经典遗言
  19. QT 对话框添加背景图片的方法
  20. nodejs中https和ca证书

热门文章

  1. python注册用户名和密码登录_Python_36用户名密码登录注册的例子
  2. Linux 安全缓解机制总结
  3. linux 流量 脚本,实时查看linux网卡流量脚本
  4. 使用U盘重装Windows10系统详细步骤及配图【官方纯净版】
  5. python爬取pubmed的文献_爬虫获取pubmed中文献的标题和摘要
  6. HbuilderX使用方法
  7. 读取gpio管脚电平需要设置什么模式_MT7688/MT7628-GPIO使用
  8. 学习BLE蓝牙一个月总结
  9. 极域电子教室操作技巧
  10. C语言示例,三个骰子