热门IT资讯网

白话大数据之HDFS

发表于:2024-11-24 作者:热门IT资讯网编辑
编辑最后更新 2024年11月24日,很多书上讲的都太深奥了,从官方的解释翻译过来,或者加一些注解,但是我们的广大需要入门的同学们需要白话,讲的越简单越好,因此,我整理一下,先把目录写在这里:首先说,为什么要用hadoop讲一讲什么是文件

很多书上讲的都太深奥了,从官方的解释翻译过来,或者加一些注解,但是我们的广大需要入门的同学们需要白话,讲的越简单越好,因此,我整理一下,先把目录写在这里:


  1. 首先说,为什么要用hadoop

  2. 讲一讲什么是文件系统

  3. 硬盘的发展过程

  4. 水道渠成,来看一下HDFS

  5. 实践过程


接下来,一个个的说


  1. 为什么要用hadoop

因为分布式存储+分布式计算,比单机能存的更多,计算时一堆CPU工作,也比一台机器上的多个CPU性能要好。


2.什么是文件系统

那HDFS是什么,HDFS是Hadoop Distributed File System 。可以理解为hadoop的一个模块,专门用于管理文件存储。

为了便于深刻的理解HDFS,我们先要了解什么是文件系统,因为HDFS从直译过来看就是hadoop的分布式 文件系统,所以我们先看看文件系统。


先设想一下,假设给你一块磁盘,里面总共有100G的可用空间,你会怎么用掉这些空间呢?

当然我们都知道要先格式化,但你知道为什么要格式化么。。。。格式化之后就会建立文件系统


其实很简单,好多人都应该做过磁盘碎片整理,应该大概了解磁盘簇的概念吧,那就是格式化时干的,其实簇就是文件系统的一个组成部分。假设把磁盘存储空间想像成一张白纸,数据是要往白纸上写的字。格式化就是在纸上画好线,将纸上分成一个一个的小格子。对应到咱们硬盘上,也就是划出了很多磁盘簇,通常一个簇是2k大小。但是在硬盘上的簇会比纸上的小格子要复杂一些,因为他还有些附加的内容,里面至少还会记录着这些内容:我的上一簇在哪里,我的下一簇在哪里


好了,当你存储一个文件的时候,先要找到一块磁盘上的空间吧,我们当然希望是在磁盘上有块连续的空间,这样存储和读取效率都会很高。但是,你的文件有可能会被继续编辑吧,他有可能在某一天,会从原来的20M变成30M,但是需要增加存储空间的时候,有可能会发现,啊,20M后面那些空间没有了,被另一个文件给占用了。那怎么办,是否需要把后面的所有文件都整体后移10M呢,这种低效的工作相信你也不会干。所以呢,只需要再找一片10M的空间,然后让你前20M的最后一个簇的指向(我的下一簇在哪里)指向新找到的10M的首个簇就行了。这就是文件系统提供的能力啊


那么再来,你一定会注意到,文件系统应该知道磁盘上的每一簇的大致情况,比如哪个簇上有数据,哪个簇是空白的,对吧

这是当然的,那文件系统怎么知道呢?还记得你曾经听过的一个词么,叫作FAT,后来有FAT16,FAT32,再后来是NTFS(这些都是windows文件系统里面用到的,我没有提linux的文件系统,但是道理应该一样的),咱们就从最简单的开始说吧,FAT(File Allocation Table)翻译过来就是文件分配表,通常放在磁盘的头部。从名字上你也能大概知道他是干什么的吧。其实他就是文件系统的主要登记文件存放在哪个簇上的地方。这个FAT很重要啊,千万不能搞丢了,一旦丢了,磁盘上的文件也就找不到了(会用磁盘修复工具或土豪请人修复的除外)。你可以把FAT理解为是磁盘上存储内容的一个总目录,磁盘上的文件被删除、新增、移动等等操作,都对应的会要修改FAT里面的内容。


那么,我们再想想,这样的一个FAT有多大,能存多少内容呢,他又能管理多少磁盘簇呢。对了,他是在限制的,一个FAT16仅能管理不超过2G的磁盘空间,后来FAT32做了改进,可以管理2T的空间。NTFS又做了改进,就没有空间限制了,因为NTFS会有很多的FAT32类似的东东,不再集中放在磁盘头部了,会在很多地方都有,数量也会随着磁盘容量变化。


什么什么。。。。


FAT16仅能2G的磁盘空间。。。。还记得那个年代你买个电脑回家的时候,磁盘要分区么,也有这个原因的。


好了,我们大概回顾了一下当年的文件系统FAT,你也会大概明白文件系统的作用,有了他,我们的操作系统存储文件的时候才安心。就像是咱们新买的房子里面,放东西的时候肯定不会乱堆在地上,我们都会买些家具,让家里多些格式,这样放的东西规矩了,才会更多些,找的时候也好找。


3.硬盘的发展过程

这个比较简单,我刚学电脑那会,硬盘存储空间是论M的,后来有个存储1G的磁盘的时候,觉得牛B的不得了。

再看看现在,磁盘动不动就2T

而且,我们的服务器上还有RAID技术,也就是磁盘阵列技术,可以把一堆磁盘,格式化成一个磁盘,这样一来,存储空间就变多了。这曾经是非常牛的技术,现在当然也挺火的。


但是,你以为磁盘的发展速度够快了么,其实也是挺快的。但是数据的发展速度更快。尤其在互联网时代,真的是爆炸


再牛的硬盘和阵列,也不够存的。比如我们去年的时候,一天的数据增量是150T左右,你可以想像么。

就算你今天用几块大硬盘存上,明天再找几块大硬盘,但是你查找数据的时候呢,你做分析的时候呢。


怎么办,硬盘技术要变革么。。。。


人们是很聪明的,自然而然的就会想到,我们可以模仿磁盘阵列技术,写一个软件 ,把一大堆机器上的磁盘都统一管理起来,这样做成一个超大的虚拟磁盘可以不。哈,必须可以,那么,随着这种想法,这就是DFS的思路,所以hadoop也有了一个具体想法,他也实施了出来,那就是他的HDFS了。


所以你可以看到磁盘的发展路径


小磁盘-大磁盘-磁盘阵列-虚拟的分布式磁盘群


4.水道渠成,来看一下HDFS

既然要做一个虚拟磁盘,是不是也得像真正的磁盘存储那样子搞呢,思路相似


我们上面讲的最初的文件系统FAT,其实分布式的磁盘也是需要的啊,但名字肯定不会这么叫了,所以hadoop起了个名字:namenode


另外,普通硬盘格式化之后有磁盘簇,HDFS格式化之后是什么呢,当然也是一个个的存储小格式,名字呢,hadoop称之为datanode。


namenode肯定是存在某一台或者少数几台机器上的了,相当于整个虚拟磁盘的总目录,他会记录哪些datanode是空白的,哪些datanode上面有文件。你看,是不是和FAT很相似。但是比较烧脑的是,他现在管理的是好多台机器上的好多磁盘存储。你可以想像,在你部署的HDFS集群上面,实际是运行了一个虚拟的大磁盘,是不是好帅


了解了上面这些之后,可以看看另一篇文章,我觉得写得很不错,直接收藏在这里供参考:

http://www.cnblogs.com/laov/p/3434917.html






0