开源实时数仓的构建

设计计思路

基本思路

        开源数据平台的设计思路是通过 Flink SQL Batch、StartRocks SQL 、StartRocks物化视图 的能力实现一个离线任务的开发;使用 DolphinScheduler 进行离线工作流编排和调度;通过 Flink CDC 和 Flink SQL 实现流处理能力,进行实时任务的开发;选择 StartRocks 作为实时数据仓库来写入数据并进行 OLAP 查询,提供数据供魔方进行分析及展示;通过 Dinky 来提供一个完整的任务开发运维的平台能力,满足常见的企业数据平台需求,

技术介绍

StartRocks

StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。

充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果,在业界实践的基础上,进一步改进优化、升级架构,并增添了众多全新功能,形成了全新的企业级产品。采用了全面向量化引擎,并配备全新设计的 CBO (Cost Based Optimizer) 优化器,查询速度(尤其是多表关联查询)远超同类产品。

支持多种数据模型(明细模型、聚合模型、更新模型),多种导入方式(批量和实时),可整合和接入多种现有系统(Spark、Flink、Hive、 ElasticSearch)。

  • 核心优势

    • MPP 分布式执行框架

    • 全面向量化执行引擎

    • CBO 优化器

    • 可实时更新的列式存储引擎

      • StarRocks 能够支持秒级的导入延迟,提供准实时的服务能力。StarRocks 的存储引擎在数据导入时能够保证每一次操作的 ACID

      • StarRocks 存储引擎不仅能够提供高效的 Partial Update 操作,也能高效处理 Upsert 类操作。使用 Delete-and-insert 的实现方式

    • 智能的物化视图

      • StarRocks 支持用户使用物化视图materialized view)进行查询加速和数仓分层

      • 只要原始表数据发生变更,物化视图的更新也同步完成

    • 数据湖分析

Flink

Flink 是一个计算框架和分布式处理引擎,主要用于无边界与有边界数据流上进行有状态的计算,Flink 能在所有常见集群环境中运行,并且能以内存速度和任意规模进行计算。在企业应用中,Flink 常用于高效连接消息流,如 Kafka,各种数据库、文件系统等,可以实时加工处理、也支持批处理,最终将数据高效写入消息流、数据库、软件系统等。

  • 核心优势

    • 高吞吐量、低延迟、高性能;

    • 支持 Event Time 和乱序事件;

    • 支持 Exactly-Once 语义;

    • 支持多种流式窗口;

    • 自身的内存模型与管理;

    • Batch 与 Stream 在 SQL 层实现一体;

    • 丰富的 Connector。

Flink CDC

Flink CDC 是 Flink 的子项目,是 Flink 的一组原连接器,用于 CDC 从不同数据库接收/更改数据,Flink CDC 将 Debezium 集成为引擎,异步或数据更改,因此 Flink CDC 可以充分使用和发挥 Debezium 的能力,并且可以无缝对接 Flink 使用其 SQL API 和 DataStream API 的能力,最终写入各种数据源。

  • 核心优势

    • 简化实时数据集成:无须额外部署 Debezium、Canal、Kafka 等组件,运维成本大幅降低,链路稳定性提升。

    • 支持丰富的数据源:目前支持 MongoDB、Mysql、OceanBase、Oracle、Postgres、SQLServer、TiDB 数据源的 CDC。

    • 支持全量、增量订阅及自动切换:能进行全量与增量自动切换,支持 Exactly-once 语义,支持无锁并发读取,支持从检查点、保存点恢复, 断点续传,保证数据的准确性。

    • 无缝对接 Flink:无缝对接 Flink 生态,利用 Flink 众多 Source 及 Sink 能力,可发挥 Flink 双流、流维关联等能力。

    • 支持 FlinkSQL:支持 FlinkSQL 定义 Flink CDC 任务,进一步降低使用门槛与运维成本。

Dinky

Dinky 是基于 Apache Flink 二次开发的一款实时计算平台,主要为了更好地进行数据仓库和数据湖的建设与运维。Dinky 主要分为两大块,Data Studio 以及运维平台,数据开发方面主要支持 Flink SQL、Flink Jar 以及普通的 SQL 任务。

