数据架构设计 传统的it三大基础架构

Mark wiens

发布时间:2023-01-15

  随着行业的快速发展和业务的高速迭代,数据量也呈爆炸式增长,大数据云原生化逐渐成为企业数字化转型的重要演进方向……

数据架构设计 传统的it三大基础架构

  随着行业的快速发展和业务的高速迭代,数据量也呈爆炸式增长,大数据云原生化逐渐成为企业数字化转型的重要演进方向。数字化驱动企业提升运营效率,洞察商业机会;云原生化提升 IT 系统效率,促进业务敏捷,大数据云原生化是为企业创新提供无限可能。

src=http___www.aitaokeji.cn_uploads_allimg_180823_1-1PR31A94C91.jpg&refer=http___www.aitaokeji.jpg

  传统的大数据架构在资源利用、高效运维、可观测性等方面存在诸多不足,已经越来越无法适应当下的发展需求。具体来讲,传统大数据架构主要存在以下几方面的问题:

  云原生大数据是大数据平台新一代架构和运行形态,是一种以平台云原生化部署、计算云原生调度、存储统一负载为特点,可以支持多种计算负载,计算调度更弹性,存储效能更高的大数据处理和分析平台。云原生大数据带来了大数据在使用和运维方面的巨大变化,从以下三个角度来看:

  业务层面:传统模式下,业务独立占用资源,在业务高峰时段占用全部资源,但在低谷时段资源占用率可能只有20%-30%;云原生模式下的业务是混部的,比如在线和离线业务,它可以按分时复用的方式来调用资源。

  资源调度层面:在传统模式下,如果一个Flink 集群有100台机器,那这100台机器就由它独占;云原生模式虚拟化出了资源池的概念。资源池可以承载不同类型的大数据集群,可以装 Flink 集群,也可以装 Spark 集群,而且这些集群都是按需拉起的,可以迅速回收,在不需要时可以释放掉。

  统一部署和运维安装:原来的运维方式是每个集群要运维每个自己集群的状态,出现集群之间的时延或者故障时,问题定位比较复杂。而云原生有统一的服务管理界面,以 Helm Chart 或 Operator 的形式,统一对服务进行发布、运维。这样,出现问题时,我们可以通过统一的界面进行查看和管理,监控告警日志也是和 K8s Pod(进程) 的采集、Node 采集相统一的,在监控告警上,我们既可以看到 K8s 的节点和容器,也可以看到服务的运行状态。

  云原生大数据平台的功能架构可以总结为“三大平台和一大支撑体系”。三大平台分别是平台服务层、核心引擎层和资源调度层:

  核心引擎层包括 Flink、Spark、云原生消息引擎、实时服务分析引擎、云原生日志搜索和统一存储 HDFS 等核心组件,支持存算分离和自动调优;

  一大支撑体系是运维管理平台,是集开源组件、服务生命周期、集群、容灾、可观测性于一体的一站式管理平台。

  为了尊重现有用户使用习惯,将用户习惯使用的开源组件以插件化的形式进行了集成。现有主流的大数据工作场景主要包括信息门户、数据工程和数据科学三种,每个场景下都有许多用户常用的开源组件:

  数据工程:一般是大数据开发工程师、数仓工程师,做数据开发、数据 ETL、数据处理、清洗所用到的组件,如使用 Zeppelin Notebook 做数据开发,对接数据治理平台、调度平台;

  上述三个场景是大数据工作中非常常见的场景,云原生大数据平台通过插件化的方式集成这些开源组件,即开即用,具备极大的便捷性和灵活性。

  在计算方面,集成主流大数据计算引擎包括 Flink、Spark,同时集成了云原生消息中间件、实时服务分析引擎和云原生日志搜索服务;

  在存储方面,采取统一存储,兼容HDFS 语义,支持 TOS 透明加速、缓存加速和数据湖管理。

  大数据向云原生发展需要推动计算引擎与云原生深度融合,向着自动调优方向演进。从我们的经验来看,这个过程可分为四个阶段:

  •统一资源调度和复用:资源池也需要统一的资源调度和复用,比如当进行了统一存储后,在不同业务进行复用时,我们可以进行统一的调度。

  •统一数据 Copy,减少数据卸载:数据任务经常出错,同步也会耗费资源,当任务同步出错时,定位很难,也非常耗费人力,所以要尽量减少数据卸载;

  •统一数据容灾,保证高可靠要求:支持多种存算分离的部署形态,既可以完全分为计算、存储两个集群,也可以将计算和存储混部在一个 K8s 集群上,但此时计算存储是单独管理的。

  •降低扩缩容和数据 Rebalance 时间:云原生数据湖、数据仓、消息队列、搜索引擎如果支持存算分离的部署模式,将存储放在统一的大数据文件存储或对象存储上,这样可以降低扩缩容和数据 Rebalance 时间;

  •增强对请求响应能力:将存储放在统一的大数据文件存储或对象存储上,也可以增强对请求的响应能力。

  •云原生 Operator:这种方案是针对现有大数据组件的云原生化部署,把 Flink、 Spark 等计算引擎以Cloud Native (云原生)的方式部署到 K8s 上。这种方案的好处有两个,第一是可以通过 Operator 对计算引擎进行全生命周期的管理,帮助用户进行更优的批量作业重启策略;第二是云原生和 K8s 融合得更好,它可以更精细地采集 Pod 上的日志,跟踪整个大数据的引擎和作业的运行状态。

  •更强的调度策略:任务优先级调度、GANG 调度和 DRF 调度(GANG 调度策略保证一个作业的所有容器一起被调度,DRF 算法保证公平地将资源分配给资源池内的各个作业)

  例如,当前在集群 A 有一个资源池,在集群 B 有一个资源池,为了容灾的需求,我们可能把这两个资源池作为一个主备的资源池,抽象出来一个虚拟队列的概念。这样在任务提交时,用户就可以不关注资源池,只提交到虚拟队列上即可,至于分配到 A 集群/机房还是分配到 B 集群/机房,会自动根据下面集群/机房的运行状态来判断。

  大数据平台应当具备可观测性、开源组件管理、服务生命周期管理、集群管理、容灾管理的功能和服务,图中标蓝部分是云原生计算进行了特别增强的部分,下面来重点阐述一下:

  •全链路监测:可以全链路地监测每个服务的运行状态,包括调用链、调用关系等,从而可以在故障时定位到具体出问题的调用环节;

  •开源组件管理:通过 Helm Chart 来对组件进行部署,通过 Operator 对运行组件进行整个生命周期的管理,包括开始、终止、清理等一系列操作。因此,开源组件管理是从 K8s 平台上对引擎或特定的开源组件,甚至是任务进行管理的特殊模式,这个模式的优势是更快捷和更细粒度。

  •集群管理:除集群扩缩容、集群信息统计外,为了更好地监控整个的作业运行状态和服务运行状态,往往需要更细粒度地采集容器日志,所以我们对这部分进行了增强。另外,为了定位容器之间的运行状态,我们提供通过 Web Shell 登录到 Pod 中,以命令行的形式输入 Linux 指令,在浏览器上直接操作作业运行环境的服务,类似于在本地终端操作远程服务器,这对作业开发以及问题定位来说是一个非常实用的工具。

  在混部的用户场景下,云原生大数据平台支持很多的业务场景,包括在线、流式、离线、查询分析和批处理等。

  由于不同业务场景对于底层资源响应的核心指标不同,对底层资源的优化需求也会存在区别。如果要满足这些不同场景的业务指标要求,在混部的时候就要有重点地进行对应的优化。以下是混部的两个典型场景:

  1.Flink和 Spark 的混部。即 Flink 不使用资源,或负载低的时候,资源可以出让给 Spark,Spark 执行完批式计算后,空闲的资源也可以出让给流式计算(Flink)用。

  2.APP实时调用和大数据场景的混部。在上图提到的5个场景中,右侧4个都是大数据场景。大数据场景可以和 APP 实时调用场景进行资源复用——当APP 在线资源使用量较少时,可以出让给大数据场景使用,反之亦然。

  首先是高效的资源切换,可以做到数万核离线年春节时,抖音在线资源需求量非常高,我们将离线资源以分钟级出让了数十万核给在线资源使用。而当遇到某些突发社会热点导致的极端弹性场景时,高效的资源切换甚至可以成为业务的“保命利器”。

  其次是利用率的提升,通过混部,可以降低整体公用的开销,在字节跳动内部带来2% 的利用率提升;

  最后是在离线资源的统一管理,在离线资源全量共池,可以实现 Quota 管控、调度、运行、机器运维统一。

  提供全局虚拟队列:在用户使用多云的场景下,首先需要提供一个全局虚拟队列的概念。如上图,一个虚拟队列就是一个资源池,下面对应不同的两个物理资源池。用户在提交的时候,不需要关注实际对应的集群,而是提交到一个虚拟队列上,下层会针对作业进行相应的调度,自动分发到合适的集群/机房/队列上,能够有效提升容灾能力。

  应用按多因子综合选择流量分配:多云部署的另一个好处是可以通过多种因素的综合考虑来选择流量分配。比如在一个多云场景下,AZ1 理解为厂商1,AZ2 是厂商2,现在发现使用同样多的 CU,在厂商2上比在厂商1上贵50%,那就可以通过多云调度把流量尽量分发到厂商1上。这是从成本角度考虑的一种情况,当然还可能存在虽然成本降低,但经常宕机,响应时间较长,任务状态出错率高的情况,那就需要把重要的应用放到各方面指标较好的机房里,总的来说就是通过多种因子的综合考量进行流量分配。在多云部署场景下,帮助用户实现多云成本的最优复用。

  火山引擎云原生计算自身产品专家,负责火山引擎云原生大数据平台相关产品工作,具有多年的大数据开发平台、大数据治理平台的产品经验。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186