Kudu(二)架构及开发

kudu可视化管理工具与kudu基础知识 kudu-plus kudu可视化工具 Kudu是为Apache Hadoop平台开发的列式数据库。Kudu拥有Hadoop生态系统应用程序的常见技术属性:它可以商用硬件上运行,可横向扩展,并支持高可用性操作。 kudu-plus是什么 kudu-plus是笔者开发开源可视化管理kudu的工具,由于kudu虽然是列式数据库,但是可以表达成关系数据库类似的表和字段等信息,某种情况下通过可视化管理更加... 阅读详情

前言:

官方文档:https://kudu.apache.org/releases/1.11.1/docs/known_issues.html

1.Kudu架构

        如上图,跟 HBase 类似,Kudu 是典型的主从架构。一个 Kudu 集群由主节点即 Master 和若干个从节点即 Tablet Server 组成。Master 负责管理集群的元数据(类似于 HBase 的 Master),TabletServer 负责数据存储(类似 HBase 的 RegionServer)。在生产环境,一般部署多个 Master 实现高可用(奇数个、典型的是 3 个),Tablet Server 一般也是奇数个。

1.1.核心术语

        除了 Master 和Tablet Server,Kudu 中还有很多术语,为便于理解统一盘点如下:

1.1.1.Table 表

        Kudu 中 Table(表)的概念跟其他关系型数据库一样,Table 是数据存储在 Kudu 的位置。表具有schema(表结构)和全局有序的primary key(主键)。table 被水平分成很多段,每个段称为Tablet。

        表(Table)是数据库中用来存储数据的对象,是有结构的数据集合。kudu 中的表具有 schema(纲要)和全局有序的 primary key(主键)。kudu 中一个table 会被水平分成多个被称之为 tablet 的片段。

1.1.2.Tablet

        一个 tablet 是 一张表 table 连续的 segment(片段),类似于 HBase 的 region 或关系型数据库partition(分区)。每个 tablet 存储着一定连续 range 的数据(key),且 tablet 两两间的 range 不会重叠。一张表的所有 tablet 包含了这张表的所有 key 空间。

        tablet 会冗余存储。放置到多个 tablet server上,并且在任何给定的时间点,其中一个副本被认为是leader tablet,其余的被认之为follower tablet。每个 tablet 都可以进行数据的读请求,但只有Leader tablet 负责写数据请求。

1.1.3.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 服务着。

                tablet server相当于HDFS DataNode跟HBase Region server的合体,它需要负责执行所有与数据相关的操作:存储、访问、编码、压缩、compaction和复制。与master相比它工作繁重,因此它可以水平扩展。

1.1.4. Master

        集群中的主节点,负责集群管理、元数据管理等功能。

        保持跟踪所有的 tablets、tablet servers、catalog tables(目录表)和其它与集群相关的 metadata。在给定的时间点,只能有一个起作用的master(也就是 leader)。

        如果当前的 leader 消失,则选举出一个新的 master,使用 Raft 协议来进行选举。master 还协调客户端的 metadata operations(元数据操作)。

        例如,当创建新表时,客户端内部将请求发送给 master。 master 将新表的元数据写入 catalogtable(目录表,元数据表),并协调在tablet server 上创建 tablet 的过程。

        所有 master 的元数据都存储在一个 tablet 中,可以复制到所有其他候选的 master。tablet server 以设定的间隔向 master 发出心跳(默认值为每秒一次)。

  • master不需要很大的存储,也不需要非常好的硬件
  • master应该配置多台,起码要拥有跟副本因子一样数量的master(--default_num_replicas=3)

1.1.5. Raft Consensus Algorithm

        Kudu 使用 Raft consensus algorithm 作为确保常规 tablet 和 master 数据的容错性和一致性的手段。通过 Raft 协议,tablet 的多个副本选举出 leader,它负责接受请求和复制数据写入到其他 follower 副本。一旦写入的数据在大多数副本中持久化后,就会向客户确认。给定的一组 N 副本(通常为 3 或 5个)能够接受最多 (N - 1)/2 错误的副本的写入。

