大数据技术思想入门 (二):分布式存储集群特点
如果你不喜欢阅读文字的话,可以选择滑到最后看 视频讲解 哟~~~
在上一篇讲解分布式存储特点的文章中,我们得出分布式存储的特点有:
数据分块分布式的存储在多台服务器上
每个数据块可以冗余存储在多台服务器中,可以提高数据块的高可用性
可以看出,存储大数据集需要大量的服务器,而且每台服务器上又会存储成千上万的数据块,那么现在问题又来了,主要有两个问题:
这么多的服务器和数据块,该怎么管理呢?也就是说,一共有多少台服务器?每台服务器上总的磁盘容量多大呢?每台服务器剩余多少磁盘容量?
一个完整的数据集到底包含哪些数据块呢?这些数据块又分别存储在哪些服务器上呢?其实就是如何表达一个大的数据集是怎么存储的?
服务器管理
我们先来看第一个问题,第一个问题其实就是对存储数据的所有的服务器的管理,这些服务器的下面这些信息被管理起来:
总共有多少台服务器
每台服务器的 IP 地址
每台服务器总的磁盘容量、剩余的磁盘容量
每台服务器的健康情况怎么样
我们可以通过再引入一台服务器来存储上面的信息,这台服务器我们一般称为 master (主的意思)。那么其他存储数据块的服务器称为 slave (从的意思)。当所有的 slave 服务器启动的时候,将它自己的 IP 地址、磁盘容量情况、健康情况等信息发送给 master 服务器,这样 master 服务器就可以知道:
总共有多少台服务器
每台服务器的 IP 地址
每台服务器总的磁盘容量、剩余的磁盘容量
每台服务器的健康情况怎么样
这样,我们通过引入 master 服务器,解决了所有服务器管理的问题,这种 master-slave 解决问题的模式,我们称为主从模式。
分布式文件
接下来我们看第二个问题,在解决这个问题之前,我们先来看下在一台服务器中的小数据是怎么存储的,一般在一台服务器(不管是 Windows 还是 Linux)上,我们都是会创建一个文件,然后将数据存储在这个文件中,在这里我们需要弄明白的是:
文件只是一个抽象逻辑的概念,数据最终还是存储在磁盘中
文件包含了两部分数据:元数据和真正的数据
文件的元数据包括:文件名、文件的大小、文件创建的时间、文件修改的时间、文件的权限等信息。
真正的数据是指存储在文件对应的磁盘中的数据。如果想访问磁盘中的数据,我们可以通过文件名来找到数据存储的位置,然后开始读写数据。
以上我们讨论的是小数据集的存储,那么对于大数据集的存储,同样可以将一个完整的大数据集抽象出文件,这个文件同样包含两个部分的数据:元数据和真正的数据。
但是,大数据的存储有自己的特点,那就是数据分块分布式存储在多台服务器,以及数据块需要备份。所以,大数据集对应的文件就有自己的特点了:
大数据集对应的文件也只是个抽象逻辑的概念,数据最终是分块分布式存储在多台服务器中
大数据集对应的文件虽然也包含元数据和真正的数据两部分,但是对于大数据集的存储来说,文件元数据还需要包括:这个文件包含哪些数据块
一般的话,我们将大数据集对应的文件称为分布式文件。分布式文件对应的真正数据是分成若干个数据块,然后分布式的存储在 多台 slave 服务器中的
分布式文件的元数据包括:文件名、文件的大小、文件的创建时间和修改时间、文件的权限,还有这个文件对应哪些数据块等信息。每个数据块本身也有元数据:数据块的备份数、数据块存储的位置(即这台数据块存储在哪台服务器)
那么分布式文件的元数据该存储在哪里呢?因为这些数据是独立于存储在 slave 上的数据块的,所以这部分元数据信息仍然可以存储在 master 服务器中。
总结
为了解决下面的两个问题:
如何管理存储数据块的服务器?
如何表达一个大的数据集是怎么存储的?
我们引入了一台 master 服务器,在这台服务器上存储如下的数据:
所有存储数据块的服务器的元数据信息
所有存储的大数据集对应文件的元数据信息
所有数据块的元数据信息
可以看出,master 服务器上存储的都是元数据信息,所以我们也可以将 master 称为元数据服务器。
综上所述,为了解决对大数据集的存储,我们需要一台 master 服务器和若干台 slave 服务器组成一个主从架构的集群,那么,大数据集被抽象成分布式文件,一个分布式文件的真正数据是被分成若干个数据块分布式的存储在 slave 服务器中,分布式文件的元数据则存储在 master 服务器中。
版权声明: 本文为 InfoQ 作者【Jeffy】的原创文章。
原文链接:【http://xie.infoq.cn/article/b6c1f1dd5b5769102b1651e61】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论