Apache Kudu 简介

来源:互联网 发布:号码归属地软件下载 编辑:程序博客网 时间:2024/06/10 11:18

Introducing Apache Kudu

Kudu是cloudera开源的运行在hadoop平台上的列式存储系统,拥有Hadoop生态系统应用的常见技术特性,运行在一般的商用硬件上,支持水平扩展,高可用,目前是Apache Hadoop生态圈的新成员之一(incubating)。

Kudu的设计与众不同,它定位于应对快速变化数据的快速分析型数据仓库,希望靠系统自身能力,支撑起同时需要高吞吐率的顺序和随机读写的应用场景,提供一个介于HDFS和HBase的性能特点之间的一个系统,在随机读写和批量扫描之间找到一个平衡点,并保障稳定可预测的响应延迟。可与MapReduce, Spark和其它hadoop生态系统集成。

Kudu优势在于:

提供快速的全量数据分析与实时处理功能

结构化的数据模型,支持标准SQL语法,支持数据的更新操作。

集成Impala,利用Imapla SQL语法可操作Kudu数据。

与mapreduce、spark以及其它hadoop生态系统集成。

利用Cloudera Manager,方便管理和维护。

高可用。Tablet Servers and Masters利用Raft Consensus Algorithm.确保只要有一半的副本可用,则tablet可用(可读写)。

对数据顺序扫描(scan)和随机访问(random access)同时具有高性能,简化用户复杂的混合架构。

Kudu-Impala整合

CREATE/ALTER/DROP TABLE

Impala支持creating, altering, and dropping tables来操作存储在Kudu上的表。支持内部/外部表, 灵活的数据查询。

INSERT

利用Impala语法,可以将存储在HDFS or HBase上的数据insert into Kudu tables。

UPDATE / DELETE

Kudu支持标准Impala UPDATE and DELETE SQL语法来执行一行或者批量更新/删除数据。除了简单的DELETE and UPDATE外,还支持复杂的join语法,子查询等。

Flexible Partitioning

和Hive分区表一样,Kudu允许你指定hash or range分区。为了达到数据均衡的读写,你可以将any number of主键列进行any number of hash分区,或者使用二者的组合分区。更多信息参见Kudu Schema Design

Parallel Scan

为了充分利用硬件资源,达到最大的性能,Kudu client利用Impala并行化来同时扫描多个Kudu tablets。

For more details,please refer to Impala documentation

概念和术语

Columnar Data Store

Kudu是列式存储系统,列式存储以强类型的columns来存储数据。一个好的设计,可以较好的支持大多数需求的数据分析或数据仓库。

Read Efficiency

对于分析型查询,你可能会查询某一列的部分数据,而忽悠其它列,这意味着,Kudu能尽可能的访问最少的块来获取所需要的数据。使用行存储,即使需要返回部分columns,也可能会扫描所有的row。

Table

Table就是你在Kudu里存储数据的地方,一个Table拥有一个schema。

Tablet

Tablet是存储的最小单位,是Kudu的水平分区,类似HDFS的block,HBase的region。每个Tablet存储着一定连续的表的segment,一张表所有的Tablet包含了该表key的所有空间。一个Tablet在Tablet servers里面是多副本持久化,任何tablet都是读写一致的。

Tablet Server

tablet server上存了多个Tablets,每个Tablet有多个副本存放在不同的Table Server上,每个Tablet副本同时只有一个Leader,Leader对用户提供写操作,然后同步给其它follower,其它follower只提供读服务,不提供写服务。当Leader节点发生故障后,通过算法 Raft Consensus Algorithm来重新选举Leader节点。 One tablet server can serve multiple tablets, and one tablet can be served by multiple tablet servers。

Master

类似HDFS的NameNode, Master负责管理元数据。这些元数据包括talbet的基本信息,位置信息。Master还作为负载均衡服务器,监听Tablet Server的健康状态,对于副本数过低的Tablet,Master会起replication任务来提高其副本数。Master的所有信息都cache在内存中,因此速度非常快。每次查询都在百毫秒级别。Kudu支持多个Master,不过只有一个active Master,其余只是作为灾备,不提供服务。

Catalog Table

Catalog table is the central location for metadata of Kudu。不能直接的对Catalog table进行读写,而只能通过Client API操作。Catalog table存储着Tables and Tablets的元数据信息:

Tables:table schemas, locations, and states。

Tablets:存在的tablets列表, tablet的当前状态,start and end keys。

原创粉丝点击