大数据入门-什么是Kudu

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据入门-什么是Kudu

这里简单介绍的Kudu的一些常见的名词,简单的架构,一些常用的语句。至于后续比较详细的介绍,会单独针对这个组件进行详细介绍,可以关注博客后续阅读。


一、概念


e58f697cf3494eb28e2e7d58397631de.jpg

Kudu是Cloudera开源的新型列式存储系统,是Apache Hadoop生态圈的成员之一,专门为了对快速变化的数据进行快速的分析,填补了以往Hadoop存储层的空缺。


Kudu提供了更接近于RDBMS的功能和数据模型,提供类似于关系型数据库的存储结构来存储数据,允许用户以和关系型数据库相同的方式插入、更新、删除数据。


Kudu仅仅是一个存储层,它并不存储数据,而是依赖外部的Hadoop处理引擎(MapReduce,Spark,Impala)。Kudu把数据按照自己的列存储格式存储在底层Linux文件系统中。


Kudu中的核心是基于表的存储引擎。Kudu存储自己的元数据(有关表的)信息和用户的数据,保存在Tablet中。


Kudu有Upsert来更新数据,类似于Oracle的Merge。


二、架构


bb00eb7e896c4ad388cef8f245adc2a2.png


与HDFS和HBase相似,Kudu使用单个的Master节点,用来管理集群的元数据,并且使用任意数量的Tablet Server(可对比理解HBase中的RegionServer角色)节点用来存储实际数据。可以部署多个Master节点来提高容错性。一个Table表的数据,被分割成1个或多个Tablet,Tablet被部署在Tablet Server来提供数据读写服务。


1.Master Server

Kudu集群中的老大,可以有多个Master Server提高集群的容错能力,但是只有一个Master Server对外提供服务,负责管理集群和管理元数据。


2.Tablet Server

Kudu集群中的小弟,可以有任意多个,负责存储数据和数据读写。在Tablet Server上存储Tablet,对于一个Tablet,只有其中一个Table Server作为Leader,提供读写服务,其他Table Server都是Follower,只提供读服务。


3.Table

Table: Kudu中的表概念,有Schema和Primary Key概念,Kudu中的表会被水平方向分为多个Tablet片段存储在Tablet Server上。


4.Tablet

一个Tablet是一张表的一个连续片段,Tablet是表的水平分区,Tablet之间的Primary Key范围不会重叠,一张表的所有Tablet片段构成了这张表的所有Primary Key范围。Tablet会冗余存储在多个Tablet Server上设置副本,任何时刻只有一个Tablet Server是Leader,其他都是Follower。


三、特性


1388cef4ea6f47419ad1a7439b728a92.jpg


1.重要性

1.大数据分析的复杂性往往是存储系统的局限性带来的,Kudu 的局限性小很多,一定程度使大数据分析变得简单。

2.新的应用场景需要 Kudu,例如越来越多的应用集中在机器生成的数据和实时分析领域。

3.适配新的硬件环境,从而带来更高的性能和应用灵活性。


2.易用性

1.提供了更接近于 RDBMS 的功能和数据模型;

2.提供类似 RDBMS 的库表存储结构;

3.允许用户以和 RDBMS 相同的方式插入、更新和删除数据。


3.优势

Kudu 同时具备了逐行插入、低延迟随机访问、更新和快速分析扫描的能力,使得它在 OLAP 和 OLTP 中都能提供较好的支持,这些原本需要多个存储系统同时支持的复杂架构被替换成只有一个存储系统,所有的数据被存放在这个存储系统里,极大地简化了大数据的架构。


4.与传统关系型数据库比较

1.跟关系型数据库一样,Kudu 表有一个唯一的主键。

2.关系型数据库中常见的特性,比如事务、外键和非主键索引,目前在Kudu中是不支持的。

3.Kudu拥有一些OLAP和OLTP特性,但是缺少对跨行的原子性、一致性、隔离性、持久性事务的支持。

4.Kudu可被归为混合食物/分析处理(Hybrid Transaction/Analytic Processing,HTAP)类型数据库。

5.Kudu支持快速主键检索,并能在数据持续输入的同时进行分析,而 OLAP 数据库在这种场景下性能通常不是很好。

6.Kudu的持久性保证和 OLTP 数据库更为接近。

7.Kudu的Quorum 能力可以实现一种名为Fractured Mirrors的机制,即一个或两个节点使用行存储,另外的节点使用列存储。这样就可以在行存储的节点上执行OLTP类型的查询,在列存储的节点上执行OLAP查询,混合两种负载。


5.与其他大数据组件比较

1.HDFS擅长大规模扫描,但不擅长随机读,严格来说,并不支持随机写,可以通过合并的方式模拟随机写,但成本很高。

2.HBase和Cassandra擅长随机访问,随机读取和修改数据,但大规模扫描性能较差。

