【Apache Pinot】Controller、Broker 和 Server 的概念和工作流程

news2024/11/28 10:33:55

背景

笔者最近一段时间使用 Apache Pinot 比较多,发现目前国内使用 Pinot 的很少,所以跟他相关的资料也比较少,本人在扩容,升级,部署,查询等方面操作有些许经验,知道其中有很多细节需要注意和规避,所以打算开个坑来写一下这块相关的实践内容和注意事项,方便自己回溯也方便使用Pinot 的人参考。 顺便以此来回馈 Pinot 社区对我很多的帮助,依稀记得 Pinot 作者之一 fuxiang 在国外跟我用腾讯会议沟通交流为什么升级 Controller 升级不上去的原因,非常感谢。

缘分

从国外空降了一个 Linkedin 的领导,或许跟他的职业经历有关,也或许跟他的爱好有关。他列出了使用 Pinot 的好处和使用 Clickhouse 的坏处,一番不算激烈的讨论,最终还是引入了 Pinot 用来做后续底层基础。

数据比对

要素/用法及其易用性ClickHousePinot
kafka流数据输入支持支持
Join支持只能LookUp
cluster可伸缩需要手动更改权值以让数据写入新节点,均衡后,再次修改权值以维护均衡每增加一个节点到cluster,在控制台配置新节点,触发rebalance,pinot会自动调节所有表的数据分布
监控Prometheus + GrafanaPrometheus + Grafana
维护随着cluster的扩容,表的定义增加,维护成本越来越重维护成本基本稳定

概念

单表几万几十万的qps,那种需要多一点broker,不然就还是堆server

笔者在这个章节主要核心是简单介绍一下 Pinot 有哪些必要的组件。
在这里插入图片描述
抄了一下官方的图,这里可以看到几个拆的比较开的组件,分别是 Controller,Broker 和 Server。

从图中我们可以看出 Controller 里面有一个 Helix,Broker 是接受 Queries 并且在请求到 Server, MINION 是一个比较特殊的块块,是新版本的一个功能,暂不过多介绍。然后 Server 里其实是对应的 Table,Table是有N个segments组成。

Controller

Controller 顾名思义就是控制,核心还是各种 metadata 的管理。他主要是通过 Helix 的组件来做到强一致性。 Helix 是基于 ZK 的一个 Apache 开源项目。看官方介绍,他其实一个通用集群管理框架,用于自动管理托管在节点集群上的分区、复制和分布式资源。面对节点故障和恢复、集群扩展和重新配置,Helix 会自动重新分配资源。

Broker

简单点说是接受并解析用户打过来的查询,通过某种方式定位到需要查询到 Server,并且把数据打过去。

Server

存储数据,索引等信息的地方。Server 里的 Data 目录有两个文件,一个是 index,一个是 segment,其实主要的一些信息都是在 index 里面。
在这里插入图片描述

工作流程

上面就简单介绍了组件,那么他们之间比较高层级的工作流程如下

  1. 用户通过不同的平台提交查询到 Pinot
  2. Broker 接收到 Query,对查询会做解析,生成对应的查询计划,他会根据 Controller 里面的配置信息知道需要查询哪些 Segment 和哪些 Server 有这些Segment。
  3. Broker 会生成对应 N 个查询并行去查询 Server,Server 会基于本地的 Index 等其他数据结构来读取对应的 Segment 并且把部分结果计算好了返回给Broker
  4. Broker 最终汇总所有 Server 返回回来的结果并且根据对应的逻辑去做后处理,包含不限于排序,聚合等行为。

总结

根据整体流程,我们大概可以知道每个节点分别的职责是什么,以及他们内部是如何工作的。后面会开内容去详细讲解一下 Controller,Server 和 Broker 内部的功能和细节。简单说的话涉及到升级,扩容,查询超时,修改表结构,修改表数据等内容。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

北邮22信通:实验七 三角波-方波(锯齿波-矩形波)发生器实验报告(着急验收的同学先看看,后续细节正在赶来中)

北邮22信通一枚~ 持续更新模电实验讲解 关注作者,解锁更多邮苑模电实验报告~ 获取更多文章,请访问专栏: 北邮22信通——电子电路_青山如墨雨如画的博客-CSDN博客 实验七 三角波-方波(锯齿波-矩形波)发生器实验…

数据结构——树的概念、二叉树的概念

文章目录 引言1.树的概念1.1.树的其他相关概念 2.树的代码实现的结构2.1.树形结构的应用 3.二叉树的概念3.1.特殊二叉树的概念3.1.1.完全二叉树3.1.2.满二叉树 3.2.二叉树试题讲解3.2.1.试题一3.2.2.试题二3.2.3.试题三 4.二叉树的存储结构4.1.顺序结构存储4.2.链式结构存储 引…

重温经典:简读光干涉、衍射原理

如果您不是光学专业的,或者是文科生,那么您想到光的干涉和衍射第一反应应该是很多公式对不对?头好大是不是?好,那么今天我们就不用一个公式来重新解读光的干涉和衍射。 光,也叫电磁波,他的表现…

java并发编程:Java线程池详解

文章目录 为什么要用线程池线程池的原理ThreadPoolExecutor提供的构造方法ThreadPoolExecutor的策略线程池主要的任务处理流程ThreadPoolExecutor如何做到线程复用的? 四种常见的线程池newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduledTh…

