1、背景sql
搜索离线数据处理是一个典型的海量数据批次/实时计算结合的场景,阿里搜索中台团队立足内部技术结合开源大数据存储和计算系统,针对自身业务和技术特色构建了搜索离线平台,提供复杂业务场景下单日批次处理千亿级数据,秒级实时百万TPS吞吐的计算能力。数据库
2、何谓“离线”?后端
在阿里搜索工程体系中咱们把搜索引擎、在线算分、SearchPlanner等ms级响应用户请求的服务称之为“在线”服务;与之相对应的,将各类来源数据转换处理后送入搜索引擎等“在线”服务的系通通称为“离线”系统。性能优化
商品搜索的业务特性决定了离线系统从诞生伊始就是一个大数据系统,它有如下一些特色:架构
一、任务模型上区分全量和增量分布式
二、 须要支持多样化的输入和输出数据源,包括:Mysql,ODPS,TT等各类数据库和消息队列做为输入,搜索、Ranking、图、推荐等各类引擎做为输出。性能
三、须要提供必定能力的数据处理能力,例如多表Join、UDTF支持等,以方便搜索业务的开发和接入。大数据
3、离线平台技术组件结构,其中部分组件:优化
一、Maat:分布式任务调度平台。ui
基于Airflow发展而来,主要改进点是调度性能优化、执行器FaaS化、容器化、API及调度功能扩展等四个部分,在保持对Airflow兼容的基础上,大幅提高性能,提升了稳定性。
一个离线任务的多个Blink job会经过Maat创建依赖关系并进行调度。
二、Bahamut:
执行引擎,是整个离线平台的核心,负责离线任务的建立、调度、管理等各类功能,后文会详细介绍。
三、Blink:
Flink的阿里内部版本,在大规模分布式、SQL、TableAPI、Batch上作了大量的优化和重构。离线平台的全部计算任务都是Blink job,包括stream和batch。
四、Soman:
UI模块,与Bahamut后端对接,提供任务信息展现、状态管理等可视化功能,也是用户建立应用的开发业务逻辑的主要入口。
五、Catalog:
存储表信息管理,提供各类数据源表的DDL能力,负责离线平台存储资源的申请、释放、变动等各类功能。
六、Hippo:
阿里搜索自研的分布式资源管理和任务调度服务,相似于Yarn,提供Docker管理能力,主要服务于在线系统。
七、Swift:
阿里搜索自研高性能分布式消息队列,支持亿级别消息吞吐能力,存储后端为HDFS,存储计算分离架构。
4、离线任务从数据源到产出引擎服务数据的整个流程,流程图分为三层:
一、数据同步层:
将用户定义的数据源表的全量和增量数据同步到Hbase内部表,至关于源表的镜像。这个镜像中咱们包含cf和d两个列族,分别存储数据库的镜像和Daily更新的数据。
二、数据关联计算层:
按照数据源中定义的各类关系,将不一样维度的数据关联到一块儿,把数据送到自定义的UDTF中进行处理,产出引擎所需的全量和增量数据。
三、数据交互层:
提供全量和增量数据的存储信息,与在线服务build模块进行交互。
原文连接: