« HBase的概念和性能选项 | 首页 | pig语言 »
Hadoop的集群拓扑结构
作者:马士华 发表于:2008-06-30 17:35 最后更新于:2008-07-02 14:45版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。
http://www.hadoop.org.cn/hadoop/hadoop-topology/
默认的,Hadoop所有的DN在同一个的机架上(/default-rack).假设你有两个数据中心,每一个数据中心都有几个路由器或交换机.每个交换机又都有30-40台机器.如图所示.为了准确描述在下面把路由器或交换机,称为机架.
每一个节点位置在集群中相同于linux的文件名,例子:R1显示为/D1/R1H8显示为/D2/R3/H8.DataNode(DN)在启动时获取配置中的"dfs.network.script"调用一个脚本文件输出"/D2/R3/H8"字符串,然后NN调用DatanodeProtocol中register的方法通知NameNode(NN)本机器在集群中的拓扑结构.NN通过分割符"/"判断机器之间的距离.从子节点到父节点距离为1.
Hadoop通过构建三层的网络拓扑结构来处理数据的复制分流问题和MapReduce中的效率问题.保证最小的数据写入的开销和数据的可靠性和可用性.当往HDFS写文件时第一个复制块是放在本地,第二个块被放置在另外的机架上,第三块被放置在本机架的另外一台机器上.如果超过三份复制的话,其它的将被随意选择一台机器放置.并且保证每个机架不会有多于二份的复制块.当重新复制一个块时,如果现有一个备份块,放置第二份备份到不同的机架上.当存在两个备份,如果两个备份都在一个机架上,复制第三份备份到另外的机架上,否则备份一份在本机架的别的机器上.
P.S:上面的"dfs.network.script"是在0.16.4以下调用,因为每一个DN节点分发一个这个脚本不好集中管理,在0.17.0中已经改为在NN中运行配置中的"topology.script.file.name"获取集群拓扑结构.脚本将会带过来一个参数。例子: ./mytopology node1.apache.org.你只要在STDOUT输出"/D2/R3/H8"即可.
相关文章
引用通告
如果您想引用这篇文章到您的Blog,
请复制下面的链接,并放置到您发表文章的相应界面中。
http://www.hadoop.org.cn/hadoop/hadoop-topology/trackback/
Comments
One Comment to “Hadoop的集群拓扑结构”
Leave a Reply
谢谢作者,文章写得很清楚,我终于知道了我改怎么配置RACK id了