`
xuyuanshuaaa
  • 浏览: 388235 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Hadoop集群网络性能优化:Hadoop机架感知实现及配置

 
阅读更多
分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群。机架内的机器之间的网络速度通常都会高于跨机架机器之间的网络速度,并且机架之间机器的网络通信通常受到上层交换机间网络带宽的限制。
具体到Hadoop集群,由于Hadoop的HDFS对数据文件的分布式存放是按照分块block存储,每个block会有多个副本(默认为3),并且为了数据的安全和高效,所以Hadoop默认对3个副本的存放策略为:

在本地机器的hdfs目录下存储一个block
在另外一个rack的某个datanode上存储一个block
在该机器的同一个rack下的某台机器上存储最后一个block
这样的策略可以保证对该block所属文件的访问能够优先在本rack下找到,如果整个rack发生了异常,也可以在另外的rack上找到该block的副本。这样足够的高效,并且同时做到了数据的容错。
但是,Hadoop对机架的感知并非是自适应的,亦即,Hadoop集群分辨某台slave机器是属于哪个rack并非是只能的感知的,而是需要 Hadoop的管理者人为的告知Hadoop哪台机器属于哪个rack,这样在Hadoop的namenode启动初始化时,会将这些机器与rack的对应信息保存在内存中,用来作为对接下来所有的HDFS的写块操作分配datanode列表时(比如3个block对应三台datanode)的选择 datanode策略,做到Hadoopallocateblock的策略:尽量将三个副本分布到不同的rack。
接下来的问题就是:通过什么方式能够告知Hadoopnamenode哪些slaves机器属于哪个rack?以下是配置步骤。


配置

默认情况下,Hadoop的机架感知是没有被启用的。所以,在通常情况下,Hadoop集群的HDFS在选机器的时候,是随机选择的,也就是说,很有可能在写数据时,Hadoop将第一块数据block1写到了rack1上,然后随机的选择下将block2写入到了rack2下,此时两个rack之间产生了数据传输的流量,再接下来,在随机的情况下,又将block3重新又写回了rack1,此时,两个rack之间又产生了一次数据流量。在job处理的数据量非常的大,或者往Hadoop推送的数据量非常大的时候,这种情况会造成rack之间的网络流量成倍的上升,成为性能的瓶颈,进而影响作业的性能以至于整个集群的服务。
要将Hadoop机架感知的功能启用,配置非常简单,在namenode所在机器的Hadoop-site.xml配置文件中配置一个选项:

   1. <property> 
   2. <name>topology.script.file.name</name> 
   3. <value>/path/to/script</value> 
   4. </property> 


这个配置选项的value指定为一个可执行程序,通常为一个脚本,该脚本接受一个参数,输出一个值。接受的参数通常为某台datanode机器的 ip地址,而输出的值通常为该ip地址对应的datanode所在的rack,例如”/rack1”。Namenode启动时,会判断该配置选项是否为空,如果非空,则表示已经用机架感知的配置,此时namenode会根据配置寻找该脚本,并在接收到每一个datanode的heartbeat时,将该 datanode的ip地址作为参数传给该脚本运行,并将得到的输出作为该datanode所属的机架,保存到内存的一个map中。
至于脚本的编写,就需要将真实的网络拓朴和机架信息了解清楚后,通过该脚本能够将机器的ip地址正确的映射到相应的机架上去。一个简单的实现如下:


   1. #!/usr/bin/perl-w  
   2. usestrict;  
   3. my$ip=$ARGV[0];  
   4. my$rack_num=3;  
   5. my@ip_items=split/\./,$ip;  
   6. my$ip_count=0;  
   7. foreachmy$i(@ip_items){  
   8. $ip_count+=$i;  
   9. }  
  10. my$rack="/rack".($ip_count%$rack_num);  
  11. print"$rack"; 
分享到:
评论

相关推荐

    Hadoop快速部署工具 EasyHadoop.zip

    支持配置推送,hosts文件推送,自动生成机架感知脚本 使用方法: http://github.com/xianglei/easyhadoop 点zip图标下载,然后运行EasyHadoopCentral中的setup_centos_(x).py进行安装 标签:hadoop ...

    Hadoop实战中文版

    8.6 删减DataNode 8.7 增加DataNode 8.8 管理NameNode 和SNN 8.9 恢复失效的NameNode 8.10 感知网络布局和机架的设计 8.11 多用户作业的调度 8.11.1 多个JobTracker 8.11.2 公平调度器 8.12 小结第三部分 ...

    Apress - Pro Hadoop

    Hadoop 项目主页:http://hadoop.apache.org  一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。 起源:Google的集群...

    大数据云计算技术 Hadoop应用浅析(共16页).pptx

    一:IZP Hadoop集群现状 集群规模 共大、小 2个集群:数据中心和实验室集群 数据中心: 1台NameNode, 1台SecondNameNode, 1台JobTracker,100来台DataNode 共100多台高配服务器; 数据中心又分为10多个机架,每个机架...

    Hadoop实战中文版.PDF

    1498.3 权限设置 1518.4 配额管理 1518.5 启用回收站 1528.6 删减DataNode 1528.7 增加DataNode 1538.8 管理NameNode和SNN 1538.9 恢复失效的NameNode 1558.10 感知网络布局和机架的设计 ...

    Hadoop实战(陆嘉恒)译

    在云上运行Hadoop9.1 Amazon Web Services 简介9.2 安装AWS9.2.1 获得AWS身份认证凭据9.2.2 获得命令行工具9.2.3 准备SSH密钥对9.3 在EC2 上安装Hadoop9.3.1 配置安全参数9.3.2 配置集群类型9.4 在EC2 上运行...

    Hadoop实战

    1518.5 启用回收站 1528.6 删减DataNode 1528.7 增加DataNode 1538.8 管理NameNode和SNN 1538.9 恢复失效的NameNode 1558.10 感知网络布局和机架的设计 1568.11 多用户作业的调度 1578.11.1 多个JobTracker 1588.11....

    Hadoop权威指南(第2版).

    下面是此集群的相关数据: · 4000 节点 · 2 x quad core Xeons@2.5ghz per 节点 · 4 x 1TB SATA Disk per 节点 · 8G RAM per 节点 · 千兆带宽 per 节点 · 每机架有40个节点 · 每个机架有4千兆以太网上行链路 ...

    Hadoop-Improved-Replic-Data-Placement:基于节点性能上的副本放置策略

    本人在实际项目过程中,hadoop集群是搭建在异构机器上的,即不同的机器性能有比较大的差异,因而根据hdfs的默认副本放置策略,就使得性能较差的节点会制约整个集群的性能,为了解决该问题,本人通过修改hadoop部分...

    Hadoop详细的理论基础

    4.机架感知 5.数据块的备份数 6.安全模式 7.负载均衡 8.心跳机制 三、HDFS体系结构 1.主从架构 2.核心组件功能 3.数据块损坏处理 一、Hadoop分布式文件系统HDFS 1.认识HDFS 1)HDFS基于流式数据,为处理超大型文件...

    大数据面试题.doc

    配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确...

    大数据面试题(1).doc

    配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确...

    大数据面试题.docx

    配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确...

    大数据面试题-.docx

    配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确...

    大数据面试题(1).docx

    配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确...

    4399大数据笔试题.pdf

    4399⼤数据笔试题 今天晚上参加了厦门 今天晚上参加了厦门4399公司的⼤数据笔试,⾃⼰没有拍下题⽬,⼀下是根据⾃⼰在草稿纸上简要记录回忆下 公司的⼤数据笔试,⾃⼰没有拍下...机架感知配置下分别存放在什么位置? 8

    Hadoop副本放置策略 (2013年)

    模拟实验一测试了机架数目对于算法的影响,结果显示改进后的副本放置策略中,机架数目对集群的均衡性影响很小,显示出较好的均衡性.模拟实验二测试了随着写入数据的增加,比较了使用改进前后的副本放置策略集群中...

    HDFS简介

    一、HDFS的简介 分布式文件系统 HDFS Hadoop Distributed FileSystem 基于流数据访问模式处理超大规模的文件 适合应用大规模的数据集上 ...机架感知 负载均衡 web界面 三、HDFS的目标 检测和快速恢复硬件故障

    大数据调研报告(多篇).docx

    应用部署过于复杂也催生了大数据处理系统管理员这一新兴职业,其主要负责日常Hadoop集群正常运行。例如直接或间接的管理硬件,当需要添加硬件时需保证集群仍能够稳定运行。同时还要负责系统监控和配置,保证Hadoop...

Global site tag (gtag.js) - Google Analytics