web3.js获取导入

我们访问 https://github.com/ 我们搜索 web3.js 然后我们直接点击第一个进去 进入之后 往下拉 你会看到 它支持node项目的两种引入方式 这里 大家可以直接下载我的资源 https://download.csdn.net/download/weixin_45966674/87878737 下载好解压出来就会有一个 web3.min.js…

C#读写EM4205/4305/4469卡复制ID卡制做FDX-B动物标签源码

EM4305/EM4205卡是采用瑞士EM微电子公司工作频率为125kHz,具有读、写功能的非接触式RFID射频芯片,它具有功耗低、可提供多种数据传输速率和数据编码方法等特点,适合射频芯片ISO 11784/11785规范,该芯片被广泛应用于动物识别和跟踪…

《C++高级编程》读书笔记(五、六:面向对象设计设计可重用代码)

1、参考引用 C高级编程(第4版,C17标准)马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门,笔记链接如下 21天学通C读书笔记(文章链接汇总) 1. 过程化的思考方式 过程语言(例如 C)将…

玄奘文旅集团主办学习强企玄奘之路戈壁挑战赛在敦煌圆满完赛!

“学习改变命运,强企复兴中国”,2023年4月16日-20日,由玄奘文旅集团主办的“第23届26届学习强企玄奘之路戈壁挑战赛(联赛)”在千年古城敦煌圆满落幕! 这是商界各行业的一次跨界融合,也是疫情过…

感性了解一下互斥和信号量

一、互斥的四个概念 我们把大家都能看到的资源叫做:公共资源 a、互斥:任何一个时刻,都只允许一个执行流在进行共享资源的访问——加锁 b、我们把任何一个时刻,都只允许一个执行流进行访问的共享资源叫做临界资源 c、临界资源需…

【TA100】图形 2.4 传统经验光照模型详解

一、光照模型 ● 一种模拟自然光照过程的计算机模型 ● 本次课程可以这样理解:光线与物体表面的作用 ● 分类 ○ 基于物理的光照模型(PBR)(有可依据的公式) ○ 经验模型(进行了一些近似、模拟,…

【小呆的概率论学习笔记】正态分布的代数运算

文章目录 1. 正态分布简介1. 正态分布的数字特征2. 正态分布的代数运算a. 单随机变量的代数运算b. 两个正态分布随机变量的和c. 多个正态分布随机变量的线性组合 1. 正态分布简介 正态分布应该是概率论和数理统计中最重要的一类概率分布,最早的完整论述是由数学王子…

自用-华东师范大学硕士学位论文LATEX模板

文章目录 前言部分页面效果预览使用说明:毕业论文LaTeX模板1. 安装LaTeX发行版和TeX Studio:2. 下载毕业论文模板:3. 编辑论文内容:**标题和作者信息:****摘要和关键词:****章节内容:****图片插…

【Linux】-关于调试器gdb的介绍和使用

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录 前言一、Linux中的debug和release二、gdb的使用**1.进入调试****2.显示代码*…

配置SSH免密登陆

配置SSH免密登陆 1.生成公私密钥对1)检查是否已存在公私钥对2)生成公私钥对 2.上传公钥到服务器3.ssh-add(mac的坑点)4.使用配置文件连接 博主是MAC用户,文章参考知乎 1.生成公私密钥对 1)检查是否已存在…

Redis高性能设计之epoll和IO多路复用深度解析

一 多路复用 并发多客户端连接, 在多路复用之前最简单和典型的方案:同步阻塞网络IO模型 这种模型的特点就是用一个进程来处理一个网络连接(一个用户请求),比如一段典型的示例代码如下: //直接调用recv函数…

【Java】JAVASE面向对象知识点总结

面向对象 概念 现实生活: ​ 类:抽象的概念,把具有相同特征和操作的事物归为一类 ​ 先有实体,再有类的概念 代码世界: ​ 类:抽象的概念,把具有相同属性和方法的对象归为一类 ​ 编写顺序&…

epoll的LT与ET模式以及阻塞和非阻塞

文章目录 1、基本概念2、关于在socket和EPOLL中的阻塞与非阻塞3、几种IO模型的触发方式4、代码验证5、总结 1、基本概念 Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次…

Flask-蓝图

1、使用步骤&#xff1a; 创建蓝图 blue Blueprint("myblue01", __name__) 使用蓝图装饰视图函数 blue.route(/) def index():return index 将蓝图注册到app中 from appdemo_blueprint import blue app.register_blueprint(blue) 2、以包的形式使用蓝图 <…

Java007——Java注释学习

围绕以下3点介绍&#xff1a; 1、什么是Java注释&#xff1f; 2、Java注释的作用&#xff1f; 3、Java注释长什么样&#xff0c;以及怎么使用Java注释&#xff1f; 一、什么是Java注释&#xff1f; Java注释是在Java程序中用来描述代码的特殊语句。 注释被忽略并且不被编译器…

PyTorch 深度学习 || 专题六:PyTorch 数据的准备

PyTorch 数据的准备 1. 生成数据的准备工作 import torch import torch.utils.data as Data#准备建模数据 x torch.unsqueeze(torch.linspace(-1, 1, 500), dim1) # 生成列向量 y x.pow(3) # yx^3#设置超参数 batch_size 15 # 分块大小 torch.manual_seed(10) # 设置种子点…