技术揭秘:实时数仓Hologres如何支持超大规模部署与运维
简介:在本次评测中,Hologres是目前通过中国信通院大数据产品分布式分析型数据库大规模性能评测的规模最大的MPP数据仓库产品。通过该评测,证明了阿里云实时数仓Hologres能够作为数据仓库和大数据平台的基础设施,可以满足用户建设大规模数据仓库和数据平台的需求,具备支撑关键行业核心业务数据平台的能力。
作者 | 欧文
来源 | 阿里技术公众号
2021年11月23日至12月3日,中国信息通信研究院(以下简称“中国信通院”)对第13批分布式分析型数据库共计27款产品进行了大数据产品能力评测。阿里云实时数仓Hologres(原阿里云交互式分析)在报表任务、交互式查询、压力测试、稳定性等方面通过了中国信通院分布式分析型数据库性能评测(大规模),并以8192个节点刷新了通过该评测现有参评的规模记录。
在本次评测中,Hologres是目前通过中国信通院大数据产品分布式分析型数据库大规模性能评测的规模最大的MPP数据仓库产品。通过该评测,证明了阿里云实时数仓Hologres能够作为数据仓库和大数据平台的基础设施,可以满足用户建设大规模数据仓库和数据平台的需求,具备支撑关键行业核心业务数据平台的能力。
在Hologres实例的云原生调度和运维体系建设上,团队也联合阿里云云原生等团队,解决了在超大规模集群;在运维能力建设上,团队通过自动化、智能化的运维体系建设,解决了实例部署和稳定性保障的问题。
一 超大规模部署面临的挑战
随着互联网的发展,数据量出现了指数型的增长,单机的数据库已经不能满足业务的需求。特别是在分析领域,一个查询就可能需要处理很大一部分甚至全量数据,海量数据带来的压力变得尤为迫切。同时,随着企业数字化转型进程的加速,数据的时效性变得越来越重要,如何利用数据更好的赋能业务成为企业数字化转型的关键。
大数据实时数仓场景相比数据库的规模往往是成倍增加:数据量增加(TB级、PB级甚至是EB级)、数据处理的复杂度更高、性能要更快、服务和分析要同时满足等等。
而使用过开源OLAP系统的用户,尤其是通过开源OLAP自建集群的用户,都有一些比较深刻的体会,就是部署和运维困难,包括ClickHouse、Druid等,都面临了如下难题:
- 如何满足集群的快速交付和弹性伸缩
- 如何定义服务的可用性指标和SLA体系
- 存储计算一体,机型选择和容量规划困难
- 监控能力弱,故障恢复慢,自愈能力缺失
同时,随着规模的增加,规模优势和高性能吞吐下的压力,实时数仓的部署和运维难度呈指数级增加,系统面临了诸多调度、部署和运维上的各种挑战:
- 如何解决调度能力满足在单集群万台规模下服务实例的秒级拉起和弹性伸缩能力的要求;
- 如何解决大规模集群自身的容量规划、稳定性保障、机器自愈,提升相关的运维效率;
- 如何实现实例和集群的监控时效和准确性的双重要求,包括怎么在分钟内完成问题发现和分钟级的问题解决
得益于阿里云强大的云原生基础服务研发能力,实时数仓Hologres通过优秀的架构设计和阿里云大数据智能运维中台的能力等多个核心能力的建设,解决这些挑战,为用户提供了一个性能强大、扩展能力优秀、高可靠、免运维的实时数仓产品。
本文将会从超大规模部署与运维体系建设出发,分析超大规模实时数仓面临的挑战和针对性的设计及解决方案,实现在高负载高吞吐的同时支持高性能,并做到生产级别的高可用。
二 基于云原生的大规模调度架构设计
随着云技术的兴起,原来越多的系统刚开始利用Kubernetes作为容器应用集群化管理系统,为容器化应用提供了自动化的资源调度,容器部署,动态扩容、滚动升级、负载均衡,服务发现等功能。
Hologres在设计架构之初就提前做了优化,采用云原生容器化部署的方式,基于Kubernetes作为资源调度系统,满足了实时数仓场景上的超大规模节点和调度能力。Hologres依赖的云原生集群可以支持超过1万台服务器,单实例可以达到8192个节点甚至更大的规模。
1 Kubernetes万台调度
Kubernetes官方公布集群最大规模为5000台,而在阿里云场景下,为了满足业务规模需求、资源利用率提升等要求,云原生集群规模要达万台。众所周知Kubernetes是中心节点式服务,强依赖ETCD与kube-apiserver,该块是性能瓶颈的所在,突破万台规模需要对相关组件做深度优化。同时要解决单点Failover速度问题,提升云原生集群的可用率。
通过压测,模拟在万台node和百万pod下的压力,发现了比较严重的响应延迟问题,包括:
- etcd大量的读写延迟,并且产生了拒绝服务的情形,同时因其空间的限制也无法承载 Kubernetes 存储大量的对象;
- API Server 查询延迟非常高,并发查询请求可能导致后端 etcd oom;
- Controller 处理延时高,异常恢复时间久,当发生异常重启时,服务的恢复时间需要几分钟;
- Scheduler 延迟高、吞吐低,无法适应业务日常运维的需求,更无法支持大促态的极端场景
为了突破k8s集群规模的瓶颈,相关团队做了详细调研,找到了造成处理瓶颈的原因:
- 发现性能瓶颈在kubelet,每10s上报一次自身全量信息作为心跳同步给k8s,该数据量小则几KB大则10KB+,当节点到达5000时,会对kube-apiserver和ETCD造成写压力。
- etcd 推荐的存储能力只有2G,而万台规模下k8s集群的对象存储要求远远超过这个要求,同时要求性能不能下降;
- 用于支持集群高可用能力的多API Server部署中,会出现负载不均衡的情况,影响整体吞吐能力;
- 原生的scheduler 性能较差,能力弱,无法满足针对混部、大促等场景下的能力。
针对该情况,做了如下优化,从而达到万台规模调度:
- etcd设计新的内存空闲页管理算法,大幅优化etcd性能;
- 通过落地 Kubernetes 轻量级心跳、改进 HA 集群下多个 API Server 节点的负载均衡,解决了APIServer的性能瓶颈;
- 通过热备的方式大幅缩短了 controller/scheduler 在主备切换时的服务中断时间,提高了整个集群的可用性;
- 通过支持等价类处理以及随机松弛算法的引入,提升了Scheduler的调度性能
三 Hologres运维体系建设
1 Hologres运维体系总览
针对OLAP体系碰到的问题和痛点,以及在超大规模部署压力下的运维挑战,同时依托阿里云大数据运维中台,我们设计了Hologres的运维体系,解决资源和集群交付等自动化问题、集群和实例级别的实时可观测性问题和智能化的自愈体系,提升Hologres的SLA到生产可用级别。
2 集群自动化交付
Hologres 是完全基于云原生的方式设计和实现的,通过存储计算分离的方式,解耦了计算资源和存储资源;其中计算节点的部署通过K8s集群进行部署和拉起。通过自研的运维管理系统ABM,在集群交付上,我们对集群进行抽象设计,分离出资源集群和业务集群的概念;资源集群的交付,ABM和底层平台进行打通,进行资源集群的创建和容量维持;在业务集群上,ABM提供基于K8s 概念的部署模板,将管控等节点在资源集群上快速拉起,完成交付。
3 可观测性体系
系统的可观测性能帮助业务更好的管理集群水位和问题排查等,从而提升企业级管控能力。在可观测性上,不仅需要透出更加简单易懂的监控指标,还需要有成熟的日志采集系统,从而实现更简单的运维,只需要为业务问题负责。基于阿里云的监控产品和Hologres的可观测性需求,我们设计了Hologres的实时监控能力。
Metric监控体系
为了支持详细的系统能力观察、性能监控、快速的问题定位和debug,Hologres 支持了非常丰富的Metric监控体系,这也对整个Metric链路的采集、存储和查询提出了非常高的要求。在监控链路上,Hologres 选择了阿里巴巴自研的Emon平台,除了支持亿级Metric每秒的写入,Emon还支持自动downsample、聚合优化等能力;同时在后端我们通过实时链路,可以把核心Metric吐到云监控,方便用户自助的对实例进行监控观察和问题定位。
日志采集和监控
在日志采集上,Hologres采用了成熟的云产品SLS,可以支持中心式的日志排查和过滤 ;同时考虑到Hologres的日志量也非常庞大,在采集上采用了分模块和分级的机制,在控制成本的同时,能很好的解决问题排查和审计的需要。同时,SLS也提供了基于关键字等方式的监控方案,可以对关键错误进行告警,以方便及时处理问题。
基于元仓的可用性监控
在Metric和日志的采集及告警上,更多的是体现某一个模块上的问题,上面的手段还无法完整的回答某一个实例的可用性。基于此,我们构建了一个Hologres运维数仓,通过多维度的事件、状态进行综合判断实例是否工作正常。
在元仓中会收集和维护多维度数据,包括实例的meta数据、Hologres中各模块的可用性判断标准、实例各模块的状态、事件中心,包括运维事件、客户事件、系统事件等;在进行实例可用性判断的同时,元仓还提供了用于实例诊断、实例巡检等各种数据。当前元仓的能力已经产品化发布为慢Query日志,用户可以通过慢query日志,进行自助化问题诊断和调优。
4 智能运维提升产品SLA
在可观测性完善的基础上,为了提升问题定位的速度和缩短实例恢复时间,即提升Hologres的MTTR,基于阿里云大数据运维中台提供的基础能力和智能运维方案,我们构建了完整的Hologres SLA管理体系和故障诊断及自愈体系。
SLA体系
基于Hologres运维元仓的数据和实例可用性定义,我们建立了Hologres实例级别可用性的管理系统,实例可用性数据会进入ABM的SLI数据库,SLI根据数据和条件触发实例可用性监控,在监控发出的同时,会触发实例的诊断,系统根据诊断结果,判断是否进行自愈,如果是已知可以自动恢复情况,会触发自愈,进行故障的自动恢复;如果是未知情况,会触发生成人工工单,工单系统会由人跟进完成,并逐步形成自愈的action。
智能巡检
智能巡检解决的是集群或者实例的一些隐性和不紧急的问题,避免一些小问题的日积月累引发质变影响线上的稳定性;除了一些比较清晰定义的巡检项,智能巡检还引入了聚类算法等,对系统指标进行分析,这也会帮助我们发现一些集群中的离散节点,进行及时处理,避免问题节点导致影响整个实例的可用性。
智能诊断和自愈
智能诊断既依赖运维元仓的数据,同时还会依赖诊断相关的算法支持,包括日志聚类、根因分析等,进行错误日志的聚类,对聚类结果进行打标。在ABM提供的算法和工程能力支持下,实例诊断已经在帮助业务进行问题的快速定位,提升问题解决的效率,缩短了实例的MTTR。
四 Hologres产品级运维能力
除了上面介绍的Hologres服务本身的运维稳定性保障。在Hologres 产品侧,通过多种方式提升系统的稳定性:
1、高可用架构
采用高可用架构设计,稳定支撑阿里集团历年双11等大促流量峰值,经历大规模生产考验,包括
- 存储计算分离架构提升系统扩展灵活性
- 多形态replication解决数据读写分离,主要包括多副本提高吞吐、单实例资源组隔离、多实例共享存储高可用
- 调度系统提升节点failover快速恢复能力
2、多元化的系统可观性指标
除了Hologres本身架构的设计,同时也为用户提供多元化的观测指标,实时监控集群状态和事后复盘,无需复杂操作,只需为业务负责:
- 多维度监控指标:CPU、内存、连接数、IO等监控指标实时查询,实时预警;
- 慢query日志:发生的慢Query或失败Query通过时间、plan、cpu消耗等各项指标进行诊断、分析和采取优化措施,提高自助诊断能力;
- 执行计划可视化:通过多种可视化展现的方式,对Query进行运行分析、执行分析,详细算子解读,并进行优化建议引导,避免盲目调优,降低性能调优门槛,快速达到性能调优的目的。
五 总结
通过对大规模调度下面临的调度性能瓶颈的分析和针对性的优化,Hologres 可以完成8192节点甚至更大规模的实例交付和扩缩容。同时基于云原生的Hologres智能运维体系建设,解决了大规模集群和实例下面临的运维效率和稳定性提升问题,使得Hologres在阿里巴巴内部核心场景历经多年双11生产考验,在高负载高吞吐的同时实现高性能,实现生产级别的高可用,更好的支撑业务,为企业的数字化转型提供了良好的支持。
本文为阿里云原创内容,未经允许不得转载。
技术揭秘:实时数仓Hologres如何支持超大规模部署与运维的更多相关文章
- HBase实战 | 知乎实时数仓架构演进
https://mp.weixin.qq.com/s/hx-q13QteNvtXRpNsE5Y0A 作者 | 知乎数据工程团队编辑 | VincentAI 前线导读:“数据智能” (Data Inte ...
- 美团点评基于 Flink 的实时数仓建设实践
https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651749037&idx=1&sn=4a448647b3dae5 ...
- 基于 Flink 的实时数仓生产实践
数据仓库的建设是“数据智能”必不可少的一环,也是大规模数据应用中必然面临的挑战.在智能商业中,数据的结果代表了用户反馈.获取数据的及时性尤为重要.快速获取数据反馈能够帮助公司更快地做出决策,更好地进行 ...
- (转)用Flink取代Spark Streaming!知乎实时数仓架构演进
转:https://mp.weixin.qq.com/s/e8lsGyl8oVtfg6HhXyIe4A AI 前线导读:“数据智能” (Data Intelligence) 有一个必须且基础的环节,就 ...
- flink实时数仓从入门到实战
第一章.flink实时数仓入门 一.依赖 <!--Licensed to the Apache Software Foundation (ASF) under oneor more contri ...
- 基于Flink构建全场景实时数仓
目录: 一. 实时计算初期 二. 实时数仓建设 三. Lambda架构的实时数仓 四. Kappa架构的实时数仓 五. 流批结合的实时数仓 实时计算初期 虽然实时计算在最近几年才火起来,但是在早期也有 ...
- 基于 Kafka 的实时数仓在搜索的实践应用
一.概述 Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...
- Clickhouse实时数仓建设
1.概述 Clickhouse是一个开源的列式存储数据库,其主要场景用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告.今天,笔者就为大家介绍如何使用Clickhouse来构建实 ...
- 更强大的实时数仓构建能力!分析型数据库PostgreSQL 6.0新特性解读
阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务 ...
- 大数据之Hudi + Kylin的准实时数仓实现
问题导读:1.数据库.数据仓库如何理解?2.数据湖有什么用途?解决什么问题?3.数据仓库的加载链路如何实现?4.Hudi新一代数据湖项目有什么优势? 在近期的 Apache Kylin × Apach ...
随机推荐
- 无力吐槽,uniapp项目外包接单碰上了这样的开发人员
随着疫情期形式的不断变化,线上线下各个行业都受到冲击.2020年我在家歇息了近4个月:跟很多人一样这一年我失业了,那段时间真的很迷茫,年龄也已过30,加上网上各种"开发人员35岁" ...
- 【论文项目复现1】漏洞检测项目复现_VulDeeLocator
复现环境 Ubuntu 20.04 CPU: 32G GPU: 11G 2080ti Source2slice: clang-6.0 + llvm + dg (dg: https://github.c ...
- KingbaseES 基于SQL的函数过程
什么是SQL函数? SQL函数包体是一些可执行的SQL语言.同时包含1条以上的查询,但是函数只返回最后一个查询(必须是SELECT)的结果. 除非SQL函数声明为返回void,否则最后一条语句必须是S ...
- Django实现发送邮件
1.获取QQ邮箱授权码 打开QQ邮箱 --> 设置 --> 账号 --> 下拉页面 --> 开启POP3/SMTP服务 --> 短信验证 --> 点击"我 ...
- Spring---AoP(面向切面编程)原理学习笔记【全】
1.AOP 1.1.什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延 ...
- Linux服务器定时器
网络程序需要处理的第三类事件是定时事件,比如定期检测一个客户连接的活动状态.服务器程序通常管理着众多定时事件,因此有效地组织这些定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑,对于服务器 ...
- 【WCH以太网接口系列芯片】CH9121\20的使用和测试
本篇文章将介绍沁恒微电子的以太网转接芯片CH9121(CH9120和CH9121使用上没有区别,注意配置工具不一样,可以在沁恒微电子官网自行下载测试),该芯片支持网口和串口相互透传,可以通过串口AT指 ...
- #二分,spfa#洛谷 1948 [USACO08JAN] Telephone Lines S
题目 分析 二分答案,设高于答案的边权为1,否则为0 然后如果最短路答案\(\leq k\)那么这个答案符合要求 代码 #include <cstdio> #include <cct ...
- #状压dp,背包,贪心#洛谷 5997 [PA2014]Pakowanie
题目 你有 \(n\) 个物品和 \(m\) 个包.物品有重量,且不可被分割: 包也有各自的容量.要把所有物品装入包中,至少需要几个包? 分析 考虑物品的数量很小,首先优先选容量大的背包, 设\(f[ ...
- OpenHarmony持久化存储UI状态:PersistentStorage
前两个小节介绍的LocalStorage和AppStorage都是运行时的内存,但是在应用退出再次启动后,依然能保存选定的结果,是应用开发中十分常见的现象,这就需要用到PersistentStor ...