如果你不喜欢阅读文字的话,可以选择看 视频讲解: 大数据技术思想入门(二):分布式存储集群特点


在上一篇讲解分布式存储特点的文章中,我们得出分布式存储的特点有:

  1. 数据分块分布式的存储在多台服务器上

  2. 每个数据块可以冗余存储在多台服务器中,可以提高数据块的高可用性


可以看出,存储大数据集需要大量的服务器,而且每台服务器上又会存储成千上万的数据块,那么现在问题又来了,主要有两个问题:

  1. 这么多的服务器和数据块,该怎么管理呢?也就是说,一共有多少台服务器?每台服务器上总的磁盘容量多大呢?每台服务器剩余多少磁盘容量?

  2. 一个完整的数据集到底包含哪些数据块呢?这些数据块又分别存储在哪些服务器上呢?其实就是如何表达一个大的数据集是怎么存储的?


服务器管理


我们先来看第一个问题,第一个问题其实就是对存储数据的所有的服务器的管理,这些服务器的下面这些信息被管理起来:

  1. 总共有多少台服务器

  2. 每台服务器的 IP 地址

  3. 每台服务器总的磁盘容量、剩余的磁盘容量

  4. 每台服务器的健康情况怎么样


我们可以通过再引入一台服务器来存储上面的信息,这台服务器我们一般称为 master (主的意思)。那么其他存储数据块的服务器称为 slave (从的意思)。当所有的 slave 服务器启动的时候,将它自己的 IP 地址、磁盘容量情况、健康情况等信息发送给 master 服务器,这样 master 服务器就可以知道:

  1. 总共有多少台服务器

  2. 每台服务器的 IP 地址

  3. 每台服务器总的磁盘容量、剩余的磁盘容量

  4. 每台服务器的健康情况怎么样


这样,我们通过引入 master 服务器,解决了所有服务器管理的问题,这种 master-slave 解决问题的模式,我们称为主从模式。


分布式文件


接下来我们看第二个问题,在解决这个问题之前,我们先来看下在一台服务器中的小数据是怎么存储的,一般在一台服务器(不管是 Windows 还是 Linux)上,我们都是会创建一个文件,然后将数据存储在这个文件中,在这里我们需要弄明白的是:

  • 文件只是一个抽象逻辑的概念,数据最终还是存储在磁盘中

  • 文件包含了两部分数据:元数据和真正的数据


文件的元数据包括:文件名、文件的大小、文件创建的时间、文件修改的时间、文件的权限等信息。


真正的数据是指存储在文件对应的磁盘中的数据。如果想访问磁盘中的数据,我们可以通过文件名来找到数据存储的位置,然后开始读写数据。


以上我们讨论的是小数据集的存储,那么对于大数据集的存储,同样可以将一个完整的大数据集抽象出文件,这个文件同样包含两个部分的数据:元数据和真正的数据。


但是,大数据的存储有自己的特点,那就是数据分块分布式存储在多台服务器,以及数据块需要备份。所以,大数据集对应的文件就有自己的特点了:

  • 大数据集对应的文件也只是个抽象逻辑的概念,数据最终是分块分布式存储在多台服务器中

  • 大数据集对应的文件虽然也包含元数据和真正的数据两部分,但是对于大数据集的存储来说,文件元数据还需要包括:这个文件包含哪些数据块


一般的话,我们将大数据集对应的文件称为分布式文件。分布式文件对应的真正数据是分成若干个数据块,然后分布式的存储在 多台 slave 服务器中的


分布式文件的元数据包括:文件名、文件的大小、文件的创建时间和修改时间、文件的权限,还有这个文件对应哪些数据块等信息。每个数据块本身也有元数据:数据块的备份数、数据块存储的位置(即这台数据块存储在哪台服务器)


那么分布式文件的元数据该存储在哪里呢?因为这些数据是独立于存储在 slave 上的数据块的,所以这部分元数据信息仍然可以存储在 master 服务器中。


总结


为了解决下面的两个问题:

  1. 如何管理存储数据块的服务器?

  2. 如何表达一个大的数据集是怎么存储的?


我们引入了一台 master 服务器,在这台服务器上存储如下的数据:

  1. 所有存储数据块的服务器的元数据信息

  2. 所有存储的大数据集对应文件的元数据信息

  3. 所有数据块的元数据信息


可以看出,master 服务器上存储的都是元数据信息,所以我们也可以将 master 称为元数据服务器。


综上所述,为了解决对大数据集的存储,我们需要一台 master 服务器和若干台 slave 服务器组成一个主从架构的集群,那么,大数据集被抽象成分布式文件,一个分布式文件的真正数据是被分成若干个数据块分布式的存储在 slave 服务器中,分布式文件的元数据则存储在 master 服务器中。


系统学习大数据技术:大数据高级工程师就业课程