首页 > 其他分享 >火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅲ)

火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅲ)

时间:2023-04-18 13:57:26浏览次数:52  
标签:insert 数据仓库 写入 V1.0 ByteHouse Query 执行 节点

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

 近日,《火山引擎云原生数据仓库 ByteHouse 技术白皮书》正式发布。白皮书简述了 ByteHouse 基于 ClickHouse 引擎的发展历程,首次详细展现 ByteHouse 的整体架构设计及自研核心技术,为云原生数据仓库发展,及企业数字化转型实战运用提供最新的参考和启迪。

以下为 ByteHouse 技术白皮书作业执行流程版块摘录。

 

技术白皮书(上)(中)精彩回顾:

https://xie.infoq.cn/article/5c9471c7adb58e4bb43b69c4d

https://xie.infoq.cn/article/086b4e706965a6bd81f6a6ff2

 

ByteHouse 作业执行流程

ByteHouse 中的作业按照响应优先级分为 3 大类:Read query、Write query 和 Background 的作业。不同类型的作业,按照前面所述,可以运行同一个工作节点上,也可以分离开来。

数据查询流程

服务节点负责响应和接受用户查询请求,并调度到相应的计算组中去执行,并回传结果给服务节点。各个计算节点执行完子查询之后, 很多时候会有相应计算结果要集中处理,如果希望这一层有计算组的隔离,务节点的部分功能例如聚合最终结果需要下放到计算组中的计算节点中去。

Read Query 模块交互图

Query 的执行过程:

  1. 用户提交 Query 到服务节点

  2. 从元数据服务获取需要的元数据信息,对 Query 进行 Parse,Planning,Optimize,生成执行计划

  3. 服务节点对 Query 进行调度

  4. 计算节点接收到 Query 子查询

  5. Query 从远程文件系统获取原始数据,并根据 Query 的执行计划在计算节点上执行,并发回计算结果给服务节点汇总。

数据写入流程

ByteHouse 实现了读写分离,有单独写入节点来执行写入请求,写入请求分为几类:insert values, insert infile, insert select,insert values 可能包含大量数据集,为避免网络传输开销直接由服务节点本地执行 insert 而无需转发给写入节点来执行。

Write Query 模块交互图

Query 的执行过程:

  1. 用户提交 Write Query 到服务节点

  2. 服务节点从元数据服务获取需要的元数据信息,对 Query 进行 parse,planning,optimize,生成执行计划,根据写入类型分为以下两种模式来执行:

    Local 模式:insert values 操作直接由服务节点跳转到步骤四直接执行

    分布式模式:对于 insert infile/select 模式直接将执行计划信息分发给一个写入节点执行

  3. 服务节点对写入请求根据调度策略选择合适的写入节点执行

  4. 写入节点从读取节点(insert select)或者外部存储(insert infile hdfs)读取数据流

  5. 写入节点写入数据到本地盘

  6. 写入节点 导出 本地盘到云存储

  7. 写入节点 更新元数据

后台任务

为了更好的查询性能,会有一些作业在后台对写入的数据进行更进一步的处理。ByteHouse 中主要包括如下 3 种后台任务。

  • Merge:将不同的 parts 文件按 Primary Key 做排序合并成一个大的 part 文件。

  • Checkpoint: 对表的任意更新,例如元数据的改变,数据字典等异步构建操作会产生新的增量数据文件,这部分新产生的增量和原有的数据文件会在后台合并成一个新的数据文件。

  • GC:空间回收,当数据文件中的垃圾空间超过一定阈值后,会触发后台作业回收空间.

点击链接,立即下载完整版白皮书

标签:insert,数据仓库,写入,V1.0,ByteHouse,Query,执行,节点
From: https://www.cnblogs.com/bytedata/p/17329305.html

相关文章

  • 什么是数据仓库
     定义数据仓库是一个用于存储和管理企业数据的集中式数据存储系统,用于支持企业决策和分析活动。它是一个专门的数据存储区域,用于将来自多个数据源的数据集成在一起,并通过预处理、转换和清洗等操作,将其转换为易于分析和查询的格式。通常,数据仓库采用面向主题的数据模型,即将同......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0(上)
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数据......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0(上)
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生......
  • hive 数据仓库分层
    1:为什么要分层 大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下图,在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解......
  • 【初赛】「阅读程序」题答v1.0
    「阅读程序」题答核心要义:是设法弄清程序的功能,每个题目的写作目的。一、方法1、直接模拟:一般适用于T1、T2中的递归题,计算题等没有算法的题。2、看出算法直接填:最佳方法。需要较多模板,但耗时少,准确率高。3、模拟几次后找规律:不知道算法时采用(大胆猜测,小心求证),适用性较广,且一般都对,......
  • 【初赛】「程序填空」题答v1.0
    「程序填空」题答核心要义:是算法基本功和对他人思想的理解。一、题型1、变量方面:定义变量的数据类型(声明);设定变量的初值(初始值);对变量的赋值(赋值);根据变量的辖域确定其是全局变量还是某个子程序的局部变量(作用域)。2、循环方面:定义循环变量;设定循环变量的初值和终值;在循环体中怎样引用......
  • ByteHouse MaterializedMySQL 增强优化
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群前言社区版ClickHouse推出了MaterializedMySQL数据库引擎,用于将MySQL中的表映射......
  • 超详细【入门精讲】数据仓库原理&实战 一步一步搭建数据仓库 内附相应实验代码和镜像
    超详细【入门精讲】数据仓库原理&实战一步一步搭建数据仓库内附相应实验代码和镜像数据和脚本感谢B站UP主哈喽鹏程!!!目录0.B站课程链接和搭建数据仓库资源下载1.环......
  • 数据仓库SQL代码规范
    1.命名规则:数据库、表、列、索引等名称应使用有意义、易于理解和记忆的命名方式。应使用小写字母和下划线,避免使用大写字母和特殊字符。应避免使用保留字和关键字作为名......
  • 基于 ByteHouse 构建实时数仓实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群随着数据的应用场景越来越丰富,企业对数据价值反馈到业务中的时效性要求也越来越高,......