HDFS中的理论

  1. 在HDFS文件系统里面,会默认把需要存储的数据进行切割存储,每切出来的一个块都是128M(hadoop2.x 和 hadoop3.x),64M(hadoop1.x);

  2. 为什么每一个块都是128M?找到一个文件10ms,最好的获取数据的时间是1000ms=1s,现在的磁盘的读取速度大约是100M/s。所以把块设置为128M.

        当我们在磁盘上找东西时,大文件和小文件的寻址时间都是一样的,大约是5ms~15ms之间

        当寻址时间大约占传输时间的1%是最好的。

       什么是寻址时间?

        就是系统在硬盘上找到一个文件所需要的时间

        总结:每一个块到底可以设置多大,取决于硬盘的读写速度,假如你们公司全部使用固态硬盘,就可以设置为256M一个块,也可以更大。

        3.在HDFS中,每一个块默认都有三个数据(防止丢失,这叫容灾【防灾】)。

        一般集群中的每一个数据都有三份

        4.机架感知

        就是当有一个DataNode节点发生故障损坏了或者是怎么了不能使用了,NameNode节点就会在损坏了的DataNode旁边离的近的地方再找一个没有存满数据的DataNode节点里面存放数据。如果一个没有存完损坏的节点的数据,还会再找其他的节点来进行存储。

        Hadoop为什么可以做到机架感知呢?算法

        5.为什么不把块设置的小一点?

        消耗内存:不管一个块大或者小,都有元数据(元数据就相当于是数据的目录,NameNode),这个元数据大概是150字节,当把块设置小了之后,块的数量就变多了,相应的元数据的数量也就变多了。

        6.块信息如何修改

        可以通过hdfs-site.xml 修改块大小

        

<property>
  <name>dfs.blocksize</name>
  <value>134217728</value>
  <description>默认块⼤⼩,以字节为单位。可以使⽤以下后缀(不区分⼤⼩写):k,m,g, t,p,e以重新指定⼤⼩(例如128k, 512m, 1g等)</description>
</property>
<property>
  <name>dfs.namenode.fs-limits.min-block-size</name>
  <value>1048576</value>
  <description>以字节为单位的最⼩块⼤⼩,由Namenode在创建时强制执⾏时间。这可以防 ⽌意外创建带有⼩块的⽂件降低性能。</description>
</property>
<property>
  <name>dfs.namenode.fs-limits.max-blocks-per-file</name>
  <value>1048576</value>
  <description>每个⽂件的最⼤块数,由写⼊时的Namenode执⾏。这可以防⽌创建降低性能 的超⼤⽂件 
   </description>
</property>

每一个主要的配置文件都有两份,第一份是 hdfs-defalut.xml 里面存放的是这个功能的默认设置;还有一个是hdfs-site.xml 这个里面存放的是 自定义设置。

hdfs-site.xml中的配置会替换hdfs-defalut.xml中的配置。

1G = 1024M

1T = 1024G

1P = 1024T

        7.hdfs的优缺点

        缺点:

                1、对于低延迟(立即响应)的场景是不合适的

                2、不适合存储小文件

                3、不适合修改(文件上传之后无法修改)

        优点:

                1、适合大数据量的存储

                2、一份变三份,具有很好的容错性

8.hdfs的体系结构

        1、NameNode

        有且仅有一个(HA【高可用】除外),负责整个集群的管理工作;

管理着DataNode节点,记录每个块的信息,还处理客户端的各种请求

        NameNode所记录的数据都是在内存里面存放的,如果机器宕机了,内存数据也会消失。为了防止数据丢失,NameNode有两个帮手:fsimage、edit

        2、SecondaryNameNode

        这不是第二个NameNode,算是NameNode的秘书,也是只有一个

他可以帮助NameNode完成fsimage和edit的合并工作

        3、DataNode

        数据节点,是hdfs真正存储数据的地方,可以有一个,也可以有多个,

会不定时的想NameNode发送心跳数据,每隔3秒发送一次。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值