Dinky 平台是通过 Flink API、Flink Client、Yarn、K8s 等提交和管理 Flink 任务,全过程只需要在 Dinky 中开发 Flink SQL ,不需要进行编译打包,Flink 任务就可自动提交到各种环境的集群。它支持多种提交方式,包括 Local、Standalone、Yarn、K8s 等方式,此外还提供了平台的管理能力,比如数据源、集群、监控报警的能力。对外可以通过 Flink 连接器以及数据源连接扩展来对外部数据源进行数据处理及管理。

  • 核心优势

    • 多兼容:基于 Apache Flink 源码二次开发,兼容官方 1.11~1.15 版本源码,也兼容用户自己的分支改进版。支持官方及其他扩展的 SQL Connector,如 ChunJun。支持 FlinkCDC 官方的 CDC SQL Connector。

    • 无侵入:Spring Boot 轻应用快速部署,不需要在任何 Flink 集群修改源码或添加额外插件,无感知连接和监控 Flink 集群。如果要使用 Flink MetaStore、整库同步等功能,则需要在 Flink lib 中添加对应的依赖包。

    • 无依赖:只需要 Mysql 数据库与 JDK1.8 环境,不依赖任何其他中间件,如 zookeeper、hadoop 等。

    • 易用性:Flink 多种执行模式无感知切换,支持 Flink 多版本切换,自动托管实时任务、恢复点、报警等, 自定义各种配置,持久化管理的 Flink Catalog (即 Flink MetaStore)。

    • 增强式:兼容且增强官方 FlinkSQL 语法,如 SQL 表值聚合函数、全局变量、CDC 整库同步、执行环境、 语句合并、共享会话等。

    • 易扩展:源码采用 SPI 插件化及各种设计模式支持用户快速扩展新功能,如连接器、数据源、报警方式、 Flink Catalog、CDC 整库同步、自定义 FlinkSQL 语法等。

    • 沉浸式:提供专业的 DataStudio 功能,支持全屏开发、自动提示与补全、语法高亮、语句美化、语法校验、 调试预览结果、全局变量、MetaStore、字段级血缘分析、元数据查询、FlinkSQL 生成等功能。

    • 一站式:提供从 FlinkSQL 开发调试到上线下线的运维监控及 SQL 的查询执行能力,使数仓建设及数据治理 一体化。

    • 易二开:源码后端基于 Spring Boot 框架开发,前端基于 React (Ant Design Pro) 开发,及其易扩展的设计, 易于企业进行定制化功能开发或集成到已有的开源或自建数据平台

整体架构如下

核心

  • Flink CDC 作为 CDC 技术;
  • Flink SQL 流处理能力;
  • Dinky 整库同步能力;
  • StartRocks 提供 OLAP 查询能力,上游通过实时写入,StartRocks 数据查询也具备了一定的实时性;
  • Dinky 在实时数据的开发上提供了监控和报警的能力,当任务触发异常或者是完成的时候,可以通过钉钉或邮箱等进行一个报警通知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457762.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 相对布局(RelativeContainer)

1. HarmonyOS 相对布局(RelativeContainer) 文档中心:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-layout-development-relative-layout-V5   RelativeContainer为采用相对布局的容器,支持容器内部的子元素设…

【C++】—— 模板进阶

【C】—— 模板进阶 1 非类型模板参数1.1 什么是非类型模板参数1.2 非类型模板参数对比宏的优势1.3 array 简单了解 2 模板的特化2.1 引子2.2 函数模板特化2.3 函数模板特化的坑2.4 类模板的特化2.4.1 全特化2.4.2 偏特化(半特化)2.4.3 选择2.4.4 偏特化…

英伟达GPU算力【自用】

GPU(图形处理单元)算力的提升是驱动当代科技革命的核心力量之一,尤其在人工智能、深度学习、科学计算和超级计算机领域展现出了前所未有的影响力。2024年的GPU技术发展,不仅体现在游戏和图形处理的传统优势上,更在跨行…

unity项目导出安卓工程后,在AndroidStudio打包报错:unityLibrary:BuildIl2CppTask‘.

下面这个是我在unity开发者社区提问后,他们回答得: 解决方案:我这边按照这几个方案检查了下,NDK和JDK都没问题,最后重启电脑才解决的,应该是文件被锁定了,我用的windows系统的。 验证&#xff…

书生第四期作业:L0G1000 任务作业

永不止步,空杯心态,从零开始,复习一下,争取完成全部任务 SSH登录 PowerShell命令行登录成功 VScode SSH登录成功 进入root文件夹 闯关任务:映射运行hello_world.py 可选任务1:linux命令行基本命令过一边 …

【WPF】中Dispatcher的DispatcherPriority参数使用