1.1.6. 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(键)。

2.Kudu中的相关概念和机制

        作为分布式存储,一个至关重要的事情就是把负载分散到多个服务器上(读写负载/数据分布),让集群中的每个节点都充分的且尽量均衡的参与读写操作,会大幅提高整体吞吐和降低延迟。本节带着大家探讨一下Kudu通过什么机制实现数据最优分布。

2.1.主键

        Kudu 是有主键的,跟关系型数据库的主键是概念相通的。Kudu 基于主键来重组和索引数据,但是没有二级键、没有二级索引,数据存储到哪台服务器也跟主键密切相关。因此主键设计不好将直接影响查询性能,通常还会导致热点问题。

2.2.热点问题

        任何一个分布式系统(无论存储还是计算)都无法回避这个问题。所谓热点问题(hotspotting),就是在分布式系统中大多数读或者写请求落到一台或者几台服务器。

        热点问题多半是分区设计跟读写模式不匹配造成的,以车联网电池温度传感器上传数据为例:

因此要解决热点问题,必须考虑综合考虑具体业务在以下三方面的事情:

  1. 读操作模式(吞吐和延迟)
  2. 写操作模式(吞吐和延迟)
  3. 存储开销(压缩比)

2.3. 分区

Kudu目前支持三种分区方式:范围分区、哈希分区、多级分区

3.Kudu原理

3.1.table与schema

        Kudu 设计是面向结构化存储的,因此 Kudu 需要用户在建表时定义它的 Schema 信息,这些Schema信息包含:列定义(含类型),Primary Key定义(用户指定的若干个列的有序组合)。

        数据的唯一性,依赖于用户所提供的Primary Key中的Column组合的值的唯一性。Kudu提供了Alter命令来增删列,但位于Primary Key中的列是不允许删除的。从用户角度来看,Kudu是一种存储结构化数据表的存储系统。在一个Kudu集群中可以定义任意数 量table,每个table都需要预先定义好schema。每个table的列数是确定的,每一列都需要有名字 和类型,每个表中可以把其中一列或多列定义为主键。这么看来,Kudu更像关系型数据库,而不 是像HBase、Cassandra和MongoDB这些
NoSQL数据库。

        不过 Kudu 目前还不能像关系型数据一样支持二级索引,因此要想获取最佳查询性能Rowkey设计尤为关键。

        Kudu使用确定的列类型,而不是类似于NoSQL的“everything is byte”。带来好处:

  1. 确定的列类型使Kudu可以进行类型特有的编码,进一步提高压缩率,进而较少磁盘IO;
  2. 可以提供元数据给其他上层查询工具,因此更加方便与其他计算框架整合。

3.2.Kudu 存储模型

        Kudu自身的架构,部分借鉴了 Bigtable/HBase/Spanner 的设计思想。在作者列表中,有几位是HBase 社区的 Committer/PBC 成员,因此在学习 Kudu 的过程中能很深刻的感受到 HBase 对 Kudu设计的一些影响 。

        Kudu的底层数据文件的存储,未采用 HDFS 这样的较高抽象层次的分布式文件系统,而是自行开发了一套可基于Table/Tablet/Replica视图级别的底层存储系统。

这套实现基于如下的几个设计目标:

  1. 可提供快速的列式查询
  2. 可支持快速的随机更新可
  3. 提供更为稳定的查询性能保障

Kudu 的数据模型见下图:

说明:

  1. 一张table会分成若干个tablet,每个tablet包括MetaData元信息及若干个RowSet。
  2. RowSet包含一个MemRowSet及若干个DiskRowSet,DiskRowSet中包含一个BloomFile、Ad_hocIndex、BaseData、DeltaMem及若干个RedoFile和UndoFile(UndoFile一般情况下只有一个)。

RowSet组成:

组成说明
MemRowSet用于新数据insert及已在MemRowSet中的数据的更新,一个MemRowSet写满后会将数据刷到磁盘形成若干个DiskRowSet。默认是1G或者或者120S。
DiskRowSet用于老数据的变更,后台定期对DiskRowSet做compaction,以删除没用的数据及合并历史数据,减少查询过程中的IO开销。
BloomFile根据一个DiskRowSet中的key生成一个bloom filter,用于快速模糊定位某个key是否在DiskRowSet中。
AdhocIndex是主键的索引,用于定位key在DiskRowSet中的具体哪个偏移位置。
BaseData是MemRowSet flush下来的数据,按列存储,按主键有序。
UndoFile是基于BaseData之前时间的历史数据,通过在BaseData上apply UndoFile中的记录,可以获得历史数据。
RedoFile是基于BaseData之后时间的变更记录,通过在BaseData上apply RedoFile中的记录,可获得较新的数据。
DeltaMem用于DiskRowSet中数据的变更,先写到内存中,写满后flush到磁盘形成RedoFile。

MemRowSets与DiskRowSets的区别:

        如上图所示,MemRowSets可以对比理解成HBase中的MemStore,而DiskRowSets可理解成HBase中的HFile。

        MemRowSets中的数据被Flush到磁盘之后,形成DiskRowSets。DisRowSets中的数据,按照32MB大小为单位,按序划分为一个个的DiskRowSet。DiskRowSet中的数据按照Column进行组织,与Parquet类似。

        这是Kudu可支持一些分析性查询的基础。每一个Column的数据被存储在一个相邻的数据区域,而这个数据区域进一步被细分成一个个的小的Page单元,与HBaseFile中的Block类似,对每一个ColumnPage可采用一些Encoding算法,以及一些通用的Compression算法。既然可对ColumnPage可采用Encoding以及Compression算法,那么,对单条记录的更改就会比较困难了。

前面提到了Kudu可支持单条记录级别的更新/删除,是如何做到的?

        与HBase类似,也是通过增加一条新的记录来描述这次更新/删除操作的。DiskRowSet是不可修改了,那么Kudu要如何应对数据的更新呢?在Kudu中,把DiskRowSet分为了两部分:BaseData、DeltaStores。BaseData负责存储基础数据,DeltaStores负责存储BaseData中的变更数据。

        如上图所示,数据从MemRowSet刷到磁盘后就形成了一份DiskRowSet(只包含basedata),每份DiskRowSet在内存中都会有一个对应的DeltaMemStore,负责记录此DiskRowSet后续的数据变更(更新、删除)。DeltaMemStore内部维护一个B-树索引,映射到每个row_offset对应的数据变更。DeltaMemStore数据增长到一定程度后转化成二进制文件存储到磁盘,形成一个DeltaFile,随着basedata对应数据的不断变更,DeltaFile逐渐增长。

下图是DeltaFile生成过程的示意图:

        Delta数据部分应该包含REDO与UNDO两部分,这里的REDO与UNDO与关系型数据库中的REDO与UNDO日志类似(在关系型数据库中,REDO日志记录了更新后的数据,可以用来恢复尚未写入DataFile的已成功事务更新的数据。而UNDO日志用来记录事务更新之前的数据,可以用来在事务失败时进行回滚),但也存在一些细节上的差异:

  1. REDO Delta Files包含了Base Data自上一次被Flush/Compaction之后的变更值。REDO Delta Files按照Timestamp顺序排列。
  2. UNDO Delta Files包含了Base Data自上一次Flush/Compaction之前的变更值。这样才可以保障基于一个旧Timestamp的查询能够看到一个一致性视图。UNDO按照Timestamp倒序排列。

3.3.Tablet发现过程

        Kudu客户端无论在执行写入还是读取操作之前都会先从master获取tablet位置信息,这个过程叫做tablet发现。

        当创建Kudu客户端时,其会从主服务器上获取tablet位置信息,然后直接与服务于该tablet的服务器进行交谈。

        为了优化读取和写入路径,客户端将保留该信息的本地缓存,以防止他们在每个请求时需要查询主机的tablet位置信息。随着时间的推移,客户端的缓存可能会变得过时,并且当写入被发送到不再是tablet领导者的tablet服务器时,则将被拒绝。然后客户端将通过查询主服务器发现新领导者的位置来更新其缓存。

3.4.Kudu写流程

        当Client请求写数据时,先根据主键从Master中获取要访问的目标Tablets,然后到依次到对应的Tablet获取数据。

        因为KUDU表存在主键约束,所以需要进行主键是否已经存在的判断,这里就涉及到之前说的索引结构对读写的优化了。一个Tablet中存在很多个RowSets,为了提升性能,我们要尽可能地减少要扫描的RowSets数量。

        首先,我们先通过每个RowSet中记录的主键的(最大最小)范围,过滤掉一批不存在目标主键的RowSets,然后在根据RowSet中的布隆过滤器,过滤掉确定不存在目标主键的RowSets,最后再通过RowSets中的B-树索引,精确定位目标主键是否存在。

        如果主键已经存在,则报错(主键重复),否则就进行写数据(写MemRowSet)。

3.5.Kudu读流程

        数据读取过程大致如下:先根据要扫描数据的主键范围,定位到目标的Tablets,然后读取Tablets 中的RowSets。

        在读取每个RowSet时,先根据主键过滤要scan范围,然后加载范围内的BaseData,再找到对应的DeltaMemStores,应用所有变更,最后union上MemRowSet中的内容,返回数据给Client。

3.6.Kudu更新流程

        数据更新的核心是定位到待更新数据的位置,这块与写入的时候类似,就不展开了,等定位到具体位置后,然后将变更写到对应的DeltaMemStore 中。

4.Kudu相关开发案例

参考:https://github.com/apache/kudu/tree/master/examples

KUDU(三)kudu的模式设计 文章目录基于HTAP方式列设计Decimal类型列编码列压缩主键设计分区设计 基于HTAP方式 kudu是基于hbase-hdfs之间,满足高并发的随机读写,兼顾大规模分析处理,具有OLTP以及OLAP特征,因此是典型的HTAP(在线事务处理/在线分析处理混合模式) 早期 由于将OLTP以及OLAP拆分,事务性应用和分析型应用分开,但是分析型应用无法获取最新数据,OLTP横向扩展性不足,维护一套系统复杂度很高 2.Lambda架构 Lambda架构将工作负载分为实时层和批处理层,我们是用实施层检索和分析 阅读详情

相关推荐

大数据Kudu(二):Kudu架构

每隔一段时间,tablet中会定期对一些DiskRowSet做compaction操作,目的是对多个DiskRowSet进行重新排序,以此来使其更有序并减少diskRowSet的数量,同时在compaction的过程中会resolve掉DeltaStores当中的delete记录。Tablet存在副本机制,其中一个副本为leader tablet。随着时间推移,Kudu中的小文件会越来越多,主要包含各个DiskRowSet中的base data,还有每个base data对应的若干个DeltaFile。

Lansonli(蓝深李)的博客 2966

KUDU架构原理

基本概念 Table table 是数据存储在 Kudu 的位置,具有 schema 和全局有序的 primary key。table 被分成称为 tablets 的 segments。 Tablet 一个 tablet 是一张 table 连续的 segment,与其它数据存储引擎或关系型数据库中的 partition(分区)相似。给定的 tablet 冗余到多个 tablet 服务器上,并且在...

Sin_Geek成长の迹 3179

KUDU介绍及实践

2017第八届数据库技术大会DTCC,小米张震介绍KUDU及实践

Kudu设计原理初探

