客户介绍
好未来(NYSE:TAL)是一家以才智教育和开放渠道为主体,在全球范围内服务公办教育,助力民办教育,探索未来教育新形式的科技教育公司。好未来的前身学而思成立于 2003年,2010年在美国纽交所正式挂牌买卖。好未来以“爱和科技让教育更夸姣”为使命,努力成为受敬重的教育组织。当时,好未来已构建起从东西、渠道到内容的多元化教育生态,满意从-1岁到 24岁各年龄段人群个性化学习需求。目前,好未来旗下具有学而思素质、学而思网校、彼芯、美校、学而思国际、学而思文创出书中心、学而思大学生、妈妈帮等品牌,并战略出资了赫石少儿体能等多个品牌。集团事务掩盖素质教育、技能服务、海外教育服务、数字内容出书、教育硬件、保管服务等领域。
学而思网校,纽交所上市公司好未来旗下在线教育品牌,为6-14岁的孩子供给素质教育服务。2008年成立至今,积累了十余年教研经验和学习数据,陪同千万孩子生长,在家长间口口相传。学而思网校首创“直播+教导”的双师教育形式,大力投入AI和全真互联网等前沿技能,继续推进教育立异。2021年学而思网校全面晋级素质体系,推出人文美育、科学创想、编程与机器人等抢手素质课程。
网校实时数仓开展背景介绍
网校实时数仓1.0从2019年开端建立,依据Kudu OLAP引擎构建,前期承载事务不多,使命量不大,运行安稳、性能也很高,比较合适前期的技能选型;自2020年后,网校进入事务快速开展期,实时开端接受更多的事务需求,包含营销域、买卖域、教育域等数据域的建造以及实时大屏,随着需求增多,实时数仓使命量、数据量也不断攀升,Kudu开端遇见技能瓶颈,无法快速满意事务需求,运维难、本钱贵等问题也开端凸显。
与此一起,2021年7月教育职业遭受“双减”,公司事务开端面对事务减缩以及转型等事务改变,很多学科类、无效使命空跑,形成资源的极大糟蹋,本钱办理提升日程,开端着手调研建造本钱更低的实时数仓OLAP引擎。经过市面上几款OLAP引擎的比照,终究选型Hologres,并于2022年1月开端实时数仓晋级,经过半年多的本钱办理以及数仓建造,网校实时数仓迈入2.0阶段,比较于1.0版数仓,愈加安稳、可靠,建造本钱也更低。此次晋级首要是针对实时数仓的底层OLAP引擎的晋级,运用阿里云Hologres替换Kudu,完结实时数仓降本增效,助力事务愈加精细化增长。
实时数仓1.0:以Kudu为OLAP引擎,技能瓶颈凸显
1、网校实时数仓1.0全景图
实时数仓1.0支撑着网校大部分的线上数据,用于报表剖析,精准营销等多个场景,其事务数据流程如下图:
- ODS层首要存储日志、事务库同步过来的原始数据,包含用户行为等埋点日志以及事务数据等。
- ODS层数据清洗后,写入DWD层,并在DWD层对依据事务需求数据做细分,分为教育、买卖、营销等明细数据。
- DWS层将DWD数据与学员、课程、班级、讲次信息等维表进行相关,生成事务宽表或许事务模型汇总等数据。
- ADS层从DWS获取数据,面向使用层,首要是运用MSQL、Polardb作为查询引擎,依据事务场景对接实时看板、实时大屏、实时接口等,赋能实时销量、转化、续报、在线、出勤、完课等场景。
2、依据Kudu架构的场景计划
整个实时数仓1.0都是依据Kudu来建造的。其背后的技能架构如下图:
依据事务的时效性,将网校的场景分为分钟级场景和实时秒级场景。
1)准实时数仓模型(分钟级):
在分钟级实时数仓中,会经过Spark/Flink对数据进行预处理后写入Kudu,并在Kudu中依据ODS、DWD、DWS分层核算,然后将数据写入ADS层的PolarDB或许MySQL,最终对接实时大屏、报表等事务。
2)实时数仓模型(实时秒级):
在实时秒级的场景中,对数据的时效性要求非常高,选用Flink+Kafka架构,DWD明细数据一起会落地一份到Kudu,DWS层核算过程中 相关Kudu维表、以及前史DWD数据来完结汇总模型构建,输出成果数据到ADS层的PolarDB、MySQL、Kafka消息行列等,最终对接线上服务。
网校实时80%左右场景,运用分钟级完结;20%场景运用秒级实时链路完结。当然也有部分场景可能运用混合链路完结,比方实时在线、出勤,Flink程序实时接入心跳明细数据到数仓DWD层,然后在DWS层进行分钟级汇总班级出勤、在线等数据,在ADS层进行数据的输出。
3、事务应战:Kudu技能瓶颈凸显,事务本钱办理刻不容缓
实时数仓1.0中,Kudu作为底层OLAP引擎,运用Impala进行数据加载、运算,当事务上量时,Kudu的技能瓶颈开端凸显,首要表现在以下几个方面:
- 事务开展后期,Impala服务器内存压力较大,内存不足问题频发:网校80%的事务运用分钟级数仓完结且都是每隔5分钟核算一次,Impala承载Kudu数据的加载、核算,很多杂乱核算的Sql使命在同一时间瞬时打到服务器,导致Impala节点内存压力较大,甚至呈现部分批次使命履行失败情况。
- 运维困难:缺少Kudu专业运维同学,当某个数据目标核算呈现问题,或许集群不安稳时,有比较长的运维流程和修订流程,严重影响实时服务的安稳性,无法保证实时数据的SLA,使得用户体会非常欠好。
- 毛病康复时间长,当呈现节点毛病的时分,为了快速康复事务,短期靠扩容节点来暂时解决问题,导致运维和本钱压力逐步增大。
- “双减”原因,急需对本钱进行办理,迫切需求将Kudu切换到建造本钱更低、更安稳、可靠的OLAP引擎。
综上,依据Kudu实时数仓,正逢“双减”,面对着事务快速改变、本钱压力以及运维困难等一系列的内、外部应战,咱们迫切的期望能够找到一款OLAP产品将Kudu进行替换,解决当时遇见的各种问题,建立一个愈加简洁、易用、运维快捷、资源动态伸缩容的数仓底座。
实时数仓2.0:Hologres读写别离布置全面替换Kudu
依据实时数仓1.0的技能痛点,在对市面上的多种OLAP引擎进行调研以及比照后,咱们终究挑选了阿里云Hologres替换Kudu建立网校实时数仓,即实时数仓2.0版本。
1、OLAP引擎技能选型需求:高吞吐、高可用
依据事务,咱们梳理了对OLAP引擎的需求如下:
- 强壮的OLAP才能
- 支撑SQL,支撑更新、删去、Upsert操作
- 高吞吐、高可用
- 运维方便,资源伸缩快捷
一起咱们也比照了市面上常见的OLAP引擎,如下表所示,终究挑选了Hologres为新的OLAP引擎
2、Hologres全面替换Kudu作为主OLAP引擎
挑选了Hologres作为实时数仓的主OLAP引擎之后,经过Hologres替换了Kudu的一切数据处理链路,一起也经过Hologres读写别离布置的方法,以只读从实例(简称从库)替换了原PolarDB/MySQL等查询引擎,以此构成了实时数仓2.0。数据链路如下:
- 数据分为离线和实时两部分。离线部分数据源数据经过集团采集东西T-Collect接入Hologres ODS层,实时部分经过Flink实时接入MySQL Binlog、埋点日志等数据入仓。
- 在Hologres中对数仓分为ODS、DWD、DWS、ADS等4层,每一层的数据经过集团T-Data渠道分钟级调度、清洗,并最终由Hologres从库供给线上服务出口。
- 实时和离线数据一致由Hologres存储,并由从库作为查询引擎一致供给线上数据出口,支撑的事务场景包含实时看板、实时大屏、实时接口服务、实时推送等场景。
3、查询引擎一致切换到Hologres从实例
实时数仓1.0核算在Kudu中,算完之后把成果同步到查询引擎PolarDB或许MySQL中,实时链路相对来说比较长,而且数据移动本钱也很高,对实时数据的安稳性有必定的影响。
实时数仓2.0中,咱们选用Hologres同享存储多实例的高可用布置计划,Hologres主实例承载数据的加载、核算,从库同享主库的一切表和数据承载数据查询,完结读写别离计划,而且从库作为实时数仓唯一的数据出口,一致数仓技能架构。这种计划的优点是减少了ADS层数据同步导出链路的保护,降低了开发本钱。
Hologres的同享存储多实例的高可用布置计划如下图所示:
实时数仓2.0查询引擎一致晋级切换到Hologres从库后的数据流转图前后比照如下:
一起,咱们计划对外开放Hologres从库ADS层,剖析师或许懂SQL的产品教师后期可经过集团T-Query渠道查询东西对实时数据进行探索、剖析,骄傲意部分暂时需求,减少人工需求、释放实时数仓开发人力。
助力数仓事务晋级,完结降本增效
实时数仓2.0经过半年多的建造,在本钱办理上取得了非常好的效果,一起依据Hologres的实时数仓架构在集团推广使用上也有比较成功的事例:
1、百万级写入和毫秒级查询才能
- 实际事务中,Hologres的写入才能达到百万行+/秒,事务就能快速拿到数据并查询。一起在查询上不仅能支撑秒级OLAP剖析,还能支撑在线服务毫秒级响应,使得事务探索数据的功率变得更快。
- 经过Hologres多子实例的布置方法,天然的就支撑了网校实时数仓的多个查询场景,一致了数据的出口,简化了数仓的运用。而且写入和查询之间互不影响,非常有用的做到了读、写别离。
2、降低本钱近百万/年
- 实时数仓底座晋级Hologres后,无需保护多套体系,经过Hologres一套体系支撑了实时数仓的全部场景,OLAP引擎本钱比较Kudu节约了近百万/年的费用。
- 公司事务转型背景下,经过数据办理、使命办理等使命数下降80%,Yarn行列资源本钱节约几十万/月,数据冗余存储减少90%,提升了数据的利用率。
3、减少运维压力
- 经过Hologres替换Kudu后,依托阿里强壮的技能运维才能,很大程度减少了咱们在运维层面上的压力,愈加专注于事务开发,有更多精力去做好实时数据的安稳性、准确性、及时性,把用户体会做好。
- 周末、暑假等事务高峰资源不足时,可随时进行扩容;事务低峰时,能够对资源进行缩容处理,做到很好的一个资源伸缩和本钱操控。
4、集团内Hologres实时数仓架构推广
- 网校实时数仓天然带有K9基因,期望学成功复制网校实时数仓2.0架构,并承载中心实时数据服务,比方实时续报、转化、企微等
未来规划和期望
未来规划:
- 网校实时数仓的继续建造
- 数据办理:元数据、数据质量、数据资产、数据安全等
- 流批一体技能探索
最终谈一谈,在Hologres运用过程中碰到一些问题以及对Hologres的等待
- Hologres暂时还不支撑自定义函数,体系自带函数满意不了部分特别需求,自定义函数这块能够同阿里的技能同伴一起去共建、推进此功用的完结、上线。
- 其次是Hologres权限配置问题,目前支撑简单权限模型、专家权限模型和Schema等级权限模型三种形式,专家模型功用最强壮(支撑细粒度表等级权限操控),但配置比较杂乱,需求履行的指令细节多,从而运维不方便,线上运用的是简单权限模型,权限要操控到schema、表等级,需求在使用体系层面加一层库、表权限办理体系,增加了开发本钱;开源Hadoop离线数仓有Range等权限操控结构,能做到精准库、表等权限操控,期望Hologres以后能把权限模型优化得愈加简单易用,更多白屏化操作,方便上手。
- 一起,咱们等待Hologres后面能够支撑查询开源架构Hive表的数据,这样的话做流批一体能够有愈加快捷、简单的完结计划。
相信Hologres未来会变得越来越好用,变成一款功用更全面、愈加强壮的OLAP引擎!咱们也期望经过Hologres建造出愈加优秀的实时数仓,赋能更多的事务。
作者:刘标新,好未来网校实时数仓开发工程师、负责人。王洋,好未来网校实时数仓开发工程师
参阅文章:
学而思网校:touch.xueersi.com/
实时数仓Hologres中心技能揭秘:developer.aliyun.com/article/779…
实时数仓Hologres同享存储实例介绍:help.aliyun.com/document_de…