码迷,mamicode.com
首页 > 其他好文 > 详细

HDFS

时间:2015-05-23 19:54:41      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

网络拓扑:参考:http://blog.csdn.net/lastsweetop/article/details/9065667

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

 在Hadoop中把网络看做一个树,两个节点之间的距离是它们到最近的共同祖先的距离总和。该树中的层次是没有预先设定的,但是对于数据中心、机架和正在运行的节点通常可以设定等级的。

distance(/D1/R1/H1,/D1/R1/H1)=0  同一节点中的进程(相同的datanode)
distance(/D1/R1/H1,/D1/R1/H2)=2  同一机架上的不同节点(同一rack下的不同datanode)
distance(/D1/R1/H1,/D1/R1/H4)=4  同一数据中心中不同机架上的节点(同一IDC下的不同datanode)
distance(/D1/R1/H1,/D2/R3/H7)=6  不同数据中心中的节点(不同IDC下的datanode)

Hadoop无法自行定义网络拓扑结构,它需要我们能够理解并辅助定义。(如果网络是平铺的(仅有单一层次),可以不需要进行配置)。

Hadoop Rack Awareness

The HDFS and the Map/Reduce components are rack-aware.

The NameNode and the JobTracker obtains the       rack id of the slaves in the cluster by invoking an API        resolve in an administrator configured      module. The API resolves the slave‘s DNS name (also IP address) to a       rack id. What module to use can be configured using the configuration      item topology.node.switch.mapping.impl. The default       implementation of the same runs a script/command configured using        topology.script.file.name. If topology.script.file.name is      not set, the rack id /default-rack is returned for any       passed IP address. The additional configuration in the Map/Reduce      part is mapred.cache.task.levels which determines the number      of levels (in the network topology) of caches. So, for example, if it is      the default value of 2, two levels of caches will be constructed -       one for hosts (host -> task mapping) and another for racks       (rack -> task mapping).

副本存放:

namenode节点选择一个datanode节点去存储block副本得过程就叫做副本存放,这个过程的策略其实就是在可靠性和读写带宽间得权衡。

那么我们来看两个极端现象:

1.把所有的副本存放在同一个节点上,写带宽是保证了,但是这个可靠性是完全假的,一旦这个节点挂掉,数据就全没了,而且跨机架的读带宽也很低。
2.所有副本打散在不同的节点上,可靠性提高了,但是带宽有成了问题。
我们来讲下hadoop默认的方案:
1.把第一副本放在和客户端同一个节点上,如果客户端不在集群中,那么就会随即选一个节点存放。
2.第二个副本会在和第一个副本不同的机架上随机选一个
3.第三个副本会在第二个副本相同的机架上随机选一个不同的节点
4.剩余的副本就完全随机节点了。
如果重复因子是3的话,就会形成下图这样的网络拓扑:
技术分享
可以看出这个方案比较合理:
1.可靠性:block存储在两个机架上
2.写带宽:写操作仅仅穿过一个网络交换机
3.读操作:选择其中得一个机架去读
4.block分布在整个集群上。

HDFS

标签:

原文地址:http://www.cnblogs.com/java-cjt/p/4524701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!