如何在一个系统中融合OLTP型随机读写能力与OLAP型分析能力,Kudu提供了优秀的设计思路。本文主要从Kudu的设计论文着手,结合与HBase的对比分析,来初步揭示Kudu的设计原理,部分设计在最新的Kudu版本中可能已经过时,但最初的设计思想依然值得借鉴。 1Kudu的设计初衷 在介绍Kudu是什么之前,还是先简单的说一下现存系统针对结构化数据存储与查询的一些痛点问题,结构化数据的存储,...

大隐隐于野 627

AI 与新媒体

AI重构新媒体生态:从生产到分发的全链路变革 AI正成为新媒体领域的核心基础设施,通过五大能力重塑内容产业:自动化生产(AIGC写作/制图/剪辑效率提升5-10倍)、智能分发(算法精准匹配用户)、数据洞察(实时舆情分析)、风险管控(审核效率提升12倍)和运营优化(A/B测试自动化)。这推动行业从"人找内容"转向"内容找人",制作成本下降90%的同时,也带来同质化加剧、版权争议和职业重构等挑战。当前阶段,人机协同成为主流——AI处理标准化生产,人类专注创意与价值观把控。

eastyuxiao的专栏 381

Arduino蜂鸣器播放《Astronomia》:从乐谱到代码的嵌入式音乐实现

在嵌入式系统开发中,通过编程控制硬件执行特定任务是核心基础。其原理在于利用微控制器生成精确的时序和频率信号,驱动执行器(如蜂鸣器、电机)完成预定动作。这项技术的价值在于实现了软件逻辑与物理世界的直接交互,是物联网设备、智能硬件开发的基石。常见的应用场景包括电子玩具的音效生成、报警器设计以及交互式艺术装置。本文以热门歌曲《Astronomia》的播放为例,具体展示了如何运用Arduino的`tone()`函数和数组数据结构,将抽象的乐谱转化为可执行的频率与延时控制代码,完整呈现了从**核心硬件解析**到**软

weixin_29796279的博客 348

Kudu简介4

传统大数据应用场景分析 在真实的场景中,边界可能没有那么清晰,面对既需要随机读写,又需要批量分析的大数据场景,该如何选择呢?这个场景中,单种存储引擎无法满足业务需求,大部分公司经常通过多种大数据工具组合来满足这一需求,一个常见的方案是: 该方案可以满足数据更新+随机查询+批量分析的业务需求。 如上图所示,数据实时写入 HBase,实时的数据更新也在 HBase 完成,为了应对 OL...

justlpf的专栏 939

ArcGIS高效拆分shp文件:无需依赖属性表的实用技巧

本文针对ArcGIS中shp文件因属性表缺失而难以拆分的问题,详细介绍了无需依赖属性表的实用技巧。核心是使用“拆分多部件要素”工具,直接根据图形结构将多个独立但被合并的部件拆分为单个要素,并提供了ArcGIS Pro和ArcMap的操作流程、关键注意事项及拆分后的属性处理方案。

n2o3p4的博客 379

Kudu架构概述和使用场景

架构概述 下图显示了一个具有三个 master 和多个 tablet server 的 Kudu 集群,每个服务器都支持多个 tablet。它说明了如何使用 Raft 共识来允许 master 和 tablet server 的 leader 和 follow。此外,tablet server 可以成为某些 tablet 的 leader,也可以是其他 tablet 的 follower。lea...

justlpf的专栏 1375

FFT去除频率分量的完整流程与数学分析

重叠与窗口:确保块间无缝过渡,避免幅度跳变;实时缓冲:处理速度需快于数据输入速度,避免断流;DAC的平滑角色:通过数模转换和滤波,将离散样点还原为连续波形。通过这种分段处理+重叠拼接的方法,即使FFT本身处理的是离散数据块,最终DAC输出仍能保持信号的时间连续性。以下是完整的数学分析过程和代码逻辑,演示如何通过FFT去除特定频率成分,并通过去窗技术恢复信号。信号加窗。

林愿留的博客 1611

CVE-2017-7921漏洞深度剖析:从身份验证绕过到实战复现与防御