3.Kudu的目标是把扫描性能做到HDFS的两倍,而随机读性能接 HBase和Cassandra,实际目标是在SSD上随机读/写的延迟在1ms以内。


四、常用语句


1.建表


Kudu建表是需要主键的,主键不能为空。


1.建普通表

create table test.test1 (
  date_timekey string not null,
  username string null,
  product_qty string null
)
stored as kudu

2.建分区表

create table test.test1 (
  date_timekey string not null,
  username string null,
  product_qty string null,
  primary key (date_timekey)
)
partition by range (date_timekey) (value='20220417')
stored as kudu

2.删除表

drop table if exists test.test1;

3.查询数据


注意:查询数据的时候,最好是把要查询的列带上,这样可以减少查询的列,减轻查询的Loading。在写SQL的时候,使用指定的列对大数据集群压力更小,系统健壮性更加强。


select date_timekey,username  from test.test1

4.添加数据


注意:分区表插入数据之前,一定要先建好分区。

insert into test.test1 (date_timekey,username)values('20200330','shuijianshiqing');

注意:添加的数据主键不能为空,否则数据进去不。


insert into test.test1 (date_timekey,b)values(null,'shuijianshiqing');


5.更新数据


upsert into test.test1 (date_timekey,username)values('20200330','shuijianshiqing');


6.删除数据


注意:删除数据时候,不能使用别名删除,比如test.test t,然后条件里面是t.date_timekey,这样数据删除不了。


delete from test.test1 where date_timekey='20200328';

7.新增单个分区


alter table test.test1 add range partition value='20200325';


8.删除单个分区


alter table test.test1 drop range partition value='20200325';


9.新增多个分区


alter table test.test1 add range partition '20200327'<=values<'20200331';


10.删除多个分区


alter table test.test1 drop range partition '20200327'<=values<'20200331';


11.新增列


alter table test.test1 add columns(column_new string);


12.删除列


alter table test.test1 drop column column_new;


13.修改列名


username是列的原来的名称,username_new是新列的名称,


alter table test.test1 change column username username_new string;


14.分区为多列


1.新建表

drop table if exists test.test2;
create table test.test2 (
  id String not null,
  date_timekey String not null,
  hour_timekey String not null,
  username STRING,
  password STRING,
  interface_time String,
  primary key (id,date_timekey,hour_timekey)
)
partition by range (date_timekey,hour_timekey) (partition value=('20200601','20200601 0730')) 
stored as kudu


2.新增分区


alter table test.test2_kudu add range partition value=('20200601','20200601 0830');


3.删除分区


alter table test.test2_kudu drop range partition value=('20200601','20200601 0830');


五、大白话


Kudu就是一个存储引擎,类似于RDBMS,能够增删改查,让大数据分析更加便捷。他的存储不是基于Hadoop,而是自己有一套独立的系统在Linux。至于Kudu的读写等更加细致的内容,后面会详细介绍。


六、其他


鸡汤:世间最怕认真二字,这二字值千金,千金不换!


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
5月前
|
存储 分布式计算 Hadoop
大数据之hadoop3入门到精通(一)
大数据之hadoop3入门到精通(一)
258 1
|
4月前
|
SQL 存储 分布式计算
ODPS开发大全:入门篇(3)
ODPS开发大全:入门篇
178 19
|
4月前
|
SQL 存储 分布式计算
ODPS开发大全:入门篇(1)
ODPS开发大全:入门篇
446 14
|
5月前
|
分布式计算 Hadoop 分布式数据库
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
166 2
|
5月前
|
分布式计算 大数据 数据处理
Python入门与大数据处理环境配置指南
**Python入门与大数据处理环境配置** Python作为高级编程语言,因其简洁语法和丰富库资源,成为数据处理、AI和大数据分析首选。本文旨在介绍Python基础和环境配置,特别是针对大数据处理的环境搭建。首先,讲解Python语言基础,包括语言概述、基本语法(变量、数据类型、控制流语句、函数和模块)。接着,讨论如何安装Python环境,以及安装NumPy、Pandas等大数据处理库。对于大数据处理,可以选择本地环境或搭建分布式环境,如Hadoop和Spark,并提供相关API示例。最后,列出环境配置中可能遇到的问题及解决方案,如版本不兼容、库安装失败等,并提供参考资料以供深入学习。
135 3
|
1月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
55 1
|
1月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
26 1
|
1月前
|
存储 大数据 Apache
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
22 0
|
1月前
|
存储 分布式计算 大数据
大数据-145 Apache Kudu 架构解读 Master Table 分区 读写
大数据-145 Apache Kudu 架构解读 Master Table 分区 读写
41 0
|
1月前
|
存储 分布式计算 NoSQL
大数据-144 Apache Kudu 基本概述 数据模型 使用场景
大数据-144 Apache Kudu 基本概述 数据模型 使用场景
36 0