2020-04-23

货拉拉大数据平台架构实践

作者 货拉拉技术

本文将介绍货拉拉大数据平台的架构实践,文章描述了大数据平台的构建,以及各种各样的技术应用,希望能和大家一起在大数据领域共同进步。   

01.平台架构概览

大数据平台总体架构图如下,大致可分为五层:

第一层:

数据采集层(货拉拉基础数据),采集公司所有数据,包括应用日志,数据库数据,探针以及第三方数据等,经由基于公司自研等离线导数工具(Cheetah)以及开源实时导数工具(Flume,Logstash)打造完整的数据采集链路(数据高速公路)统一存储。

第二层:

大数据存储层(大数据存储平台),公司所有数据经由”数据高速公路”链路通道,有两部分流向。大部分数据会存入对象存储文件系统中(开源的HDFS,国内华为OBS,海外亚马逊S3),来满足离线数据分析需求;另一部分数据根据业务需求则会存入Kafka,以满足实时计算需求。

第三层:

数据分析层(数据处理平台),包括离线分析平台(猎鹰离线平台),实时分析平台(飞流实时平台),AI平台(规划中)和基于离线实时平台打造的数仓(DataWarehouse)和多维查询平台(麒麟OLAP)。

第四层:

数据接口层(数据接口服务),接口服务层则分为两大部分:统一可视化SQL分析平台(Big Query)和统一数据提取服务平台(Data Cloud)。

第五层:

大数据数据应用层(大数据应用),主要为公司提供各种数据服务支持,也为业务系统提供数据支撑。主要包括用户行为分析(UBA)、Persona(用户画像)、POI(信息点系统)等。

02.实时流架构

构建实时计算平台时,充分考虑了开发的复杂度和人员使用门槛等原因,经调研后确定,主要基于Apache Flink。Flink是近年最流行的开源大数据计算引擎,它同时支持批处理和流处理,通过灵活的窗口特征、丰富的API和Exactly once语义保证,简化了实时任务开发的复杂度,加快编程效率;支持纯SQL化配置任务,降低了同学的使用门槛;还提供详尽的服务日志和性能指标查询,接入到Prometheus预警平台实时监控任务运行信息。

在实时流架构中,一部分的实时计算还依赖于自定义开发,也会提供SparkStreaming环境来丰富多样化实时计算引擎的选择。

03.离线分析架构

离线分析主要是基于Hive(数据仓库) on Tez(执行引擎),通过IDP任务调度来打造包括整个离线数仓以及数据分层建模,为各业务线提供数据分析的支撑。基于特定的业务线和需求,还提供Impala和SparkSQL处理数据;并在服务监控告警系统(货拉拉浑天仪),指标监控(货拉拉鹰眼)以及元数据管理系统(MetaData System)保障下,持续为各业务方提供稳定高效的数据服务。

04.数据接口

根据用户不同需求,主要包括Adhoc查询、OLAP多维分析和一站式取数服务。基于Apache Kylin构建的整套OLAP体系,能快速响应用户聚合指标需求;使用Spring Cloud构建货拉拉Data Cloud API平台,提供统一取数服务平台。用户可以自定义查询所需SQL取数和查询,出于安全考虑,会自动对入库的敏感数据进行脱敏操作,同时也会限制用户可下载数据数量。

05.数据产品

货拉拉提供多种多样的数据产品来满足各业务部门的不同需求。其实BI报表中心提供各种实时,离线指标展示,为各业务侧提供数据支持;基于Impala+Kudu构建的用户行为分析系统也为业务提供多样化的数据维度支撑,后续会详细单独介绍各数据产品。

06.平台发展

支持业务侧是第一位的,如果没有业务平台其实是没法继续蓬勃发展,我们要用技术辅助业务侧一起更快的前进。第二点是关注业务侧新发展,做好技术沉淀;不能觉得当下平台技术和能力已经满足各业务线需求就停滞不前,需要放眼未来未雨绸缪,做好技术的沉淀,及时跟随业务发展做出相应的适应调整。第三点是及时迭代内部的技术规范,比如开发流程规范、代码规范、上线规范等,规范是大家的共识和尽可能简单,并要执行和落地。

07.关于开源

在文章中有很多是开源的项目拿过来封装使用或者直接进行二次开发的,比如说Apache Flink和Hive。我们的策略是拥抱开源,关键项目持续给予关注和调研的同时,也要思考怎么样演变或改进才能更符合公司自身发展。

作者介绍

肖帅,货拉拉大数据平台组,高级大数据工程师