大数据技术思想入门 (一):分布式存储特点
如果你不喜欢阅读文字的话,可以选择滑到最后看 视频讲解 哟~~~
分布式存储
在前面讲解大数据技术发展的文章中,我们可以得出以下的结论:大数据技术需要解决的问题就是对大量数据的存储和处理,而分布式存储又是大数据技术的基础。所以接下来,我们来学习下分布式存储的原理。
我们带着问题来学习,现在有这么一个问题:给你 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 份:
两份存储在相同机柜中的两台不同服务器中
另一份存储在不同的机柜的一台服务器中
所以说,实际的环境中,你一般需要准备磁盘容量大小 3 倍于需要存储的数据集的服务器,也就是说,如果你想存储 5 PB 的数据集,那么需要准备 15 PB 的磁盘容量的服务器。
随着技术的发展,现在的技术可以做到使用小于 15 PB 的磁盘容量来存储 3 个备份的 5 PB 数据集,这个技术在 Hadoop 3 中已经实现,后续讲 Hadoop 的时候,我们会详细讲解。
我们现在可以总结出分布式存储的特点:
数据分块分布式的存储在多台服务器上
每个数据块可以冗余存储在多台服务器中,可以提高数据块的高可用性
系统学习大数据技术:http://douma.ke.qq.com/
版权声明: 本文为 InfoQ 作者【抖码算法】的原创文章。
原文链接:【http://xie.infoq.cn/article/897cdeb6256e0b80b2564ec6e】。文章转载请联系作者。
评论