Kudu:一个为大数据快速分析量身定制的新型Apache Hadoop存储系统

来源:Cloudera中国(微信公众号 ID:cloudera-china)

Apache Hadoop提供了一系列数据存储与处理的组件,覆盖了多种多样、应用于企业级关键服务的用户案例。在Cloudera,我们一直在努力探索Hadoop的各种可能性,拓展Hadoop的边界——使得Hadoop更快、更好用、更安全。

自2012年,我们开启了一个关于Apache Hadoop存储系统的验证工作(避免Hadoop被约束在部分特定用户案例中)。验证过程中,我们发现了一些重要的发展趋势并最终决定去开发一个新型的存储系统,对HDFS与Apache HBase提供的功能进行补充。现在,我们非常自豪地推出Kudu,一个Hadoop生态系统上的新生开源组件。Kudu的目标是:

  • 提供快速的全量数据分析与实时处理功能;
  • 充分利用先进CPU与I/O资源;
  • 支持数据更新
  • 简单、可扩展的数据模型

在这里,我们会对打造Kudu的动机、Kudu架构等给出简单的介绍。

功能上的空白

在很多Cloudera的客户环境中,我们发现了“混合架构 (hybrid architecture)”的趋势,即很多Hadoop工具会被同时部署。HBase主要被用于支撑数据导入,(及其)快速的小查询执行,更重要的是支持数据的随机修改。而HDFS与Impala组合的使用可以高效处理列式存储数据(例如Apache Parquet),在大规模数据集上提供高性能的分析型查询。

目前,大部分客户都被迫去打造一个混合式的架构,将多个工具集成在一起进行使用。客户首先选择一种存储系统导入、更新数据,但是后续为了最优化分析型报表的生成就得转向采用另一种存储系统。虽然我们的客户已经成功地部署、维护了这样的混合架构,但是我们相信,如果一个存储系统能够为多种不同类型的工作负载提供高性能的处理能力,那么对于那种需要使用混合架构才能解决的问题将是更加优雅的解决方案。

新的硬件

另一个我们在客户现场发现的趋势是硬件能力的不断加强。首先是内存的增长,从32GB到2012年的128GB到如今的256GB。然后是磁盘,现在在很多普通服务器中SSD的应用也是屡见不鲜。HBase、HDFS、以及其他的Hadoop工具通过调整、升级也在不断适应更新换代的硬件,但是这些系统在当初设计时集群的瓶颈在于底层磁盘的速度。最优化磁盘存储架构的设计对于现代架构(大量数据可以缓存在内存中,永久存储层数据的随机访问速度是原来的100多倍)就未必是最优的。

另外,随着存储层数据访问速度的不断增长,整个系统性能的瓶颈反而转向了CPU。当存储层越来越快,CPU效率变得愈发关键。

Kudu简介

为了应对先前发现的这些趋势,有两种不同的方式:持续更新现有的Hadoop工具或者重新设计开发一个新的组件。其目标是:

  • 对数据扫描(scan)和随机访问(random access)同时具有高性能,简化用户复杂的混合架构;
  • 高CPU效率,最大化先进处理器的效能;
  • 高IO性能,充分利用先进永久存储介质;
  • 支持数据的原地更新,避免额外的数据处理、数据移动

我们为了实现这些目标,首先在现有的开源项目上实现原型,但是最终我们得出结论:需要从架构层作出重大改变。而这些改变足以让我们重新开发一个全新的数据存储系统。于是3年前开始开发,直到如今我们终于可以分享多年来的努力成果:Kudu,一个新的数据存储系统。

Kudu设计

从用户的角度而言,Kudu是用于存储结构化数据的(tables)。表,具有一个定义明确的表结构(schema)包含一组预先定义的列。每个表具有一个主键(primary key),由一到多个列所组成。主键强加了数据唯一性的约束,同时也像索引一样可以加速数据的更新和删除。

Kudu表包含了一系列逻辑数据子集(Tablets),跟如同传统数据库系统的分区(Partition)。Kudu原生提供数据可用性支持,通过将Tablets复制到不同机器的方式(Raft consensus算法)处理硬件错误带来的数据不可访问问题。每个Tablets的大小一般在几十个GB左右,一个独立的服务器节点一般可以为10—100个Tablets提供服务。

