Hadoop拓扑感知-个人学习

Hadoop拓扑感知学习

此学习报告是前一段时间学习Hadoop整理出来的,包括拓扑感知的原理机制,后续会有相应的代码分析。

一.拓扑感知

HDFS运行在一个具有树状网络拓扑结构的计算机集群上。在一个集群中可能有多个数据中心,在每个计算中心部分分布着很多为计算需求而设置的机架。在网络拓扑结构中,每个叶子结点代表一个DataNode,而不同机架间的路由选择由InnerNode内部类表示。

1.1拓扑感知功能

通过拓扑结构,Hadoop清晰地知道每台机器所在的机架。通过它来确定节点间的距离,这个距离是Hadoop做决策判断时的参考因素。NameNode也是通过这个距离来决定应该把数据副本放到哪里的。当一个map任务到达时,它会被分配到一个TaskTracker上运行,JobTracker节点则会使用网络位置来确定map任务执行的机器节点。

二.基本原理

NameNode把向它注册的DataNode结点按照它们的IP地址来将它们存储到树状的拓扑结构中,之后NameNode会根据副本策略来为每一个数据块的副本选择一个合适的存储结点。该过程主要分为以下两部分:

首先,NameNode把这个DataNode所在主机IP地址转换成一个形如/*/*/*格式的网络拓扑路径。

然后,NameNode将地址转换过后的DataNode存储到树状的拓扑结构中。生成如下图的拓扑结构:

 

2.1工作流程

1.Hadoop系统中,NameNode是按照用户指定的规则来将一个IP地址转换为对应的路径。这是因为只有用户才知道哪些IP地址对应的主机被放在同一个机架,即只有集群管理员知道机器之间的网络距离。

2.集群管理员,通过hadoop-site.xml配置文件的设定(一般设置为脚本),来启用拓扑感知,否则所有DataNode默认在同一个机架上。

3.NameNode在接收到每一个datanodeheartbeat时,将该 datanodeip地址作为参数传给该脚本运行,并将得到的网络拓扑地址输出,保存到内存的一个map中。

4.NetworkTopology根据内存中的MAP映射集合,生成网络拓扑结构。

2.2本机制的优点、缺点,最好有脆弱性的说明

1.优点

在海量数据处理中,其中主要限制因素是节点之间数据的传输速率---带宽HADOOP的想法是将两个节点间的带宽作为举例的衡量标准。衡量节点之间的带宽,实际上很难实现。为此Hadoop采用一个简单的方法,把网络看作一棵树,两个节点间的距离是它们到最近的共同祖先的距离总和,该树中的层次是没有预先设定的,但是相对于数据中心框架和正运行的节点,通常可设定等级,具体的想法是对于以下每个场景,可用带宽依次递减,即用树的节点之间的距离来反映节点的带宽。

2.缺点

1hadoop对机架的感知并非是自适应的,亦即,hadoop集群分辨某台slave机器是属于哪个rack并非是只能的感知的,而是需要hadoop的管理者人为的告知hadoop哪台机器属于哪个rack,这样在hadoopnamenode启动初始化时,会将这些机器与rack的对应信息保存在内存中,用来作为对接下来所有的HDFS的写块操作分配datanode列表时(比如3block对应三台datanode)的选择datanode策略

HDFS拓扑感知目前亟待解决的是其自适应性,即根据实际网络情况智能的对节点之间的距离进行修改,来实现数据更高效的传输。

2)当前的拓扑感知机制中,由于是通过脚本来实现拓扑结构的生成,且该结构随着NameNode的启动放在Map中,所以当新数据节点添加的时候,如果脚本里面没有该节点的相对信息,是不能动态的添加该节点到拓扑结构中,只能放置在默认机架上。即需要重启namoNode才能完成拓扑结构的重新生成。



你可能感兴趣的:(分布式计算,存储,Hadoop,拓扑感知,机制分析)