身份验证是Web应用安全的核心防线,其逻辑缺陷可能导致严重的未授权访问。身份验证绕过漏洞的原理在于,应用程序对特定请求路径或API接口的访问控制策略存在疏漏,未能执行有效的会话或令牌校验。这类漏洞的技术价值在于,攻击者无需凭证即可直接访问受保护的后端资源,从而获取敏感信息或执行未授权操作,对系统机密性、完整性构成直接威胁。在物联网和安防监控领域,大量网络摄像头、录像机等设备暴露于公网,其Web管理界面便成为常见攻击面。本文聚焦于安防设备中一个经典的CVE-2017-7921身份验证绕过漏洞,通过剖析其技术原

WGH100817的博客 471

Kudu-基本架构、模式设计、Docker部署

Kudu是一个分布式列式存储引擎/系统,由Cloudera开源后捐献给Apache基金会很快成为顶级项目。用于对大规模数据快速读写的同时进行快速分析。官网:https://kudu.apache.org/Kudu运行在一般的商用硬件上,支持水平扩展和高可用,集HDFS的顺序读和HBase的随机读于一身,同时具备高性能的随机写,以及很强大的可用性(单行事务,一致性协议),支持与Impala/spark计算引擎。

迷雾总会解 2969

PCL ——LevenbergMarquardt非线性最小二乘法拟合圆柱(C++详细过程版)

使用C++详细过程版实现的LevenbergMarquardt非线性最小二乘法拟合圆柱

点云侠的博客 607

KUDU(二)kudu架构设计

文章目录架构设计原理table与schemaKudu存储模型RowSet组成:tablet发现过程 架构设计 kudu是典型的主从架构,主Master:管理集群,管理元数据 从:table server 负责最终数据存储对外提供数据读写能力,里面存储的是一个个tablet master:特殊的CataLog Table ,只有一个tablet,且在内存中有完整的缓存,缓存catalog table数据主要是为了提高性能,因为客户端需要通过它定位数据位置 1.master不需要较大存储,不需要很好的硬件 2.

张不帅 1123

ComfyUI 汉化教程(中文界面)

如果你对翻译的结果不满意,还可以进行修改。首先,进入目录,可以看到该目录中有很多 JSON 文件:打开 JSON 文件,找到要修改的内容,修改对应的Value值即可:最后,重启 ComfyUI 即可。

水滴的博客 1万+

【AUTOSAR实战】:CAN发送邮箱忙导致报文发送丢帧的问题调试

本文档主要讨论了CAN总线通信中可能出现的TC377传输错误的分析和解决方案。文章提供了如何通过检查CAN传输和接收过程、识别传输缓冲区的类型和状态以及选择适当的内存保护功能来检测和解决此类错误的见解。经过多次尝试和分析,得出的结论是,修改CANIF缓冲的尺寸并重新分配报文给各个buffer并不能解决问题。此外,发送中断被抢占可能导致报文无法发送,最终也将此因素排除。本文档还提到了一些可能导致发送流程调度出现问题的因素,例如CANIF中报文引用Buffer不合理。

weixin_46481662的博客 3141

Kudu 的架构概述

Kudu 的架构概述 体系结构概述 下图显示了一个Kudu集群,其中有三个主机和多个 tablet servers,每个tablet server 都服务于多个tablet Kudu 的特点 特点一:主从架构 主为master,从为 tablet server,通常为三主多从 特点二:高可用性(High availability) Tablet server和Master...

Sen的博客 1514

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

kudu架构

特点:   High availability(高可用性)。Tablet server 和 Master 使用 Raft Consensus Algorithm 来保证节点的高可用,确保只要有一半以上的副本可用,该 tablet 便可用于读写。例如,如果3个副本中有2个或5个副本中的3个可用,则该tablet可用。即使在 leader tablet 出现故障的情况下,读取功能也可以通过 read...

7839

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

kudu 的基本架构 、存储结构与读写原理

