一篇文章搞定一个大数据组件:kudu知识点全集

目录

1、kudu的定位

2、kudu基本概念

3、存储架构

3.1 储存架构:Tablet

3.2 储存架构:RowSets

3.3 储存架构:DiskRowSets

4、kudu工作原理

4.1 Compaction

4.2 Tablet切分规则

4.3 kudu写过程:insert

4.4 kudu写过程:update

4.5 Kudu读过程


1、kudu的定位

HDFS: 存储格式Textfile,Parquet,ORC,适合离线分析,不支持单条记录级别的update操作,随机读写性能差。

HBASE :可以进行高效随机读写,但写快读慢,大批量数据获取时的性能较差。并不适用于基于SQL的数据分析方向。

Kudu

  • 批量更新和单条记录更新都很友好  --FastData

  • 与Impala组合使用,OLAP性能强大  --FastAnalytics

  • 高可用

  • 动态扩展

2、kudu基本概念

  • Table(表):一张table是数据存储在kudu的位置。Table具有schema和全局有序的primarykey(主键)。

  • Tablet(段):一个tablet是一张table连续的segment,与其他数据存储引擎或关系型数据的partition相似。Tablet存在副本机制,其中一个副本为leadertablet。任何副本都可以对读取进行服务,并且写入时需要在所有副本对应的tabletserver之间达成一致性。

  • Tabletserver:存储tablet和为tablet向client提供服务。对于给定的tablet,一个tabletserver充当leader,其他tabletserver充当该tablet的follower副本。只有leader服务写请求,leader与follower为每个服务提供读请求。

  • Master:主要用来管理元数据(元数据存储在只有一个tablet的catalogtable中),即tablet与表的基本信息,监听tserver的状态

  • CatalogTable: 元数据表,用来存储table(schema、locations、states)与tablet(现有的tablet列表,每个tablet及其副本所处tserver,tablet当前状态以及开始和结束键)的信息。

图片

 

3、存储架构

图片

图片

MemRowSet

用于新数据insert及已在MemRowSet中的数据的更新,一个MemRowSet写满后会将数据刷到磁盘形成若干个DiskRowSet。(默认是1G或者或者120S)

DiskRowSet

用于老数据的变更(mutation),后台定期对DiskRowSet做compaction,以删除没用的数据及合并历史数据,减少查询过程中的IO开销。

BloomFile

根据一个DiskRowSet中的key生成一个bloomfilter,用于快速模糊定位某个key是否在DiskRowSet中存在。

Ad_hocIndex

主键的索引,用于定位key在DiskRowSet中的具体哪个偏移位置。

BaseData

MemRowSet flush下来的数据,按列存储,按主键有序。

UndoFile

基于BaseData之前时间的历史数据,通过在BaseData上applyUndoFile中的记录,可以获得历史数据。

RedoFile

基于BaseData之后时间的变更(mutation)记录,通过在BaseData上applyRedoFile中的记录,可获得较新的数据。 

DeltaMem

用于DiskRowSet中数据的变更mutation,先写到内存中,写满后flush到磁盘形成RedoFile。

 

3.1 储存架构:Tablet

分区策略

Writes

Reads

Tablet Growth

Range

所有写入都会落到最新分区

可以通过分区键提高读能力

可添加新tablets

Hash

在tablets上均匀分布

可以通过分区键提高读能力

tablets会无限增长

Hash分区有利于提高写吞吐量Range分区可避免tablet无限增长问题,所以我们可以使用多级分区,组合这两种分区方式

 

3.2 储存架构:RowSets

Tablet在底层被进一步细分成了一个称之为RowSets的单元

图片

MemRowSet

用于新数据insert及已在MemRowSet中的数据的更新,一个MemRowSet写满后会将数据刷到磁盘形成若干个DiskRowSet。(默认是1G或者或者120S)

DiskRowSet

用于老数据的变更(mutation),后台定期对DiskRowSet做compaction,以删除没用的数据及合并历史数据,减少查询过程中的IO开销。

 

3.3 储存架构:DiskRowSets

DiskRowSet分为了两部分:basedata、deltastores。basedata 负责存储基础数据,deltastores负责存储 basedata 中的变更数据

图片

 

4、kudu工作原理

4.1 Compaction

由于所有插入的数据都是先写入memRowSet,到达一定条件后再写入DiskRowSet,而且DiskRowSet中的basedata是不变的,这就导致会出现数据重叠的现象,导致写或查询时需要搜索大量的DiskRowSet

 

图片

 

三种Compaction策略:

  DiskRowSet Compaction:减少DiskRowSet数量,优化insert、update和scans时间。

  Minor Delta Compaction:只减少delta file数量,优化scans时间。

  Major Delta Compaction:对base data和delta file进行compaction,优化scans时间

 

4.2 Tablet切分规则

建表时指定分区策略

Hash Partitioning:哈希分区通过哈希值将行分配到某一个bucket,每个bucket对应一个tablet,建表时设置bucket的数量。

Range Partitioning:range partition使用完全有序的分区键来分配行,分区键必须是kudu表主键的子集。

