searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

关于云原生存算分离数据湖,你想知道的都在这里(上)

2023-05-26 06:17:57
30
0

写在前面

数据是企业的核心资产,随着数据规模的快速增长,企业对存储功能和性能的要求也在不断增加。对云厂商和企业用户来说,如何在提升业务性能的同时降低成本是一巨大挑战。随之而来,为了解决这一挑战,云原生,存算分离,数据湖这些技术架构越来越多的被各行各业所关注和规划建设。

什么是数据湖

数据湖是目前比较热的一个概念,许多企业都在构建或者计划构建自己的数据湖。但是在计划构建数据湖之前,搞清楚什么是数据湖,明确一个数据湖项目的基本组成,进而设计数据湖的基本架构,对于数据湖的构建至关重要。关于什么是数据湖,我认为AWS的定义更为清晰:

“数据湖是一个集中式存储库,允许用户以任意规模存储所有结构化和非结构化数据,支持任意格式的数据存储,并运行不同类型的分析,如数据处理、实时分析、机器学习、数据可视化等。”

为什么要建设数据湖

在企业的不断发展过程中,数据也是在不断地膨胀,往往会面临以下困境:

  • 数据越来越多,不堪成本重负
  • 数据格式越来越丰富,技术栈复杂
  • 数据需要更高效的处理和分析

这时,数据湖应运而生,其代表了数据分析范式的转变,从根本上解决了懂业务的人没有数据的问题。

传统数据湖建设带来的问题

一些企业在建设数据湖时,往往会有一些认知偏差,比如说认为去扩充现在的大数据平台,或者数据库,来满足更多的数据存储要求,但忽略了很多大数据场景下的性能、成本、运维等问题。

1、存储方面:

  • HDFS性能抖动、时延大,业务经常失败;
  • HDFS扩容周期长,存储压力大;
  • HDFS三副本,存储成本高;
  • HDFS停机维护,导致业务无法按时完成

2、计算方面:

  • 数据增长带来硬件扩容,一次性投资增加;
  • 资源利用率不高,缺乏弹性;

3、业务、运维方面:

  • 运维工作量大,响应不及时
  • 业务数据处理时间不可控
  • 成本持续增加,财务和业务部门抱怨

为何要引入存算分离

在Hadoop诞生的时代,服务器带宽只有100Mb/s~1Gb/s,HDD磁盘吞吐量也只有50MB/s,这样的带宽和磁盘吞吐量远远不够传输数据,网络瓶颈尤为明显,在当时使用存算一体毫无疑问是最好的技术选择。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据库也开始拥抱云原生时代,在当前越来越强调云原生的环境下,存储计算分离已经是大势所趋,且由于云计算带动了网络存储方案的低成本普及,存算分离开始作为一种架构思想,在企业项目研发过程中逐渐为大家所熟知和使用。

无论是所有的技术架构升级与业务改造,只谈技术手段往往是不够的,在实际业务实践中,往往需求方和决策方不是同一方。存算分离需求清晰明确后,我们需要思考如何存算分离改造后可量化的价值在哪里:

1、从可靠性方面,存算分离可以降低故障恢复和数据迁移的时间和成本,提高数据的安全性和可用性。

传统的存算一体架构,在故障恢复和搬迁时都要全量恢复数据,不仅耗时耗力,也增加了数据丢失的风险。而存算分离架构,可以将计算层做成无状态的,利用容器和云原生技术实现快速恢复和迁移,而数据层则由专业的存储设备来保障,实现数据的持久化和高可用。

例如,某分布式数据库存算解决方案,在基于存算分离架构上,利用容器的技术把整个数据库的一层做成无状态,真正的数据通过持久化卷的方式存到存储,磁盘故障有存储保障,服务器故障的时候,通过容器K8S的自动编排的技术,快速恢复数据。几个小时的数据重构时间,缩短至分钟级,大大提升系统效率和可靠性。

2、从资源利用率方面,存算分离可以实现计算和存储的弹性扩展,按需分配资源,避免资源的浪费和冗余。

