一站式数据开发平台在有赞的最佳实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 一站式数据开发平台
在有赞的最佳实践
主讲人 宋哲琦
2. 目录 CONTENT
01 数据开发平台简介 03 平台架构设计与演进
02 数据开发平台实践 04 总结 & 规划
3. 01
数据开发平台简介
4. 有赞数据中台简介
5. 有赞数据中台产品结构
6. 有赞数据开发平台简介
7. 有赞数据开发平台Roadmap
8. 02
数据开发平台实践
9. 数据开发概述
利用数据中台工具,基于已有的数据资产,创造新的数据资产的过程。
10. 数据开发案例流程分析—获取店铺交易分析数据
11. 数据流转抽象
12. 离线数据开发通用流程
13. 数据开发平台功能清单
离线数据同步
任务调度
大数据离线计算
即时 SQL 查询
监控&报警
规范化开发流程
•包括但不限于从 MySQL 同步到 Hive、从 Hive 同步到 ElasticSearch、从 Hive 同步到 HBase、从 Hive 到
TiDB/Clickhouse 等
•允许用户以每小时、每天、每周、每月等各种周期来定时触发任务的运行
•以 SQL(支持 SparkSQL/HiveSQL/Presto)形式处理各类的数据清洗、转化、聚合操作,同时支持
MapReduce、Spark 等形式,用来处理比较复杂的计算场景
•允许用户临时执行 SQL、查看执行的日志和结果数据,以及进行数据的可视化分析
•提供多种类型,包括重试、失败告警,deadline 报警,个人 dashboard 展示,便于进行个人任务的集中
管理和问题处理
•支持任务的发布审核、SQL 编写的规范约束(包括命名、库表规范、指标规范等)
14. 数据开发平台支持任务类型
离线计算任务 导出任务(Hive)
•Hive任务 •导出邮件任务
•Mysql导入Hive任务 •MapReduce任务 •导出ES任务
•Datay任务 •Spark任务 •导出Hbase任务
•……… •Kylin任务 •导出Clickhouse任务
•…………. •……….
导入任务
其他类型任务
•脚本任务
•数据依赖任务
•算法训练任务
•……..
15. 数据开发平台——即时SQL查询
• 支持库表元数据信息展示
• 支持执行引擎选择
• 支持函数查询
• 支持SQL文件保存于共享
• 支持查询结果可视化分析
• 查询结果可导出(CSV/EXCEL)
16. 03
平台架构设计与演进
17. 有赞大数据开发平台架构介绍
大数据开发平台的设计初衷,是为了解决数据开发过程中遇
•快速的、可预见性的发现问题
到的痛点问题,包括不限于:
运维
•可视化的方式管理
服务
•高可用
•高效性
•鲁棒、预防用户的误操作
调度
• 易扩展,支持快速增长的任务规模
• 任务之间合理的分配资源
• 失败或异常的发现和自动恢复
18. 有赞大数据开发平台架构介绍
19. 服务层设计——任务管理设计
•
节点(或者叫任务)
• 具体的一种类型任务,调度的最小单位。
•
工作流(或者叫作业)
• 包含任意节点,以及依赖关系,组成的有
向无环图。
•
业务组
• 包含多个工作流,解决同一个业务场景
• 统一管理配置(优先级、报警等等)
20. 服务层设计——作业的生命周期
21. 服务层设计——测试/调度环境配置隔离
测试/调度环境任务配置隔离
• 任务配置的隔离保证了工作流测试期间不会污染调
度环境的作业配置
• 通过发布审核实现配置的二次校验,避免误操作
• 调度环境配置支持版本管理,方便用户对比本次发
布diff信息
22. 服务层设计——全局Dag
•
基于任务的血缘关系构建全局DAG
• 基于节点的输入/输出表(血缘),建立跨工作流的节点之间的依赖关系,从而将孤立的多个DAG,合并成整体的
单个全局DAG。
• 全局DAG对用户来讲是透明的,构建过程自动化。
23. 调度层设计——架构介绍
调度架构设计方案:
Airflow + Celery + Redis + MySQL
调度的HA方案:
Airflow Scheduler Failover Controller: 新
增一个 Standby节点,会周期性地监听
Active节点的健康情况,一旦发现Active节
点挂了,则Standby切换为 Active 。
Worker节点负载均衡策略:
按CPU密集/内存密集区分任务类型,并安
排在不同的celery队列配置不同的slot,保证
每台机器CPU/内存使用率在合理范围内
24. 调度层设计——全局优先级
• 任务优先级支持下游继承
• 任务优先级的确认
• P4-P5 非数仓任务
• P1-P3 数仓核心任务
25. 调度层设计——Catchup机制实现调度自动回补
使用场景:
调度系统异常或者资源不足导致部分任务错过当前调度触发
时间。当恢复调度后,会自动补齐未被触发的调度执行计划。
26. 运维中心设计——跨Dag全局补数
跨Dag全局补数能力
• 支持批量操作,一次可以选择多个任务做Global
Dag检索下游实例
• 支持正则匹配以及白名单过滤等剪枝策略
• 支持选择重跑日期区间
27. 04
规划&展望
28. 更健壮的调度系统——调度系统重构
29. 更健壮的调度系统——Airflow的痛点问题
性能问题
• 随着业务增长Dag非常多的时候, scheduler loop扫
一次Dag folder会存在较大延迟(超过扫描频率)
稳定性问题
• Airflow Scheduler Failover Controller本质还是一个主
从模式,单点问题会在主从切换期间影响任务的正常
调度。
其他痛点
• Python技术栈,无法接入标准化部署流程
• 深度定制化开发,导致无法跟进社区版本
30. 更健壮的调度系统——DolphinScheduler架构设计
31. 更健壮的调度系统——DolphinScheduler价值评估
性能比对
•DAG调度吞吐:相同条件下DS DAG实例调度吞吐性能是airflow的2倍左右(DS-1.3.8)
部署
•Java技术栈可接入ops标准化部署流程,简化发布流程、解放运维人力
•支持Kubernetes、Docker部署,扩展性强增强
功能新增&增强
•更灵活的任务依赖配置(支持时、天、周、月粒度的时间配置)
•提升调度管理界面的易用性
•支持worker group
•分布式调度,整体调度能力随集群规模线性增长
•任务插件化,可自定义任务类型
稳定性和可用性
•高可靠与高可扩展性 — 去中心化的多 Master 多 Worker 设计架构,支持服务动态上下线,自我容错与调节能力
社区生态
•社区活跃度高,文档详细,版本迭代快
32. 更健壮的调度系统——架构设计
架构设计
1.
保留现有前端界面与DP API,重构调度管理界面
2. 任务生命周期管理/调度管理等操作通过DS API交互
3. 利用Project机制冗余工作流配置,实现测试、发布
的配置隔离
4. 服务层与调度层解耦,实现调度组件动态切换
33. 更健壮的调度系统——升级现状
34. 更健壮的调度系统——升级规划
35. 展望——未来平台的演进
易用 稳定
高效 准确
36. 非常感谢您的观看