DEMO:

CREATE TABLE cust_behavior (

  _id BIGINT PRIMARY KEY,

  skuSTRING,

  rating INT,

  fulfilled_dateBIGINT

)

PARTITION BY RANGE(_id)

(

    PARTITION VALUES< 1439560049342,

    PARTITION1439560049342 <= VALUES < 1439566253755,

    PARTITION1439566253755 <= VALUES < 1439572458168,

    PARTITION1439572458168 <= VALUES < 1439578662581,

    PARTITION1439578662581 <= VALUES < 1439584866994,

    PARTITION1439584866994 <= VALUES < 1439591071407,

    PARTITION1439591071407 <= VALUES

)

STORED AS KUDU;

 

4.3 kudu写过程:insert

Kudu与HBase不同,Kudu将写入操作分为两种:一种是插入新数据,另一种是更新数据

图片

1、客户端连接Master获取表的相关信息,包括分区信息,表中所有tablet的信息;

2、客户端找到负责处理读写请求的tablet所负责维护的TServer。Kudu接受客户端的请求,检查请求是否符合要求(表结构);

3、Kudu在Tablet中的所有rowset(memrowset,diskrowset)中进行查找,看是否存在与待插入数据相同主键的数据,如果存在就返回错误,否则继续;

4、Kudu在MemRowset中写入一行新数据,在MemRowset数据达到一定大小时,MemRowset将数据落盘,并生成一个diskrowset用于持久化数据,还生成一个memrowset继续接收新数据的请求。

 

4.4 kudu写过程:update

图片

 

4.5 Kudu读过程

图片

1、客户端连接Master获取表的相关信息,包括分区信息,表中所有tablet的信息;

2、客户端找到需要读取的数据的tablet所在的TServer,Kudu接受读请求,并记录timestamp信息,如果没有显式指定,那么表示使用当前时间;

3、Kudu找到待读数据的所有相关信息,当目标数据处于memrowset时,根据读取操作中包含的timestamp信息将该timestamp前提交的更新操作合并到base data中,这个更新操作记录在该行数据对应的mutation链表中;

4、当读取的目标数据位于diskrowset中,在所有DeltaFile中找到所有目标数据相关的UNDO record和REDO records,REDO records可能位于多个DeltaFile中,根据读操作中包含的timestamp信息判断是否需要将base data进行回滚或者利用REDO records将base data进行合并更新。

 

整理不易,一键三连可好。

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

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

相关文章

区分Activity的四种加载模式-activity

转载&#xff1a;http://marshal.easymorse.com/archives/2950 在多Activity开发中&#xff0c;有可能是自己应用之间的Activity跳转&#xff0c;或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例&#xff0c;而不是产生大量重复的Activity。 这需要为…

Nature:AI为什么总是歧视重重?

来源&#xff1a;网络大数据摘要&#xff1a;当使用谷歌翻译将西班牙语的新闻翻译为英语时&#xff0c;涉及到女性的短语通常都会翻译为“他说”或“他写道”。当使用谷歌翻译将西班牙语的新闻翻译为英语时&#xff0c;涉及到女性的短语通常都会翻译为“他说”或“他写道”。常…

※【python自学】7个Python生态系统核心库,你值得拥有

无论你是想快速入手Python&#xff0c;还是想成为数据分析大神或者机器学习大佬&#xff0c;亦或者对Python代码进行优化&#xff0c;本文的python库都能为你提供一些帮助。 一 概述 Python生态系统的一些核心基础数据分析库&#xff1a; NumPy&#xff1a;支持大量的维度数…

Eclipse编写Java程序

Eclipse的Java开发工具(JDT),允许用户使用它的环境进行编辑、调试及运行Java程序。1. Java运行环境设置 指定JRE的版本。Eclipse设置默认的运行环境的JRE设置成当前配置&#xff0c;用户可以修改多个JRE版本的运行环境&#xff0c;并选择符合其需求的运行环境。[窗口 Window]…

㊙️【教你用python挣零花钱】自动化简历内推,学弟直呼牛逼!!

最近&#xff0c;小编在处理简历时&#xff0c;发现大量简历需要一个个打开文件&#xff0c;复制姓名、邮箱、电话号码、学历等关键信息&#xff0c;效率特别低且部分文件无法直接复制。于是&#xff0c;小编便写了简历解析处理的脚本&#xff0c;支持文件格式有&#xff1a;do…

MySQL流浪记(六)—— CONCAT到GROUP_CONCAT的沿途风景(图文详解)

本文中的案例如下&#xff0c;可以自己测试一下&#xff0c;有问题可以留言哦。 CREATE TABLE staff (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),job_id INT, joindate DATE,salary DECIMAL(7,2) ); INSERT INTO staff(name,job_id,joindate,salary) VALUES (孙悟…

收藏!最新大数据产业地图 十大生态金矿百大公司起底【附下载】

来源&#xff1a;智东西人工智能的崛起&#xff0c;加速了大数据技术的应用落地。据中国大数据产业生态联盟调查显示&#xff0c;国内大数据企业年营业额4000万人民币以上的已经超过40%&#xff0c;这意味着&#xff0c;这些企业已经度过生存期&#xff0c;开始进入应用落地和品…

