ITPub博客

首页 > 大数据 > Hadoop > HDFS的机架感知策略

HDFS的机架感知策略

原创 Hadoop 作者:山有木xi 时间:2020-06-15 15:35:09 0 删除 编辑

通常来说大型的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接到数据完毕

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69917874/viewspace-2698442/,如需转载,请注明出处,否则将追究法律责任。

上一篇: AudioManager
下一篇: 没有了~
全部评论
Oracle OCA(Java),IBM高级工程师认证,中国软件行业人才(高级c语言),高级Android工程师,对数据库并发与性能调优也有一定了解

注册时间:2019-04-25

  • 博文量
    83
  • 访问量
    236320