KUDU(一)kudu概述
文章目录
- 概述
- 使用场景
- 对比其他存储
- Kudu基本架构
- Kudu中的相关概念和机制
概述
Kudu是一个分布式列式存储引擎/系统,由Cloudera开源后捐献给Apache基金会很快成为顶级项目。用于对大规模数据快速读写的同时进行快速分析
官网
https://kudu.apache.org/
Kudu运行在一般的商用硬件上,支持水平扩展和高可用,集HDFS的顺序读和HBase的随机读于一身,同时具备高性能的随机写,以及很强大的可用性(单行事务,一致性协议),支持与Impala/spark计算引擎。
数据形态 | 存储 | 场景 | 局限性 |
---|---|---|---|
静态数据 | HDFS(Parquet)+Hive/Impala | 高吞吐离线大数据分析 | 数据无法实现随机读写 |
动态数据 | HBase/Cassandra 作为存储 | 大数据随机读写 | 不适合高吞吐大数据离线分析 |
造成问题
1.数据过度冗余,数据需要存储多份以支撑多个应用,这样造成了存储等资源的浪费
2.架构复杂导致开发、运维、测试成本高,同时维护多套存储系统,架构复杂,开发、运维、测试成本相对较高
3. 数据不一致容易误解,多套数据由于程序bug或者其他原因很容易出现数据不一致的情况,往往会造成业务方的误解
为了解决上述问题业界做了很多尝试,例如HBase+Hive整合
Kudu 是一个折中的产品,它平衡了随机读写和批量分析的性能,当然Kudu身上还有很多概念或者标签,有分布式文件系统(好比HDFS),有一致性算法(好比Zookeeper),有Table(好比Hive Table),有Tablet(好比Hive Table Partition),有列式存储(好比Parquet),有顺序和随机读取(好比HBase),所以看起来kudu是一个轻量级的 HDFS +Zookeeper + Hive + Parquet + HBase,除此之外,kudu还有自己的特点,快速写入+读取,使得
kudu+impala非常适合OLAP场景,尤其是Time-series场景
使用场景
1.实时数据更新
2.时间序列相关的应用(例如APM),海量历史数据查询(数据顺序扫描),必须非常快地返回关于单个实体的细粒度查询(随机读)。
3.实时预测模型的应用(机器学习),支持根据所有历史数据周期地更新模型。
对比其他存储
HTAP:类比OLAP,kudu可以与hive,impala,sparkSQL等OLAP SQL查询引擎结合
类比OLTP,kudu可以根据主键快速检索,实现对表分析查询连续不断写入数据
存储 | 大规模数据扫描(分析场景) | 随机读写 |
---|---|---|
HDFS | 全表扫描 | 不擅长随机读,不支持随机写 |
HBase | 可以支持,性能差 | 随机读写,列式存储 |
Kudu | 比hbase更擅长大规模数据扫描.接近HDFS上Parquet性能 | 擅长随机读写 |
Kudu基本架构
Kudu是典型的主从架构。一个Kudu集群由主节点即Master和若干个从节点即
Tablet Server组成。Master负责管理集群的元数据(类似于HBase Master),Tablet Server负责数据存储(类似HBase的RegionServer)。在生产环境,一般部署多个Master实现高可用(奇数个、典型的是3个),Tablet Server一般也是奇数个。
基本术语
Table(表)
Kudu中Table(表)的概念跟其他关系型数据库一样,table是数据存储在 Kudu 的位置。表具有schema(表结构)和全局有序的primary key(主键)。table被水平分成很多段,每个段称为Tablet。
Tablet
一个tablet 是 一张表table 连续的segment(片段),类似于HBase的region 或关系型数据库
partition(分区)。每个tablet存储着一定连续range的数据(key),且tablet两两间的range不会重叠。一张表的所有tablet包含了这张表的所有key空间。tablet 会冗余存储。放置到多个 tablet server上,并且在任何给定的时间点,其中一个副本被认为是leader tablet,其余的被认之为follower tablet。每个tablet都可以进行数据的读请求,但只有Leader tablet负责写数据请求
Tablet Server
Tablet server是Kudu集群中的从节点,负责数据存储,并提供数据读写服务。一个 Tablet server 存储了table表的tablet,向kudu client 提供读取数据服务。对于给定的tablet,一个tablet server 充当 leader,其他 tablet server 充当该 tablet 的 follower 副本。只有 leader服务写请求,然而 leader 或 followers 为每个服务提供读请求 。一个 tablet server可以服务多个 tablets ,并且一个 tablet 可以被多个 tablet servers 服务着。
Master
集群中的主节点,负责集群管理、元数据管理等功能,保持跟踪所有的tablets、tablet servers、catalog tables(目录表)和其它与集群相关的,metadata。在给定的时间点,只能有一个起作用的master(也就是 leader)
如果当前的leader消失,则选举出一个新的master,使用Raft协议来进行选举。master还协调客户端的metadata operations(元数据操作),例如,当创建新表时,客户端内部将请求发送给master。 master将新表的元数据写入catalog
table(目录表,元数据表),并协调在tablet server上创建tablet的过程。所有master的元数据都存储在一个tablet中,可以复制到所有其他候选的master。tablet server以设定的间隔向master发出心跳(默认值为每秒一次)。
Raft Consensus Algorithm
Kudu 使用 Raft consensus algorithm 作为确保常规 tablet 和 master 数据的容错性和一致性的手段。通过 Raft协议,tablet 的多个副本选举出 leader,它负责接受请求和复制数据写入到其他
follower副本。一旦写入的数据在大多数副本中持久化后,就会向客户确认。给定的一组N副本(通常为 3 或 5 个)能够接受最多(N - 1)/2 错误的副本的写入。
Catalog Table(目录表)
catalog table是Kudu 的元数据表。它存储有关tables和tablets的信息.catalog table(目录表)不能被直接读写,它只能通过客户端 API中公开的元数据操作访问。
catalog table存储以下两类元数据:
1、Tables:table schemas 表结构,locations 位置,states 状态
2、Tablets:现有tablet 的列表,每个 tablet 的副本所在哪些tablet server,tablet的当前状态以及开始和结束的keys(键)。
Kudu中的相关概念和机制
主键
类比关系型数据库的主键,Kudu基于主键重组和索引数据,没有二级键,没有二级索引,影响到数据存储在哪台服务器上,因此主键设计不好影响查询性能,通常还会导致热点问题,即大多数读或者写请求落在一台服务器上
分区
范围分区
哈希分区
多级分区(范围+哈希)
KUDU(一)kudu概述相关推荐
- [Kudu基础]--Kudu+Impala介绍 | 微店数据科学团队博客
感谢原文作者:https://juejin.im/entry/5a72d3d1f265da3e4d730b37 Kudu+Impala介绍 概述 Kudu和Impala均是Cloudera贡献给Apa ...
- KUDU(三)kudu的模式设计
文章目录 基于HTAP方式 列设计 Decimal类型 列编码 列压缩 主键设计 主键索引 时间戳主键回填问题 分区设计 范围分区 哈希分区 多级分区 修剪分区 分区案例 模式变更 局限性 总结 基于 ...
- KUDU(二)kudu架构设计
文章目录 架构设计 原理 table与schema Kudu存储模型 RowSet组成: tablet发现过程 架构设计 kudu是典型的主从架构,主Master:管理集群,管理元数据 从:table ...
- KUDU和IMPALA的结合使用
Kudu 与 Apache Impala紧密集成,允许使用 Impala 的 SQL 语法从 Kudu tablets 插入,查询,更新和删除数据.此外,还可以用 JDBC 或 ODBC, Impal ...
- Apache Kudu 与 Impala Shell 的结合使用文档(创建表、删、改、查)
Kudu与Apache Impala紧密集成,允许您在Impala使用Impala的SQL语法从Kudu去做 插入,查询,更新和删除数据,作为使用Kudu API 构建自定义Kudu应用程序的替代方法 ...
- kudu学习资料总结
1 , kudu 是什么 ,为什么要用kudu 2 kudu 的基本架构,概念和术语 3 kudu 的表的schema文件改如何设计 4 Kudu的java操作代码, 5 ...
- Kudu+Impala介绍
概述 Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目.Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性使得其理论上能够同时兼顾OL ...
- 实时数仓:基于 Flink CDC 实现 Oracle 数据实时更新到 Kudu
作者:于乐,腾讯 CSIG 工程师 解决方案描述 概述 Flink CDC 于 2021 年 11 月 15 日发布了最新版本 2.1,该版本通过引入内置 Debezium 组件,增加了对 Oracl ...
- Kudu command tools
为什么80%的码农都做不了架构师?>>> 介绍 kudu集群部署完毕后,如何管理kudu集群?官方提供了kudu command tool工具来管理kudu集群,通过kudu ...
最新文章
- 中山学院计算机学院家长座谈会,计算机科学与技术学院举办校友座谈会
- iview-admin webpack打包总结的几个问题
- access字段属性设置下拉列表_可嵌入您系统的.NET 报表控件ActiveReports:带状列表组件...
- HarmonyOS之数据管理·分布式文件服务的应用
- SAP Spartacus B2B功能,只渲染BodyContent position里的UI
- java拆分单元格_Java 拆分Excel单元格数据为多列
- 探究foreach对于迭代变量的封装性的研究
- 被判赔联想525万,常程方回应:提起诉讼;百度自动驾驶出租车在京全面开放;VS Code 1.50版发布|极客头条
- C语言中文件初始化,C语言版GetPrivateProfileString()函数,从初始化文件中指定的条目取得字串...
- python目录操作_Python 简明教程 --- 25,Python 目录操作
- R语言包下载(转载)
- JDBC在Java Web中的应用——分页查询
- 计算语言学和自然语言信息处理研究和应用综述(一)
- vue数组转对象、JSON数据处理
- https://github.com/liuyi01/kubernetes-starterhttps://github.com/liuyi01/kubernetes-starter
- 沃达丰看淡Sigfox/LoRa先行优势:NB-IoT才是运营商的未来
- 【山无遮,海无拦】LeetCode题集 线性枚举之最值算法
- 【日常踩坑】使用空字符串ciphertext[i]来赋值报错
- css设置兄弟元素样式-兄弟选择器
- 关于Zoom连不了,明明别人可以连接,却提示会议号不存在
热门文章
- CentOS 7系统中查看网卡信息
- 【设计模式--->创建型模式】叩心自问 :工厂设计模式(简单工厂设计模式,工厂方法模式,抽象工厂方法)
- 计算机查看硬件win10,win10查看硬件配置_win10查看硬件详细配置
- 《牛津*书虫》系列书籍
- Java多线程-新特征-阻塞队列ArrayBlockingQueue
- 卡卡助手导致OE故障,致使邮件丢失!
- linux命令查看删除哪些文件,linux删除文件除命令有哪些
- Cisco 3750 三层交换机配置
- 新倩女幽魂响应服务器超时,倩女幽魂排队、掉线、鬼服解决方案
- 协程(二):协程的应用