β

大数据开发平台(Data Platform)在有赞的最佳实践

有赞技术团队 46 阅读

前言

随着公司规模的增长,对大数据的离线应用开发的需求越来越多,这些需求包括但不限于离线数据同步(MySQL/Hive/Hbase/Elastic Search 等之间的离线同步)、离线计算(Hive/MapReduce/Spark 等)、定时调度、运行结果的查询以及失败场景的报警等等。

在统一的大数据开发平台产生之前,面临一系列的问题:

为了解决上述遇到的各类问题,同时参考了业界其他公司的大数据解决方案,我们设计并实现了 大数据开发平台(Data Platform,简称 DP) ,通过可视化的交互界面,解决离线大数据计算相关的各种环境和工具。

本文将介绍 DP 的系统设计以及在有赞的落地情况,内容包括:

大数据开发平台的设计

架构设计

Alt text

图1 DP系统架构图

大数据开发平台包括调度模块(基于开源airflow二次开发)、基础组件(包括公共的数据同步模块/权限管理等)、服务层(作业生命周期管理/资源管理/测试任务分发/Slave管理等)和监控(机器资源/日志/基于预测的监控)。这些模块具体功能和职责为:

任务调度设计

大数据开发平台的任务调度是指在作业发布之后,按照作业配置中指定的调度周期(通过 crontab 指定)在一段时间范围内(通过开始/结束时间指定)周期性的执行用户代码。任务调度需要解决的问题包括:

  1. 如何支持不同类型任务?
  2. 如何提供任务调度的高并发(高峰时期每秒需要处理上百个任务执行)?
  3. 如何保证相对重要的任务(数据仓库任务)优先获取资源并执行?
  4. 如何在多台调度机器上实现负载均衡(主要指CPU/内存资源)?
  5. 如何保证调度的高可用?
  6. 任务调度的状态、日志等信息怎么比较友好的展示?

为了解决上述问题,我们调研了多种开源框架(Azkaban/Oozie/Airflow等),最终决定采用 Airflow + Celery + Redis + MySQL 作为 DP 的任务调度模块,并结合公司的业务场景和需求,做了一些深度定制,给出了如下的解决方案(参考图4): Alt text

图4 基于Airflow + Celery + Redis + MySQL的任务调度

现状

DP项目从2017年1月开始立项开发,6月份正式投入生产,之后经过了N轮功能迭代,在易用性和稳定性方面有了显著提升,目前调度集群包括2台Master和13台 Slave(调度)节点(其中2台用于 Scheduler ,另外11台用于 Worker ),每天支持7k+的任务调度,满足数据仓库、数据中心、BI、商品、支付等多个产品线的应用。
Alt text

图6 DP调度任务数趋势图

目前DP支持的任务类型包括:

总结和展望

DP 在经过一年半的不断功能迭代和完善之后,目前日均支持7k+的任务调度,同时在稳定性和易用性方面也有了较大的提升,可以满足用户日常对大数据离线开发的大部分使用场景。同时我们也意识到大数据开发这块还有很多可以挖掘和提升的点,未来我们可能会从这些方面进一步完善平台的功能和提升用户体验:

作者:有赞技术团队
Thoughts, stories and ideas.
原文地址:大数据开发平台(Data Platform)在有赞的最佳实践, 感谢原作者分享。

发表评论