写点什么

一体化无边界的大数据基础平台

  • 2019-10-08
  • 本文字数:3216 字

    阅读完需:约 11 分钟

一体化无边界的大数据基础平台

过去的两年我在大树金融担任大数据团队负责人,打造了一套一体化无边界的大数据基础平台,其中的一些架构思路和做法值得分享一下。


何谓一体化无边界、它的架构要点、典型应用案例,这些是我接下来要讲的。

一体化无边界

所谓一体化,指的是一套基础架构同时支撑 分析挖掘、线上业务 和流处理。 所谓无边界,指的是同样的组件我们用客户也用、既可以平台/API 嵌入业务系统也可以业务逻辑嵌入数据平台。


这是我们的基础架构及业务影响图,



接下来讲下它的要点:

架构要点

抽象点说,数据总线连接各类存储、计算组件,组件能力的不同组合可以满足各类业务场景。


这里 数据总线/同步能力是关键。正是基于强大的数据同步能力,不同来源的数据可以在数据仓库里被直接访问,不同计算可以分散到不同组件、最后结果汇集于所需要的地方,让平台上不同组件可以取长补短、互通有无。


比如,


[存储体系]



通过实时同步,


  • 形成了 热-温-冷(MySQL-TiDB-Hive/HDFS)存储体系

  • 线上 MySQL 专心存储热数据,不再需要分库分表

  • TiDB 汇集所有线上业务数据,可提供全量、跨库查询

  • Hive/HDFS 有所有数据,业务数据+日志数据,支撑大规模分析挖掘


~


[计算转移]



借助实时同步,我们转移了洗数逻辑,不再需要访问不同系统获得数据(直接推送给它),业务迭代更快速(SQL、实时上线),计算结果同步到原来的目标数据库(外部应用不受影响)。


~


依托强大的数据总线/同步能力,让我们在选择和组合业务所需的存储、计算能力方面更加自由。


大数据平台一些常见的能力/要素如下:


  • 快速检索(for 查询)能力

  • 快速扫描(for 分析)能力

  • 海量存储能力

  • 廉价存储能力

  • 大规模(批处理)计算能力

  • 流处理计算能力

  • 图存储 &计算能力

  • 函数 &算法生态能力

  • 数据输出/可视化能力

  • 资源调度/管理能力

  • 元数据管理能力

  • 等等


