您的位置:首页 > 大数据

大数据技术思想入门(一):分布式存储特点

tanke_foo 2020-08-22 17:35 351 查看 https://blog.51cto.com/7639240

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

分布式存储

在前面讲解大数据技术发展的文章中,我们可以得出以下的结论:大数据技术需要解决的问题就是对大量数据的存储和处理,而分布式存储又是大数据技术的基础。所以接下来,我们来学习下分布式存储的原理。

我们带着问题来学习,现在有这么一个问题:给你 5 PB 的数据集,你会怎么存储呢?

1 PB = 1024 TB,1 TB = 1024 GB, 1 GB = 1024 M

一般的话,一台个人电脑的磁盘容量是几百个 GB,最多的话一般也就 1 TB,一般的服务器的磁盘容量也就是 TB 级别的,有些服务器可以达到 PB 级别,但是成本非常的高。

所以说,我们用一台服务器是很难存储的下 5PB 的数据集的。既然一台服务器存储不下,那如果我们用多台服务器是不是就可以存储的下呢?答案是可以的,我们可以按照下面的步骤来存储 5PB 的数据集:

  1. 准备 512 台服务器,每台服务器的磁盘容量是 10 TB,这样所有服务器磁盘量加起来的总大小就是 5 PB

  2.  将 5 PB 的数据集切分成很多个数据块,假设每个数据块的大小是 256 MB,这样,5 PB 的数据集就会被切分成 20971520 个数据块

  3. 将 20971520 个数据块分布式的存储在 512 台服务器上,每台服务器可以存储 40960 个数据块

我们通过将大数据集切分成很多数据块,然后将所有的数据块分布式的存储在多台服务器上,这样就解决了大数据集的存储问题。

数据块大小

到这里的话,朋友们可能会有个疑问?为什么要切分成 256 MB 呢?数据块大小设置需要考虑下面的两个因素:

  1. 数据块的寻址时间

  2. 从磁盘中读取数据块的时间(也就是数据块磁盘传输时间)

如果数据块越大的话,数据块的寻址时间就越短,但是磁盘传输时间就越长;如果数据块越小的话,数据块的寻址时间就越长,但是磁盘传输时间就越短。所以,为了提高性能,数据块的大小不能太大也不能太小。

因而,当数据块的大小设置的大一点的话,就可以减少数据块的寻址时间,这个时候,数据块的大小就取决于磁盘的传输速率,根据经验,可以这样来设置数据块的大小:

  • 如果磁盘传输速率为 100 MB/s 的话,建议数据块大小设置为 128 MB

  • 如果磁盘传输速率为 200 MB/s 的话,建议数据块大小设置为 256 MB

  • 如果磁盘传输速率为 400 MB/s 的话,建议数据块大小设置为 512 MB

数据块的高可用性

到现在为止,我们解决了大数据集的存储问题,解决方案就是:数据分块,分布式的存储在多台服务器上。但是,现在问题又来了:如果一台服务器挂了,那该怎么办?

如果一台服务器挂了,那么这台服务器上的数据块就会全部丢失了,就不能保证整个数据集的完整性了,这个肯定是我们不愿意看到的。

要解决这个问题,我们可以将一个数据块再复制一份,然后存储到另外一台服务器上,如果一台服务器挂了,那么这台服务器上的数据块在其他的服务器中都有备份数据块,这样就可以保证数据集的完整性了。所以,我们可以通过备份每个数据块来提高数据块的高可用性,从而解决了数据块所在服务器挂了带来的数据不完整的问题。

但是,现在又带来了另一个问题,那就是每个数据块都需要备份存储两份,那整个数据集需要占用的磁盘空间就是原来数据集的两倍大小,也就是说,需要 10 PB 的磁盘空间存储 5 PB 的数据集了,所以只有 512 个磁盘大小为 10 TB 大小的服务器是不够的,那么就需要再增加 512 台服务器了。所以说,我们为了提高数据块的高可用性,却牺牲一倍的存储空间。

在实际的生产环境中,为了提高数据块的高可用性,我们一般会把数据块的备份数设置为 3 份:

  • 两份存储在相同机柜中的两台不同服务器中

  • 另一份存储在不同的机柜的一台服务器中

所以说,实际的环境中,你一般需要准备磁盘容量大小 3 倍于需要存储的数据集的服务器,也就是说,如果你想存储 5 PB 的数据集,那么需要准备 15 PB 的磁盘容量的服务器。

随着技术的发展,现在的技术可以做到使用小于 15 PB 的磁盘容量来存储 3 个备份的 5 PB 数据集,这个技术在 Hadoop 3 中已经实现,后续讲 Hadoop 的时候,我们会详细讲解。

我们现在可以总结出分布式存储的特点:

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

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


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

标签: