目录
前言
在大数据领域经常听到的一个词就是存算分离,下面向大家简单介绍下存算分离的由来和发展。
一、十几年之前
1.Hadoop问世
2006年随着Hadoop的发布,各种计算组件也开始百花争鸣,但是存储系统HDFS却是一枝独秀,成为了所有计算组件的默认选择。
2.IO瓶颈
我们回想一下06年的网络,服务器的网卡带宽只有100Mb~1Gb,磁盘吞吐50MB/s… …
二、十几年发展过程
1.Hadoop的优化
在数据量大,网络有瓶颈的情况下,如何处理海量数据呢?
Hadoop计算存储耦合,为了减小网络传输,任务调度时,会把计算任务尽量发送到数据所在的服务器上,一些如机架感知等技术也应运而生。
2.发展过程中的问题
计算和存储的不平衡发展。随着人们对于数据潜在价值认识的提升,你会听到领导经常说的一句话是“先把数据都存下来,后边用到的时候会很方便”。然而,数据是都存下来了,可是应用场景呢,需求呢?
2.1.算力的浪费
随着数据存储需求的日益增加,我们需要不断的增加服务器,因为此时计算和存储是耦合在一起的,所以我们在增加服务器的时候就不能只增加存储,还要考虑算力问题。存储需求满足了,但是算力却浪费了。
2.2.数据倾斜
虽然Hadoop已经对计算存储进行了优化,但是还是不能排除会有局部热点数据,需要非常多的算力,这种情况数据会倾斜,计算任务不一定能有效的调度到数据所在存储节点上。
2.3.运维复杂
缩容较复杂,因为数据分布在各个节点上的,所以要对每个节点上的数据做迁移,这种情况无法做到弹性伸缩。
三、十几年发展后
1.网络、磁盘性能提升
万兆网卡的普及,以及磁盘读写速度大幅提升。
高效的压缩算法和列存格式也减少了IO开销。
IO已逐渐不是瓶颈。
2.存算分离逐步发展
2.1.独立部署HDFS及存在的问题
HDFS独立部署,计算节点通过网络传输读取HDFS上的数据。
但是HDFS独立部署也存在如下问题:
- HDFS云上部署成本过高,运维成本高。
- HDFS的NameNode 只能 Scale-up(垂直扩展:只能通过提高机器的配置实现扩展,无法通过增加机器数量实现扩展)。文件数量超过5亿只能做 Federation(联邦),增加了运维管理的成本,也影响使用效率。
- NameNode只有双机互备方案,高可用性不足。
- Java GC会影响系统可用性。
2.2.对象存储替代HDFS及存在的问题
对象存储是存储系统服务化,能实现弹性伸缩。
但是由于Hadoop体系下对于HDFS的依赖,大部分组件对对象存储不兼容。同时性能和稳定性也有待提高。
2.3.新一代的存算分离
- 湖仓一体的提出,数据湖和数仓使用同一种格式,同一份数据支持多种组件访问,减少数据重复存储和搬迁。
- 云计算、云存储的大力发展,一湖多云也成为了趋势。
总结
存算分离具有高扩展、低存储成本和易用性高、可靠性高的特点,本文只是简单向大家介绍一下存算分离的发展,如有描述不当之处,请指正。