Kudu采用master后台进程管理元数据(就像是目录catalog,描述数据的逻辑结构)、在硬件错误恢复时实现调度(coordinator)以及记录每个tablet服务器上tablets的状态等。Kudu使用多个master后台进程以提供管理节点的高可用性。Kudu实现了Raft Consensus算法,因此很多master进程的功能都可以通过Tablet服务器实现,在未来的发展路线图中,master的职责也会被分散到不同的机器上。另外,Kudu的master后台进程不会成为整个集群性能的瓶颈,根据在250节点集群的测试中,master后台进程完全没有性能的问题。

存储于Kudu的数据是可修改的(利用log-structured变种算法)。更新、插入、删除都是临时先缓冲于内存,随后合并进永久性列式存储中。Kudu为了保证查询延迟不出现大的波动,也会周期性地进行小型维护操作,比如compaction。

Kudu提供了C++、Java API支持点操作与批操作。Kudu的另一个目标是与现有的Hadoop生态系统工具进行集成。目前,Kudu的Beta版本已经与Impala、MapReduce以及Apache Spark实现了整合。随着时间的推移,我们计划将Kudu集成到整个Hadoop生态系统中。

更多Kudu架构细节,请查阅http://getkudu.io/kudu.pdf

原文发布于微信公众号 - 大数据(hzdashuju)

原文发表时间:2015-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能大石头

100亿小数据实时计算平台

2017年6月,开始数据分析的职业生涯,作为架构师,建立起一套基于.Net/.Net Core的小数据实时处理计算平台,这里记录学习过程中的点点滴滴!

1432
来自专栏华章科技

这5种必知的大数据处理框架技术,你的项目到底应该使用其中的哪几种

大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的...

1183
来自专栏IT大咖说

从选型到实现——企业级云端大数据平台最佳实践

2323
来自专栏大数据技术学习

大数据认知阶段——如何学习大数据相关技术

已经看了大数据相关知识一阵时间了,自己也是从新手开始的,所以看了大量的大数据如何入门的技术博客、帖子等,下面记录总结下自己学习的内容。

1835
来自专栏数说工作室

你的每一次点击行为,是如何变成数据的?| 聊一聊互联网公司的内部数据采集

数据是怎么来的? 在很多行业,数据都是人工收集来的,比如医学疾病数据、环境数据、经济数据等。数据的更新周期也比较长,比如年度、月度。 但互联网行业不一样,这个...

6037
来自专栏企鹅号快讯

macOS被曝新漏洞!黑客可随时获得访问权限,iPhone将受此影响!

2017 年的最后一天,一名使用“Siguza”假名的安全研究人员在互联网上发布了一个macOS系统漏洞,该漏洞对 2002 年以来所有 Mac 操作系统设备都...

2037
来自专栏CSDN技术头条

Hadoop、Spark、HBase与Redis的适用性讨论

最近在网上又看到有关于Hadoop适用性的讨论[1]。想想今年大数据技术开始由互联网巨头走向中小互联网和传统行业,估计不少人都在考虑各种“纷繁复杂”的大数据技术...

3835
来自专栏华章科技

那些年,追过的开源软件和技术

笔者也是在互联网软件行业里面摸爬滚打十年多了,回头想想青葱岁月,很多时间都花在各种技术热潮的追逐上,有些是有价值的,也有些因为没人指导走过弯路,下面我就把我自己...

2091
来自专栏分布式系统和大数据处理

企业IT架构转型之道

近期公司在做一些后台架构方面的改造,例如对数据中心,数据采集/传输/清洗/存储方面的优化,因此,我想有必要了解一些其他公司是如何做系统架构和转型的,于是购买了这...

4994
来自专栏CSDN技术头条

揭秘Sponge:统一Hadoop、Spark、SDS、Swift的大数据操作系统

Sponge是一个简单多层,兼容完全POSIX兼容的分布式NFS、Hadoop,支持对象存储、云存储、SDS、容器机制,集成Spark为计算引擎,基于内存计算技...

3619

扫码关注云+社区

领取腾讯云代金券