大数据|大数据技术思想入门(一)(分布式存储特点)
如果你不喜欢阅读文字的话,可以选择看 视频讲解:大数据技术思想入门(一):分布式存储的特点/Java提高/Hadoop
分布式存储 在前面讲解大数据技术发展的文章中,我们可以得出以下的结论:大数据技术需要解决的问题就是对大量数据的存储和处理,而分布式存储又是大数据技术的基础。所以接下来,我们来学习下分布式存储的原理。
我们带着问题来学习,现在有这么一个问题:给你 5 PB 的数据集,你会怎么存储呢?
1 PB = 1024 TB,1 TB = 1024 GB, 1 GB = 1024 M一般的话,一台个人电脑的磁盘容量是几百个 GB,最多的话一般也就 1 TB,一般的服务器的磁盘容量也就是 TB 级别的,有些服务器可以达到 PB 级别,但是成本非常的高。
所以说,我们用一台服务器是很难存储的下 5PB 的数据集的。既然一台服务器存储不下,那如果我们用多台服务器是不是就可以存储的下呢?答案是可以的,我们可以按照下面的步骤来存储 5PB 的数据集:
- 准备 512 台服务器,每台服务器的磁盘容量是 10 TB,这样所有服务器磁盘量加起来的总大小就是 5 PB
- 将 5 PB 的数据集切分成很多个数据块,假设每个数据块的大小是 256 MB,这样,5 PB 的数据集就会被切分成 20971520 个数据块
- 将 20971520 个数据块分布式的存储在 512 台服务器上,每台服务器可以存储 40960 个数据块
数据块大小 到这里的话,朋友们可能会有个疑问?为什么要切分成 256 MB 呢?数据块大小设置需要考虑下面的两个因素:
- 数据块的寻址时间
- 从磁盘中读取数据块的时间(也就是数据块磁盘传输时间)
因而,当数据块的大小设置的大一点的话,就可以减少数据块的寻址时间,这个时候,数据块的大小就取决于磁盘的传输速率,根据经验,可以这样来设置数据块的大小:
- 如果磁盘传输速率为 100 MB/s 的话,建议数据块大小设置为 128 MB
- 如果磁盘传输速率为 200 MB/s 的话,建议数据块大小设置为 256 MB
- 如果磁盘传输速率为 400 MB/s 的话,建议数据块大小设置为 512 MB
如果一台服务器挂了,那么这台服务器上的数据块就会全部丢失了,就不能保证整个数据集的完整性了,这个肯定是我们不愿意看到的。
要解决这个问题,我们可以将一个数据块再复制一份,然后存储到另外一台服务器上,如果一台服务器挂了,那么这台服务器上的数据块在其他的服务器中都有备份数据块,这样就可以保证数据集的完整性了。所以,我们可以通过备份每个数据块来提高数据块的高可用性,从而解决了数据块所在服务器挂了带来的数据不完整的问题。
但是,现在又带来了另一个问题,那就是每个数据块都需要备份存储两份,那整个数据集需要占用的磁盘空间就是原来数据集的两倍大小,也就是说,需要 10 PB 的磁盘空间存储 5 PB 的数据集了,所以只有 512 个磁盘大小为 10 TB 大小的服务器是不够的,那么就需要再增加 512 台服务器了。所以说,我们为了提高数据块的高可用性,却牺牲一倍的存储空间。
在实际的生产环境中,为了提高数据块的高可用性,我们一般会把数据块的备份数设置为 3 份:
- 两份存储在相同机柜中的两台不同服务器中
- 另一份存储在不同的机柜的一台服务器中
随着技术的发展,现在的技术可以做到使用小于 15 PB 的磁盘容量来存储 3 个备份的 5 PB 数据集,这个技术在 Hadoop 3 中已经实现,后续讲 Hadoop 的时候,我们会详细讲解。
我们现在可以总结出分布式存储的特点:
- 数据分块分布式的存储在多台服务器上
- 每个数据块可以冗余存储在多台服务器中,可以提高数据块的高可用性
推荐阅读
- 我要做大厨
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 知识
- 三十年后的广场舞大爷
- 奔向你的城市
- 村里的故事|村里的故事 --赵大头
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 汇讲-勇于突破