kudu 的基本架构与存储结构 1. 基本架构 TMaster and TServer TMaster 主要用来管理元数据,即tablet 和 表的基本信息,监听TServer的状态,TMaster之间通过raft协议进行数据同步 TServer 主要用来管理tablet 。tablet 负责这一张表的某块内容的读写,接受其他tablet leader 传来的同步信息,至于什么是tablet,...

Apache_Jerry的博客 3903

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

KUDU(一)kudu概述

文章目录概述使用场景对比其他存储 概述 Kudu是一个分布式列式存储引擎/系统,由Cloudera开源后捐献给Apache基金会很快成为顶级项目。用于对大规模数据快速读写的同时进行快速分析 官网 https://kudu.apache.org/ Kudu运行在一般的商用硬件上,支持水平扩展和高可用,集HDFS的顺序读和HBase的随机读于一身,同时具备高性能的随机写,以及很强大的可用性(单行事务,一致性协议),支持与Impala/spark计算引擎。 数据形态 存储 场景 局限性 静态数

张不帅 6863

创建kudu表_kudu详细架构与入门使用

1、 kudu简介1.1、kudu是什么?简单来说:dudu是一个与hbase类似的列式存储分布式数据库。官方给kudu的定位是:在更新更及时的基础上实现更快的数据分析1.2、为什么需要kudu?1.2.1、hdfs与hbase数据存储的缺点目前数据存储有了HDFS与hbase,为什么还要额外的弄一个kudu呢?HDFS:使用列式存储格式Apache Parquet,Apache ORC,适合离线...

weixin_29494379的博客 1908

怎么查看kudu的版本_kudu 使用以及架构

kudu的介绍:KUDU在 HDFS 和 HBase 这两个中平衡了随机读写和批量分析的性能,既支持了SQL实时查询,也支持了数据更新插入操作kudu 术语:Tablet(段):一个tablet是一张table连续的segment,与其它数据存储引擎或关系型数据库partition(分区)相似。在一定的时间范围内,tablet的副本冗余到多个tserver服务器上,其中一个副本被认为是leader...

weixin_30667831的博客 1214

Apache Kudu 从源码开始构建并部署 Kudu 集群

主要介绍了Apache Kudu 最新版 1.15.0 版本的编译及部署。为了对整个部署有一个更加明确的过程,前面又对 Kudu 进行了简要的介绍。编译中需要注意的事项,部署中的配置等,以及部署完成后,对集群的读写进行测试校验。最后是整理的一个常用命令。

Yore - Home 4401

Kudu的架构原理、底层数据模型和读写流程详解

目录 一、Apache Kudu 介绍 1. 背景介绍 2. kudu 是什么 3. kudu 应用场景 二、Apache Kudu 架构 1. Table 2. Tablet 3. Tablet Server 4. Master Server 三、Apache Kudu 原理 1. table 与 schema 2. kudu 底层数据模型 3. tablet 发现过程 4. kudu 写流程 5. kudu 读流程 6. kudu 更新流程...

weixin_43230682的博客 3957

Apache Kudu架构

目录1. Kudu介绍 1. Kudu介绍 Kudu采用Raft一致性算法,当写入一条数据,被至少两个replica保存,就可以让客户端访问该条数据。但所有的replica的数据会最终一致

Bulut0907 894

Kudu实践总结

参考:Kudu在使用过程中的各种限制 主键 表创建后,主键不能修改。必须删除重建表指定新的主键。 主键列必须在非主键列之前 主键列的值不能使用UPDATE函数修改。如果要修改主键的值只能删除该行重新插入。 DOUBLE、FLOAT或BOOL类型的列不能作为主键,此外,主键列必须为NOT NULL。 不支持自动生成的主键(如自增列) 组合主键的所有列在编码后,大小不能大于16K 列 ...

justlpf的专栏 4147
上一篇: Kudu(一)基础概述
下一篇: 离线数仓(一)认识数据仓库
Yuan_CSDF
博客等级 码龄10年 169粉丝 130原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值