2021年11月23日至12月3日,中国信息通信研究院(以下简称“信通院”))对第13批分布式分析型数据库共27款产品进行了大数据产品能力评估。阿里云实时数仓Hologres(原阿里云交互分析)在报表任务、交互查询、压力测试、稳定性等方面通过中国信息通信研究院分布式分析数据库性能测评(大规模),通过了中国信通院绩效考核(规模),以8192分的成绩刷新了现有参与者通过考核的规模记录。在本次测评中,Hologres是目前通过信通院大数据产品分布式分析型数据库大规模性能测评的目前最大的MPP数据仓库产品。通过本次评测,证明了阿里云实时数仓Hologres可以作为数据仓库和大数据平台的基础设施,能够满足用户构建大规模数据仓库和数据平台的需求,具有具备支撑重点行业核心业务数据平台的能力。在Hologres实例的云原生调度和运维体系建设方面,团队还与阿里云Cloud-native等团队合作解决了超大规模集群的问题;在运维能力方面,团队通过自动化、智能化的运维体系建设解决了问题。解决了实例部署和稳定性保障的问题。1、超大规模部署面临的挑战随着互联网的发展,数据量呈指数级增长,单机的数据库已经不能满足业务需求。尤其是在分析领域,一个查询可能需要处理很大一部分甚至全部的数据,海量数据带来的压力就显得尤为迫切。同时,随着企业数字化转型进程的加快,数据的时效性变得越来越重要。如何用数据更好地赋能业务,成为企业数字化转型的关键。大数据实时数仓场景往往数据库规模翻倍:数据量增加(TB级、PB级甚至EB级),数据处理的复杂度更高,需要更快的性能,以及服务和分析需要同时进行。满意等等。使用过开源OLAP系统的用户,尤其是通过开源OLAP自建集群的用户,都有一些深刻的体会,就是部署和运维的困难,包括ClickHouse、Druid等,面临着以下问题:如何满足集群的需求快速交付和弹性伸缩如何定义服务可用性指标和SLA体系存储和计算一体化,选型难,容量规划难,监控能力弱,故障恢复慢,自建-缺乏治疗能力。同时,随着规模的增大,在规模优势和高性能吞吐量的压力下,实时数仓的部署和运维难度呈指数级增长,系统在调度、部署等方面面临诸多挑战以及运维:如何解决调度能力满足单集群规模10000个服务实例秒级上拉和弹性扩展的需求;如何解决大规模集群的容量规划、稳定性保障、机器自愈等问题,提高相关运维效率;如何实现实例和集群双重监控的及时性和准确性需求,包括如何在几分钟内完成问题发现和分钟级问题解决得益于阿里云强大的云原生基础服务研发能力,实时数仓Hologres通过优秀的架构设计和阿里云的大数据智能运维平台解决了这些挑战,为用户提供了一款性能强大、扩展性好、可靠性高、免运维的实时数仓产品。本文将从超大规模部署和运维系统构建入手,分析超大规模实时数仓面临的挑战以及针对性的设计和解决方案,从而在实现高性能的同时支持高负载高吞吐,实现生产级高可用。2基于云原生的大规模调度架构设计随着云技术的兴起,越来越多的系统刚刚开始使用Kubernetes作为容器应用集群管理系统,为应用提供自动化的资源调度、容器部署、动态扩展等功能容器化应用程序。、滚动升级、负载均衡、服务发现等功能。Hologres在设计架构之初就已经提前进行了优化。采用云原生容器化部署方式,以Kubernetes作为资源调度系统,满足实时数仓场景下超大规模节点和调度能力的需求。Hologres依托的云原生集群可以支持超过10000台服务器,单个实例可以达到8192个节点甚至更大。1数万个Kubernetes调度Kubernetes官方宣布最大集群规模为5000。在阿里云场景下,为了满足业务规模需求,提高资源利用率,云原生集群规模必须达到10000。众所周知,Kubernetes是一个中心节点服务,强烈依赖于etcd和kube-apiserver。这个块是性能瓶颈所在。突破万台规模,需要对相关部件进行深度优化。同时,需要解决单点故障切换速度问题,提高云原生集群的可用性。通过压测,模拟数万节点、百万Pod下的压力,发现响应延迟问题严重,包括:etcd大量读写延迟,出现拒绝服务情况。无法承载Kubernetes存储大量对象;APIServer查询延迟很高,并发查询请求可能导致后端etcdoom;控制器处理延迟高,异常恢复时间长,异常重启时,服务恢复时间需要几分钟;Scheduler延迟高,吞吐量低,无法满足业务日常运维需求,也无法支撑大促的极端场景。为了突破k8s集群规模的瓶颈,相关团队进行了详细的研究,找到了造成处理瓶颈的原因:发现性能瓶颈是kubelet,它每10s上报一次自己的全量信息作为心跳同步给k8s。数据量从几KB到10KB+不等。当节点数达到5000时,会对kube-apiserver和ETCD造成写入压力。etcd推荐的存储容量只有2G,k8s集群在10000个单位规模的对象存储需求远超这个需求,同时性能不能下降;在部署多个用于支撑集群高可用的APIServer时,会出现负载不均衡的情况,影响整体的吞吐能力;原生调度器性能差,能力弱,无法满足混合部门、大促等场景的能力。针对这种情况,做了如下优化,以实现10000个单位的规模调度:etcd设计了全新的内存空闲页面管理算法,大幅优化了etcd的性能;通过Kubernetes轻量级心跳的实现,提高了HA集群下多个APIServer节点的负载均衡,解决了APIServer的性能瓶颈;通过双机热备,大大缩短主备切换时controller/scheduler的业务中断时间,提高整个集群的可用性;通过支持等价类处理和随机松弛算法的引入,提升Scheduler的调度性能3Hologres运维系统搭建1Hologres运维系统概述针对OLAP系统中遇到的问题和痛点,以及超大规模部署压力下的运维挑战,依托阿里云大数据运维平台,我们设计了Hologres运维系统,解决资源和集群交付、实时性等自动化问题集群和实例级别的可观察性问题,以及将Hologres的SLA提高到生产可用性级别的智能自愈系统。2.集群自动化交付Hologres是基于云原生的方式设计和实现的。它通过存储和计算的分离来解耦计算资源和存储资源。计算节点的部署是通过K8s集群来部署和拉取的。通过自主研发的运维管理系统ABM,在集群交付方面,我们抽象了集群的设计,分离了资源集群和业务集群的概念;资源集群的交付,ABM与底层平台打通,创建和管理资源集群。容量维护;在业务集群上,ABM提供基于K8s理念的部署模板,快速拉起资源集群上的管控等节点,完成交付。3可观测系统系统的可观测性能帮助业务更好地管理集群水位和排查问题,从而提升企业级管控能力。在可观察性方面,不仅要揭示更简单易懂的监控指标,还要有成熟的日志采集体系,实现更简单的运维,只需要负责业务问题。基于阿里云的监控产品和Hologres的可观测性需求,我们设计了Hologres的实时监控能力。Metric监控体系为了支持详细的系统能力观察、性能监控、快速的问题定位和调试,Hologres支持非常丰富的metric监控体系,这也对整个metric链路的采集、存储和查询提出了非常高的要求。在监控环节,Hologres选择了阿里巴巴自研的Emon平台。Emon除了支持每秒写入亿级指标外,还支持自动下采样、聚合优化等能力;同时,我们可以通过后端实时链接,将核心指标导出到云端监控,方便用户监控观察实例,自行定位问题。日志采集与监控在日志采集方面,Hologres采用成熟的云产品SLS,可以支持中心化的日志排查和过滤;同时考虑到Hologres的日志量也非常大,采用分模块分级机制进行收集,在控制成本的同时,可以很好的解决故障排查和审计的需求。同时,SLS还提供了基于关键字等的监控方案,可以对关键错误进行告警,方便及时处理问题。基于元数据仓库的可用性监控主要反映了某个模块在metrics和日志的收集和告警方面的问题,上述方法无法全面回答某个实例的可用性问题。基于此,我们构建了Hologres运维数据仓库,通过多维度的事件和状态综合判断实例是否正常运行。元仓库会收集和维护多维度的数据,包括实例的元数据,Hologres中各模块的可用性判断标准,实例各模块的状态,事件中心,包括运维事件、客户事件、系统事件等;元仓库在判断实例可用性的同时,还提供了实例诊断、实例巡检等各种数据。目前元仓库的能力已经作为慢查询日志发布。用户可以使用慢查询日志进行自助式问题诊断和调优。4智能运维提升产品SLA基于完善的可观测性,为提高问题定位速度,缩短实例恢复时间,即提升Hologres的MTTR,基于Hologres提供的基础能力和智能运维阿里云大数据运维平台。在运维解决方案方面,我们构建了完整的HologresSLA管理体系和故障诊断与自愈系统。SLA体系基于Hologres运维仓库的数据和实例可用性定义。我们建立了Hologres实例级的可用性管理系统。实例可用性数据将进入ABMSLI数据库。SLI根据数据和条件触发实例可用性监控。同时会触发对实例的诊断,系统会根据诊断结果判断是否进行自愈。如果已知可以自动恢复,则触发自愈,进行故障自动恢复;如果未知,则会触发人工工单的生成,工单系统会被人跟进,逐渐形成自愈作用。智能巡检智能巡检解决集群或实例的一些隐性、非紧急问题,避免一些小问题积累导致质变影响线上稳定性;除了一些明确定义的巡检项目外,智能巡检还引入了聚类算法对系统指标进行分析,这也有助于我们发现集群中一些离散的节点,并及时处理,避免造成影响整个实例的可用性由问题节点。智能诊断和自愈智能诊断不仅依赖运维仓库的数据,还依赖与诊断相关的算法支持,包括日志聚类、根因分析等,对错误日志进行聚类,并标记错误日志聚类结果。在ABM提供的算法和工程能力的支持下,实例诊断已经在帮助业务快速定位问题,提高问题解决效率,缩短实例MTTR。四大Hologres产品级运维能力除了上面介绍的Hologres服务本身的运维稳定性保障。Hologres产品端,通过多方面提升系统的稳定性:1、高可用架构采用高可用架构设计,稳定支撑历年双11等阿里巴巴集团大促流量高峰。经历过大规模生产测试,包括存储计算分离架构。提高系统扩展的灵活性多模态复制解决数据读写分离,主要包括多副本提高吞吐量,单实例资源组隔离,多实例共享存储高可用调度系统提高节点故障转移快速恢复能力2、多样化的系统可观测指标除了Hologres自身架构设计之外,还为用户提供多样化的观测指标,实时监控集群状态和事后回顾,无需复杂的操作,只需要负责业务:多维度监控指标:CPU、内存、连接数、IO实时查询等监控指标实时预警;慢查询日志:通过时间、计划、cpu消耗等指标对慢查询或查询失败的发生进行诊断、分析并采取优化措施,提高自诊断能力;执行计划可视化:通过多种可视化展示方式,对Query进行操作分析和执行分析,详细的算子解读,指导优化建议,避免盲目优化,降低性能调优的门槛,快速实现目标性能调整。五、小结通过对大规模调度面临的调度性能瓶颈的分析和针对性优化,Hologres可以完成8192节点甚至更大规模实例的交付和扩容。同时,基于云原生的Hologres智能运维体系构建,解决了大规模集群和实例面临的运维效率和稳定性提升问题。在处理吞吐量的同时实现高性能,在生产层面实现高可用,更好地支撑业务,为企业数字化转型提供良好支撑。阿里云实时数仓全息图:https://www.aliyun.com/product/bigdata/hologram?spm=a2cbu.13822726.0.0.56711a9cIKkCzv
