大数据平台技术笔记

大数据平台XSailboat简介

2023-08-03  本文已影响0人  OkGogogooo

1. 引言

从2021年年底开始,笔者带领一个微型团队开始开发我们的大数据平台XSailboat,目前已经初步具备实用化条件,产品将持续性地开发、完善、迭代升级。

在接下来的一段时间,笔者将陆续编写一些关于大数据平台实现相关的技术文档,有兴趣的从事大数据相关的同学,可以关注收藏一下,交流一下开发技术。如果对我们的大数据平台XSailboat感兴趣的同学比较多,希望将其应用于学习或商业项目中,我们可以在条件成熟的情况下,开源我们的大数据平台。

如果有些同学对我们大数据平台的模块和细节的实现方式比较感兴趣,欢迎留言。我将尽量抽空撰写相关的技术文档,无遮掩地分享技术内幕。……_如果不够及时,敬请理解。毕竟还得从事其它项目工作,得养家糊口,也得有休息时间……_。也欢迎大家把此篇文档分享给更多从事大数据开发的同学,加入进来一起关注XSailboat的成长。

XSailboat是一个面向政府和大企业的大数据平台,是部署在私有云/机房下的。它和阿里云的大数据工厂(DataWorks)、DataPhin有很多同质的模块,甚至界面都很像。实不相瞒,本人在开发大数据平台之前有带领团队在阿里云上进行数据开发工作,当时觉得这东西我也能搞,后来正好有时间,所以就搞起了。(-),见笑,只是一定程度的能搞,我认为当一个系统要在云环境下面向大规模租户的时候,平台从基础架构和设计方面就会有很大的不同,但这不妨碍我在小规模用户场景下,开发出类似的、可用的大数据平台。毕竟我面对的只是一部分几百万甚至不上百万的政府和大企业项目,和阿里云不在一个舞台上,更无所谓竞争。

产品设计不能超脱预设的应用场景和目标用户,避免在产品初期过度设计,致使产品迟迟不能落地应用。一个优秀的产品首先立足于其应用场景,跟随业务需要一次次迭代升级出来的。当然如果一个设计者有足够的经验和资源,也可以一步跨上更高的台阶。

--------我们的未来是星辰大海,一起扬帆起航----------------

2. 概述

XSailboat是我们开发的一个主要建立在 Hadoop 生态及SpringCloud解决方案之上的全栈式的大数据开发套件。其中包含数据集成(SailDI) 、数据开发(DataStudio)、任务运维(SailTaskOps)、数据服务(SailDS)、API网关(SailGateway)、数据可视化(SailDV)、认证中心(SailAC)、在线文档中心(SailDoc),平台运维中心(SailCockpit),应用引擎(SailAE) 、指标建模(SailInd)、数据地图(SailMap)、消息中心(SailMsg)、XTaskWorks(定时工作任务)。其中的数据集成、数据开发、任务运维共同组成了数据工厂(SailWorks)。数据工厂支持离线分析和实时计算,后续还将整合TensorFlow深度学习框架。

XSailboat模块构成.png

3. 架构

XSailboat架构.png
  1. Hadoop生态是XSailboat的关键基础设施。
  2. Spring是XSailboat的关键开发框架。
  3. 使用Hive+Tez/MapReduce作为大数据平台的存储和计算引擎。另外自己开发调度引擎和基于Python的执行引擎。使用Python开发执行引擎是数据工厂的离线分析功能的重要核心构建。这使得用户可以在DataStudio中使用Python基于执行引擎的SDK进行脚本开发,调用数据访问接口,实现循环、异步执行SQL、引入DataFrame框架等高级离线分析功能成为可能。
  4. 使用Flink作为流式计算的框架。我们在数据工厂中实现可视化的计算管道开发和运维功能,提供Flink集群的容器化、自动化、多集群部署功能。让实时计算更易入手,更易管控。
  5. 使用TensorFlow作为深度学习框架,在数据工厂中借助可视化的界面,辅助神经网络的搭建、超参数的设置和模型训练。对于训练好的模型,支持提交到生产环境,容器化部署应用。(尚处于规划中的功能)
  6. 使用Flume采集平台中的各个微服务的日志,存储到HBase中,在平台运维中心可以通过界面查看各个服务的实时日志。
  7. Kafka对于实时计算和消息中心,都是关键性必需的基础设施。
  8. 我们使用Zookeeper作为配置中心和分布式协调中心。在平台运维中心,开发有分布式“ZK配置中心"模块,可视化浏览、配置和管理ZK配置。
  9. MySQL和PostgreSQL用来存储系统数据。之所以会使用到两种类型的库,是因为笔者最初主要是使用MySQL数据库,后来在平台开发过程中,有几个模块需要使用模糊搜索功能,所以引入了PostgreSQL,配合bigm插件实现搜索。
  10. TDengine作为时序数据数据库使用,存储平台的各种度量数据。之所以使用它主要是因为项目中极有可能会遇到超大规模的时序数据,有可能是TB甚至PB级的,用国产关系数据库很容易遇到瓶颈。用时序数据库,不仅可以大大节约存储空间,而且查询效率也更好。TDengine作为一个国产开源时序数据库引入进来,作为一个试验型的数据库使用。为遇实际项目大规模应用做技术验证和准备。TDengine有开源版和商业版,如果项目经费允许,最好还是用商业版(但挺贵)存储业务数据,商业版有技术支持,能有更好的稳定性。
  11. Telegraf用来采集平台集群主机的度量数据,包括内存,CPU使用率、网络、磁盘使用率等度量。在平台中心开发有平台主机监控界面。

4. 各模块一览

未完待续

上一篇下一篇

猜你喜欢

热点阅读