当前位置:   article > 正文

hdfs设计思想_hdfs的基本设计思想

hdfs的基本设计思想

hadoop分为四大模块,分别为:common、hdfs、yarn、mapreduce

什么是HDFS?

hdfs是一个分布式文件系统。

hdfs设计思想?

设计思想采用的是“分而治之”,分就是当一个文件过大时,一台计算机存储不了,就采用切分存储。

1、设计思想1:分块存储

每一个块叫做block,如果有1个主节点和4个从节点的集群。

问题1、设计分块为什么需要考虑到负载均衡?

当有一个8T的文件需要存储时,如果我们将8T的文件分成2个block分别存储,那么其余的2个节点将无事情可干。

因此,设计分块的时候需要考虑到:负载均衡,即将需要存储的文件,均匀的分配到集群中不同的节点上。

问题2、块默认存储为128M,那么不足128M的块该如何存储?

hadoop2.x版本中默认切分的块大小为128M,hadoop1.x版本中默认的是64M。

假如我们有一个300M的文件需要存储,那么会切分为0-127,128-255,256-300这三个块,第一个块0-127可能存储到节点1或节点2或节点3或节点4上,这个是有nameNode分配任务时分配。

假如0-127分配到节点1上,128-255即可分配到节点1上,也可以分配到其它节点上。

256-300这个块只有44M,不足128M,也会单独作为一个块存储。

假如,后面又有一个50M的文件需要存储,那么这50M的文件也不会和256-300拼装成128M存储。他们会单独的作为2个块存储

2、设计思想2:备份机制

问题1:为什么需要使用备份机制?

如上例中,300M的文件存储,假设0-127存储在节点1上,128-255存储到节点2上,256-300存储在节点3上。

此时如果,节点2宕机了,那么会造成数据的不完整性。

为了解决问题,hdfs默认块的存储采用了备份机制,默认的备份个数为3个,一般在hdfs-site.xml中配置

  1. <property>
  2. <name>dfs.replication</name>
  3. <value>3</value>
  4. </property>

注意,这3个备份文件,没有主次之分,它们的地位是相同的。

问题2、备份都是存储在同一个节点上吗?

那么这3个备份都是存储在同一个节点上吗?当然不是,如果都存储在相同的节点上,那么这个节点宕机了,备份又有何意义。

因此,这3个备份分别存储在不同的节点上。

问题3、备份设置大于节点数,该如何?

如果只有2个节点,而备份数设置为3,那么实际也会存储2个备份,另外一个备份进行记账,直到当集群的节点数大于等于3的时候,会进行复制这个副本,最终达到3个备份。

问题4、节点数大于备份数,该如何?

如果集群中有4个节点,而副本数只有3个,有一个副本的机器宕机了,这个时候会发现副本个数小于设定的个数,就会进行复制,达到3个副本。

问题5、宕机的节点又恢复了,造成备份数超过设置的备份数,该如何?

这个时候,集群中刚刚宕机的节点又恢复了,这个时候集群中的副本个数为4,集群会等待一段时间,如果发现还是4个就会随意删除一个副本

 

全新的集群分配方式是采用轮询方式分配的,之前是采用NameNode分配任务的方式分配

总结:hdfs被设计成用来使用低廉的服务器进行海量数据的存储,那么它是怎么做到的?

1、大文件被切分为小文件,使用分而治之的思想让很多服务器对同一个文件进行联合管理

2、每个小文件做冗余备份,并且分散存到不同的服务器,做到高可靠不丢失。

问题6、备份数越多越好吗?

副本越多,数据安全性越高,但是副本数越多会占用过多的存储资源,会造成集群的维护变得困难.

比如100个节点,副本数有50个,hdfs同时维护50个副本,而这50个副本中随时可能发生宕机。所以一般副本数设置为3个即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/205440
推荐阅读
相关标签
  

闽ICP备14008679号