传统的存算一体架构,在计算和存储之间存在固定配比,无法灵活调整资源需求。无论是计算先达到瓶颈,还是存储先达到瓶颈,都需要增加机器来扩展资源,导致资源利用率低下。而存算分离架构,可以根据业务场景和需求动态调整计算和存储资源的规模和比例,实现资源优化。

例如,国内某运营商采用传统架构,把数据放到了服务器本地盘里面部署MySQL,然后通过数据库之间的复制来提供高可用,整个 CPU的利用率不到10%,为了达到相同的集群规模,需要部署更多服务器,造成资源的浪费。采取了存算分离架构之后,计算存储包括网络资源的扩展,互相不依赖。如果可靠性的问题能解决的话,那么它的计算的利用率能够从10%提升到30%左右,成本节省一半左右,尤其是在机房和耗电能够降低大概60%-70%。

3、从运维能力方面,存算分离可以简化数据库的部署和管理,利用容器和云原生技术实现无状态计算层,支持快照备份、容灾等功能。

传统的存算一体架构,在部署和管理数据库时需要考虑很多因素,例如数据备份、迁移、恢复、扩容等操作都需要手工去做,并且涉及到大量数据复制和迁移。而存算分离架构,则可以借助容器技术实现数据库集群管理、自动编排、负载均衡等功能,并且可以利用专业的存储设备支持快照备份、容灾等功能。

例如,在客户场景中发现,在使用传统架构时用开源工具做整个数据库备份时恢复1TB数据需要几个小时效率很低。而借助存储快照技术,可以大大提升效率。

4、从成本方面,存算分离可以降低硬件投入和机房耗电等成本,并且提高性价比。

传统的存算一体架构,在扩展资源时需要同时增加计算和存储硬件数量,并且需要考虑机房空间、电力、散热等因素。而存算分离架构,则可以解耦存储和计算,两者可以根据不同的性能、可用性、安全性等要求选择合适的存储服务和计算引擎,另外还可以考虑使用云存储,按需付费、按量计费等模式,避免固定成本或过度投资。

简单来讲,存算分离考虑的根本逻辑就是一本投入产出价值的经济帐,通过与存算一体的对比,我们可以用一张图来理解,存算分离能够带来什么:

建设存算分离数据湖,我们面临的技术挑战

看到这里,也许你会发问,既然存算分离数据湖有这么多的好处,那为什么还不抓紧建设,不要着急,所谓工欲善其事必先利其器,在建设存算分离数据湖的过程中,我们也会面临诸多的技术挑战。

建设存算分离数据湖的过程中,在存储层、计算层和数据湖服务层面临的主要挑战如下:

1、存储层:存储层是数据湖的基础,需要提供高效、可靠、安全、低成本的数据存储服务,存储层面临的技术挑战主要有:

  • 兼容结构化、半结构化、非结构化数据
  • 兼容块存储、文件存储、对象存储
  • 数据分区、数据快照、数据版本、数据日志
  • 数据压缩、备份恢复、数据生命周期管理
  • 数据缓存的算法与规则来保障缓存本地读
  • 如何减少节点扩容时的缓存重分布

2、计算层:计算层是数据湖的核心,需要提供多样化、高效、灵活、易用的数据计算服务。计算层面临技术挑战主要有:

  • 多样化的数据计算需求
  • 高效的数据计算性能
  • 灵活的数据计算扩展
  • 易用的数据计算服务

3、数据湖服务层:数据湖服务层是数据湖的外延,需要提供完善、规范、开放、创新的数据湖服务。数据湖服务层面临的技术挑战主要有:

  • 规范的数据湖治理,如元数据、目录管理、优化器等
  • 开放的数据湖共享,要支持标准的SQL,统一的访问接口等
  • 完善的数据湖生态,如数据流动、ETL工具、调度工具等

 

下一篇,我将会就存算分离当前存在的技术挑战展开,业界的技术路线是如何去解决的,以及基于天翼云大数据存储,如何能够解决挑战并为客户带来实实在在的收益,进行分享。

 

0条评论
0 / 1000