在 WPF 中,DispatcherPriority 参数用于指定通过 Dispatcher 调度的操作的执行优先级。加入 DispatcherPriority 参数的情况通常取决于你希望操作何时以及如何被执行。 1.Dispatcher的DispatcherPriority参数使用 以下是几种情况和示例说明: 1.1 需要…

C++——String类讲解

一. 为什么学习string类? C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列 的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需…

【C语言刷力扣】1768.交替合并字符串

题目: 解题思路: 将 word1 和 word2 元素依次添加至 ans 的后面。 时间复杂度: , n是word1的长度 m是word2的长度 空间复杂度: char* mergeAlternately(char* word1, char* word2) {int len1 strlen(word1);in…

009:屏幕录制软件FastStoneCapture9.5安装教程

摘要:本文详细介绍屏幕录制软件FastStoneCapture9.5的安装流程。 一、软件介绍 FastStone Capture是一款集屏幕捕获、编辑、注释与分享于一体的高性能工具,支持多种截图方式、高质量的图像输出以及便捷的录屏功能,适用于教育培训、工作辅助和…

代码随想录算法训练营第46期Day37,38,39,41

这几天晚上看比赛,就把刷题耽误了。还好是开新章节,前面的题都比较简单。 然后周天做完了又忘记发了 动态规划 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数 Day37前两道题太简单…

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南 本文记录了将旧笔记本电脑 T480 拆机屏幕改装为便携式显示器的全过程。作者在决定升级设备后,选择通过 DIY 方式利用原有的屏幕资源。文章详细介绍了屏幕驱动板的安装、螺丝孔的剪裁、排线连接及固定的步…

vue面试题+wx-open-launch-app开放标签唤醒app方法

vue面试题 核心原理部分 mvc mvvm和mvp的区别? MVVM 就是 Model-View-ViewModel 的缩写,MVVM 将视图和业务逻辑分开。 View:视图层,Model 数据模型,而 ViewModel 是把两者建立通信的桥梁。 在 MVVM 框架下&#…

基于Spring Boot的装饰工程管理系统源码(springboot)

项目简介 基于Spring Boot的装饰工程管理系统实现了以下功能: 系统可以实现合同信息管理,合同报价管理,客户管理,立项项目管理,公告信息管理,员工管理,预算报价管理,装饰材料总计划…

react18中的合成事件与浏览器中的原生事件

React 通过将事件 normalize 以让他们在不同浏览器中拥有一致的属性。 合成事件 SyntheticEvent 实例将被传递给你的事件处理函数,它是浏览器的原生事件的跨浏览器包装器。除兼容所有浏览器外,它还拥有和浏览器原生事件相同的接口,包括 stopP…

Postgresql 配置数据库表添加主键自增id

#1024程序员节|征文# 在 PostgreSQL 数据库中,如果你想创建一个自增的 ID 字段,通常会使用序列(sequence)配合默认值或者使用带有自动递增特性的 SERIAL 类型。以下是两种常见的方法来实现自增 ID: 使用 …

type C 引脚定义

type C 引脚定义 11 22 Type-C接口封装 Type-C接口封装包括:24Pin Type-C、16Pin Type-C、12Pin Type-C、6Pin Type-C Type-C引脚功能

数据结构与算法-21算法专项(中文分词)(END)

中文分词 搜索引擎是如何理解我们的搜索语句的? mysql中使用 【like “%中国%”】,这样的使用方案 缺点1:mysql索引会失效缺点2:不能模糊,比如我搜湖南省 就搜不到湖南相关的 1 trie树 Trie树,又称前缀树…

群控系统服务端开发模式-应用开发-业务架构逻辑开发API准备工作

安装与仓库已经调整完毕,现在开发业务架构逻辑,其次再开发功能逻辑。业务架构逻辑开发与功能逻辑开发不是一回事,一定要明白。业务架构指的是做某一件事或是某一种类型的事的逻辑,在互联网web应用中通常指一套系统的外在逻辑&…

「Qt Widget中文示例指南」如何实现半透明背景?

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将为大家展示如…

android openGL ES详解——缓冲区VBO/VAO/EBO/FBO/离屏渲染

目录 一、缓冲区对象概念 二、分类 三、顶点缓冲区对象VBO 1、概念 2、为什么使用VBO 3、如何使用VBO 生成缓冲区对象 绑定缓冲区对象 输入缓冲区数据 更新缓冲区中的数据 删除缓冲区 4、VBO应用 四、顶点数组对象VAO 1、概念 2、为什么使用VAO 3、如何使用VAO…