我们的一些组件选型及看中的能力如下:


  • Kafka w/ connect(数据总线,CDC)

  • Hadoop w/ Hive/HDFS/YARN(海量廉价存储,快速扫描,计算资源 &调度)

  • Spark(大规模分析计算,跨源访问,流处理,机器学习)

  • Flink(流处理,CEP,等)

  • TiDB(大规模存储,快速检索,复杂查询,MySQL 生态)

  • PostgreSQL w/ pipelineDb/timescaleDb/*_fdw(流处理,监控数据处理,复杂查询,跨源访问,Pg 生态)

  • ElasticSearch w/ ELK(日志数据处理,模糊查询)

  • 等等


总线连通的做法还有几个相关的问题需要考虑:


  • 被连接的各存储组件,需要具备流式入库和 CDC(Change Data Capture)能力。(MySQL、Pg、TiDB、ES 具备这方面能力,Hive 这边,我们开发了流式入库的能力,同时支持了修改/删除。)

  • 统一的数据交换格式以及版本迭代

  • 归档删除,热存储组件删除历史数据时,全量仓库那边不能删除。(我们通过约定删除机制解决了这个问题。)


如上,针对分析挖掘、线上查询、批处理、流处理等应用场景,我们并没有独立的基础架构。但我愿顺着这个思路展开,看看针对不同业务/场景提供的解决方案:

分析架构

面向数据分析和风控人员



Hive 和 Pg 是主力,


  • Hive w/ spark 我们做了些优化后,性能还不错,日常大作业和交互查询都在上面

  • 对于精确小查询,又碰上 Hadoop 资源吃紧,我们建议走 TiDB

  • 中间表和输出结果放 Pg,是对外报表的主要后端

  • 借助 pipelineDb 及其他辅助插件,中间表可以在 Pg 实时生成,并按需同步到其他地方

线上架构

面向线上业务系统



TiDB 是主力,


  • 历史/全量查询、跨库查询 以及业务脚本运行都走 TiDB

  • 需要同时访问冷热数据的,用 Pg + Mysql_fdw 支持(注:适用于条件明确的查询,条件模糊/大查询不适合)

  • Pg w/ pipelineDb 用作实时洗数,结果实时同步到需要的地方(计算过程中需要用到线上 MySQL 主库 或 TiDB 数据的,可以自由访问)

流处理架构

既能支撑大规模分布式计算,又兼具 PgSQL 生态优势。



在数据流动的各个环节都可以自由处理,


  • Flink 主要用于超大规模数据预处理 以及 CEP 等特殊场景(开发、部署及管理成本要高些)

  • Pg w/ pipelineDb 推荐日常使用,Pg 生态,复杂 join、访问外部数据方便

  • 借助数据总线 Flink 和 Pg/pipelineDb 可以轻松整合

开放架构

这一部分落实 “无边界”大数据平台的想法



核心组件服务化,


  • Kafka 服务化,数据直写 &消费

  • Spark 服务化,计算资源开放

  • TiDB、Pg 通过 JDBC 服务化

  • ES 通过 Rest 接口服务化


开放架构让大数据平台融入业务系统,同时通过流处理业务逻辑也可以托管在大数据平台上。


说不好 是业务系统选择了大数据平台,还是大数据平台融化了业务系统。用一个词描述可能更合适,那就是 “平台化”。

案例-运营策略优化

这是公司客户关系管理委员会提出的一个项目,其基本想法是,根据不同地方持续收集的用户及行为数据,进行客群细分(营销阶段、用户意愿等),据此作出营销决策(流转,手段等),执行/反馈,并不断作出评价和改进。



营销决策由 CRM 系统负责,客群细分在大数据平台上进行。


落实方式其实是用户画像,分为相对稳定部分和实时变化部分。数据分析团队负责稳定部分的用户标签,通过每日的全量脚本作业在 Hive 上运行实现;大数据团队负责实时部分的用户生命周期、导流状态等,在 Pg/pipelineDb 上开发实现。两份数据最终同步到 ES,在那里合并后等待 CRM 系统使用。


为了更好的适应用户操作及系统事件,还同时做了用户事件处理,对不同来源的相关数据做出处理后生成用户事件,实时推送给 CRM 系统。事件处理在 Pg/pipelineDb 里进行,生成结果通过 Kafka-rest http API 提供给 CRM 系统实时消费。

基础数据架构

前面讲述的各个架构有一个共同点,那就是都跟业务数据有关。这个不太一样,它是关于基础数据的。


何谓基础数据,指的是非业务逻辑产生的日志、监控、链路追踪这些基础设施和运行时系统自身的数据。而作为业务的基础数据,则包括采集、可靠传输、存储、融合,以及基于这些数据的衍生系统和业务。



基础数据架构要点如下,


  • 采集端,整合日志、监控、tracing SDK(融合,traceId 嵌入日志)

  • 传输网络,为日志、监控、tracing 数据提供统一传输(缓存,数据加工,智能路由 等)

  • 总线 &入库,为大规模实时数据分析提供便利

  • 存储体系,ES 支持日志分析,Pg w/ timescaleDb 支持监控数据分析(扩展的 Pg SQL 语法 &函数,可自由关联外部数据)

  • 监控 &配置管理(基础数据体系本身也需要监控,并且需要集中的配置管理)


业务数据 + 基础数据,交叉融合,是我构想的双剑合璧、数据大融合。关于基础数据的应用我有很多构想,这里不作展开。

写在最后

存储、计算、融合、治理。


存储、计算一般可通过选择避免研发,但融合、治理还是得自己操心。


上述描述很好的解决了数据融合问题,但对数据治理没怎么触及。


我们目前对数据治理作的直接研发不多,但已经做了很好的铺垫了。


数据治理的核心数据血缘方案一个常见的思路,是四处搜集/提取数据集、数据转换相关的元数据信息,把他们拼接、呈现出来就是我们期望的数据血缘关系图了。


上述做法很巧妙的把很多数据表定义、数据处理逻辑集中化、文本化了,这种情况下的爬取、分析,比起源码扫描分析、日志扫描分析、数据文件分析等等,要简便了多少?


实际上,由于 kafka connect、mysql、pg、hive、airflow 等已有了还算可以的元数据管理功能,我们目前对专门开发元数据管理系统的需求不是很大。


平台性能方面,日入库/处理数据量 3~4 亿条(几十 GB)的样子,迁机房造成大量重生数据时达到过 20 多亿条/天,我们在自建机房的物理机总数量 20 台左右。增加资源肯定能提升性能,根据我在前东家网宿处理更大规模数据量的经验,百亿级别的数据量应该不用调整架构。


平台运维方面,我们做了 Schema 自适应调整、自动检查修复、故障隔离、故障重启、监控/预警、数据质量报告等,所以,不出意外的话,日常运维还是比较省心的。


以上,建成的大数据基础平台其实是一套穷人的大数据平台,以较低的门槛便捷的满足各种应用场景的需求,并可以随着业务壮大做出调整和优化。愿平台后续的运营者使用愉快!


作者介绍


涂明雷,大树金融大数据负责人,TiDB User Group (TUG) 大使。


原文链接


https://asktug.com/t/topic/360


2019-10-08 08:002626

评论

发布
暂无评论
发现更多内容

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

股市老人

一张二维码VS一个行李箱?!看华为云时习知如何助力防城港核电基本安全考试

平平无奇爱好科技

AI大模型微调训练营-毕业总结

简单

微调工程师岗位可能并不存在,但使用 AI 编码工具已经成为刚需

阿里云云效

阿里云 云原生 AIGC 通义灵码

Flink Checkpoint 状态后端详解:类型、特性对比及场景化选型指南

木南曌

flink 实时计算

为什么研发规范,代码评审,单元测试推不动

赫杰辉

Flutter应用在苹果商店上架前的准备工作与注意事项

体育变革:一位年轻创业者燃体育直播的新火花

软件开发-梦幻运营部

Linux学习之Ubuntu 20使用systemd管理OpenResty服务

百度搜索:蓝易云

Linux ubuntu 运维 openresty systemd

Java垃圾回收全过程

百度搜索:蓝易云

Java 云计算 Linux 运维 云服务器

10分钟带你了解 Linux 系统中的 Top 命令

霍格沃兹测试开发学社

深入探索Linux的lsof命令

GousterCloud

Linux

Octavia Venture 成立,打造数十亿美元规模的 AI 价值体系

股市老人

Octavia Venture 成立,打造数十亿美元规模的 AI 价值体系

股市老人

昇思之路,从AI基础软件到生态繁花

脑极体

AI

谈谈我对 AIGC 趋势下软件工程重塑的理解

阿里云云效

阿里云 云原生 AIGC 通义灵码

SQLite的第一版不过是在GDBM上套了个壳

胡译胡说

sqlite 数据库 历史 KV存储

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

大瞿科技

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

加密眼界

Python的流程控制,你真的会了吗?(一)

霍格沃兹测试开发学社

我们是如何测试人工智能的(一)基础效果篇(内含大模型的测试内容)

测吧(北京)科技有限公司

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

股市老人

Penpad Season 2 质押突破350ETH,参与可获Scroll生态空投

石头财经

Java 的诞生——从 Oak 到 Java

胡译胡说

Java 历史

劳动力规划:对企业加速运营的未来展望

智达方通

企业管理 企业转型 全面预算管理 劳动力规划

C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

Penpad Season 2 质押突破350ETH,还有望获Scroll生态空投

BlockChain先知

MySql中BufferPool的基本概念介绍

百度搜索:蓝易云

MySQL Linux 运维 innodb 云服务器

Golang数据库事务实践

俞凡

golang

ShowMeBug李亚飞:IDE与AI自动编程技术将增强超级程序员

B Impact

一体化无边界的大数据基础平台_大数据_涂明雷_InfoQ精选文章