开发者学堂课程【2020版大数据实战项目之DMP广告系统(第一阶段):Kudu原理_总体设计】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/676/detail/11755
Kudu原理_总体设计
总体设计
1、Kudu 的特点
(1)Kudu 不支持 SQL
Kudu 内部存储数据方式是表的模型,Kudu 和 Impala 都是 Cloudera 的项目,所以 Kudu 不打算自己实现 SOL 的解析和执行计划,而是选择放在Impala中实现,这两个东西配合来完成任务。Impala 是 Hive 的补充,Hive 适合要执行很久的 circle 语句,而 Impala 适合快速得到结果的 circle 语句的查询。
所以 Kudu 的底层是一个基于表的引擎但是提供了 NoSOL 的 API。
(2)Kudu 中存储两类的数据
HDFS 只存数据,Hive 只存源数据,但是 Kudu 既不依赖 Hadoop 也不依赖 Hive,它是可以有自己的存储的,所以它可以存储自己的表数据,Kudu 存储自己的元信息,例如表名,列名,列类型 Kudu 当然也有存放表中的数据。这两种数据都存储在 tablet 中。
Kudu 是自己自成体系的一整套机制,Kudu 可以把预写日志放在 SSD 上来增进整体的性能,kudu 甚至可以和 HDFS共享一整套集群一整套存储。
2、kudu 在设计上,整个集群有两类节点如下:
(1)Mastor server
存储元数据的 tablet 由 Master server 管理。负责元信息存储的,kudu 和其他大数据系统一样。还负责具体的表的元数据存储,Mastor server 负责说明这张表在那个 Tabletserver 里面。但是具体 Tabletserver 里面的元信息由自己存储。
(2)Tablet server
存储表中数据的 tablet 不同的 Tablet server 管理 。是存储具体的某一张表的某一个分区的数据。
无论是在 Mastor server 里还是在 Tablet server 里,存储数据的单位都是 tablet,无论是元信息还是表中的数据,都在tablet 这样一个组件当中存储,tablet 可以想象成一个表的分区,Mastor server 和 Tablet server 区别在于Mastor server 中的 Tablet 只有一个而且放在内存当中,
3、tablet
tablet 可以理解为一个分区,tablet与kafuka中的机制稍微有一点点像,tablet 是一个存储的单元,这个存储单元可以理解为表当中的某一个分区,然后这个分区也可以有副本,它可以把自己分发到不同的节点中,例如下图
在图中左边是一个 tablet,下一列也是一个 tablet,然后第一行为机器一,依次往下为机器二,机器三等。Master tablet 它是存在 tablet 的,这个 tablet 可以有一个 Leader 可以有多个 Follower, Leader 和 Follower 分布在不同节点上具体存储某张表的分区。
可以注意到 Master tablet 是可以有三个副本的,这三个副本必须有一个 Leader 和多个 Follower,这个 tablet 本身也是贮存的,然后具体某一个表的 tablet,比如说一个表可能有三个 tablet,对应三个表的分区,然后其中的某一个tablet 又有两个副本,一个是 Leader 两个是 Follower,所以要这么想,首先最大的概念是表的概念,表可以有多个tablet,每一个 tablet 又可以有多个副本,这些副本分布在不同的机器里面。在看如上图的时候要注意有两个维度,上面的为 tablet 的维度,Master 有自己的 tablet,然后每一个表当中又有不同的 tablet,这些 tablet 分布在不同的服务器上,所以两边为服务器的维度,一共有七个服务器。
简单来说如果要在 Kudu 中存储数据这个数据一定在某一个 tablet 当中存储,无论是元信息还是普通信息,tablet 也可以理解为是一张表的某一个分区。