这篇文章将为大家详细讲解有关HDFS中机架感知策略的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
通常来说大型的Hadoop集群是以机架的形式来组织的他们分布在不同的机架上面,同一个机架节点往往通过同一个网络交换机连接,在网络宽带方面比跨机架通信有较大优势。但是如果某一个文件数据库同时存储在同一个机架上面时,可能由于各种故障原因,导致文件不可用。HDFS采用机架感知策略来改进数据的可靠性、可用性和网络宽度的利用率。
通过机架感知的过程,NameNode可以确定每一个 DataNode所属的机架id。一个简单但没有优化的策略就是将副本存放在不同的机架上,这样可以防止当整个机架失效时数据的丢失,并且允许读数据的时候充分利用多个机架的带宽。这种策略设置可以将副本均匀分布在集群中,有利于当组件失效的情况下的均匀负载。
也就是说,HDFS系统的机架感知策略的优势是防止由于某个机架失效导致数据丢失,并且允许读取数据时充分利用多个机架的带宽。HDFS会尽量让读取任务去读取距离客户端最近的副本数据来减少整体带宽消耗,从而实现降低整体的带宽延时。
对于副本距离的计算公式,HDFS采用如下约定:
Distance(Rack 1/D1 Rack1/D1)=0 //同一台服务器的距离为0
Distance(Rack 1/D1 Rack1/D3)=2 //通机架不同服务器的距离为2
Distance(Rack 1/D1 Rack2/D1)=4 //不同机架服务器距离为4
通常而言,一个Rack共享一个电源,一条网线,一个交换机,HDFS备份通常在同一个Rack上存储一份,在另外一个Rack上存储两份(另外:HDFS以block为单位,备份也要以block为单位)
通过机架感知,处于工作状态的HDFS总是设法确保数据块的三个副本(或者更多)中至少有两个在同一机架,至少有一个处在不同机架
而HDFS为每一个block存三份的话,那么client如何来写入呢?
当client 写文件创建新block之后,Name node会为这个block 创建一整个HDFS cluster 里独有的ID,并且决定哪些Data node来存储这个block的所有备份。被选择到的Data node会组成一个队列,client 向队列的第一个Data node 写入,第一个Data node除了把数据存在自己的硬盘上以外,还要把数据传给队列里的下一个Data node,直到最后一个Data node接到数据完毕
关于“HDFS中机架感知策略的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。