【一鸣离职,左晖去世】互联网老兵给大家的三个建议

2021年5月20日&#xff0c;除了娱乐圈的分分合合&#xff0c;互联网圈发生了两件大事&#xff1a; 1、字节跳动创始人张一鸣发布内部全员信&#xff0c;宣布卸任CEO一职。 2、贝壳发布讣告&#xff0c;公司创始人兼董事长左晖先生因疾病意外恶化于2021年5月20日…

科大讯飞:让世界听见AI的声音

来源&#xff1a;华为怀揣着“让世界聆听我们的声音”的梦想&#xff0c;科大讯飞依托世界领先的核心技术&#xff0c;引领智能浪潮&#xff0c;服务亿万用户&#xff0c;从中国语音产业的拓荒者一跃成为世界人工智能产业的领军者&#xff0c;而最初科大讯飞把语音作为切入点却…

Linux中的chmod详解

chmod&#xff08;英文全拼&#xff1a;change mode&#xff09;命令是控制用户对文件的权限的命令。Linux/Unix 的文件调用权限分为三级 : 文件所有者&#xff08;Owner&#xff09;、用户组&#xff08;Group&#xff09;、其它用户&#xff08;Other Users&#xff09;。只有…

【程序员薪资】2021年04月新鲜出炉,看看你拖后腿了吗?

程序员一直都是一个备受人们关注的群体。据IDC统计&#xff0c;全球约有1850万名程序员&#xff08;数据还在持续增长&#xff09;&#xff0c;中国占10%左右。随着近年全国互联网创业热潮的兴起&#xff0c;“互联网”、“云计算”以及“智能硬件”等领域发展迅速&#xff0c;…

CICC科普栏目|神经网络浅讲:从神经元到深度学习

图1 人脑神经网络来源&#xff1a; 计算机的潜意识摘要&#xff1a;神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。学习神经网络不仅可以让你掌握一门强大的…

linux安装Redis(超详细,只要三分钟,每一步命令都有命令截图及运行截图)

Redis redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remove及取…

鬼才!用Python计算圆周率 π

目录 一、圆周率的历史发展 1、中国 2、印度 3、欧洲 二、用python计算圆周率 A货&#xff1a;什么&#xff01;你不会背圆周率&#xff08;鄙夷的眼神&#xff09; 3.1415926535 8979323846 26433... 桥哥&#xff1a;我会算呀 &#xff01;&#xff01;&#xff01; 一…

大数据常见问题:数据倾斜

offer收割系列介绍&#xff1a; 1、分享桥哥本人或小伙伴在面试大厂时遇到的真题&#xff0c;并给出参考答案&#xff01;&#xff01;如果能帮到大家&#xff0c;点赞、收藏、评论是对我最大的支持&#xff01;&#xff01; 2、涉及岗位&#xff1a;主要为大数据开发、数据仓…

一图看懂新一代人工智能知识体系大全

来源&#xff1a;财经头条摘要&#xff1a;人工智能的发展离不开基础支持层和技术层&#xff0c;基础支持层包括大数据、计算力和算法&#xff1b;技术层包括计算机视觉、语音识别和自然语言处理。人工智能的技术本质是什么&#xff0c;本文会详细分析。人工智能的发展离不开基…

阿里、字节offer收割系列:数据仓库岗(面试真题,建议收藏)

【offer收割系列介绍】 1、分享桥哥本人或小伙伴在面试大厂时遇到的真题&#xff0c;并给出参考答案&#xff01;&#xff01; 2、涉及岗位&#xff1a;主要为大数据开发、数据仓库&#xff08;桥哥干过的&#xff09;&#xff0c;其它岗位也可参考 3、涵盖技术&#xff1a;mys…

MIT新开发的 AI 模型有望改进恶性脑瘤治疗

来源&#xff1a;人工智能和大数据美国研究人员新近开发出一种人工智能模型&#xff0c;能够为胶质母细胞瘤患者设计出最小剂量给药方案&#xff0c;在缩小肿瘤的同时减少药物带来的毒副作用&#xff0c;改进患者生活质量。胶质母细胞瘤是一种常见的恶性脑瘤&#xff0c;常见疗…

建议收藏丨大数据集群常用监控命令(内存、磁盘、CPU、网络)

大家好&#xff0c;我是明月十四桥&#xff01;&#xff01; 擅长领域&#xff1a;python黑科技、大数据后端研发、数据仓库 今日重点&#xff1a; ① 学会查看linux各种状态&#xff0c;包括&#xff1a;网络IO、磁盘、CPU、内存等&#xff1b; ② 学会理解命令所代表的含义&a…

中科院王飞跃:新的智能全球化将要来临,人工智能标准化为时尚早

中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃来源&#xff1a;财经网摘要&#xff1a;8月11日&#xff0c;中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃在由厚益控股和《财经》杂志联合主办主题为“共享全球智慧 引领未来科技”的…