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生态系统中。

本文转自d1net(转载)

Kudu:为大数据快速分析量身定制的 Hadoop 存储系统相关推荐

  1. 好程序员大数据笔记之:Hadoop集群搭建

    好程序员大数据笔记之:Hadoop集群搭建在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天 ...

  2. 大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图

    大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图 http://edu.51cto.com/roadmap/view/id-29.html http://my.oschina.net/i ...

  3. 阿里巴巴飞天大数据架构体系与Hadoop生态系统

    很多人问阿里的飞天大数据平台.云梯2.MaxCompute.实时计算到底是什么,和自建Hadoop平台有什么区别. 先说Hadoop 什么是Hadoop? Hadoop是一个开源.高可靠.可扩展的分布 ...

  4. 大数据开发:剖析Hadoop和Spark的Shuffle过程差异

    一.前言 对于基于MapReduce编程范式的分布式计算来说,本质上而言,就是在计算数据的交.并.差.聚合.排序等过程.而分布式计算分而治之的思想,让每个节点只计算部分数据,也就是只处理一个分片,那么 ...

  5. 大数据学习笔记:Hadoop生态系统

    文章目录 一.Hadoop是什么 二.Hadoop生态系统图 三.Hadoop生态圈常用组件 (一)Hadoop (二)HDFS (三)MapReduce (四)Hive (五)Hbase (六)Zo ...

  6. hdp对应hadoop的版本_好程序员大数据学习路线分享hadoop的知识总结

    大数据学习路线分享hadoop的知识总结,Hadoop的背景:原生公司是apache, cdh的cloudar公司,hortworks公司提供hdp. 其中apache的发行版本大致有1.x ,2.x ...

  7. 好程序员大数据教程分享之Hadoop优缺点

    好程序员大数据教程分享之Hadoop优缺点,大数据成为时代主流,开启时代的大门,全球43亿部电话.20亿位互联网用户每秒都在不断地产生大量数据,人们发送短信给朋友.上传视频.用手机拍照.更新社交网站的 ...

  8. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    大数据学习系列之八----- Hadoop.Spark.HBase.Hive搭建环境遇到的错误以及解决方法 参考文章: (1)大数据学习系列之八----- Hadoop.Spark.HBase.Hiv ...

  9. 大数据系列(一)之hadoop介绍及集群搭建

    大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...

最新文章

  1. Eboot 中给nandflash分区实现
  2. AbstractAutoWireCapableBeanFactory 对Bean 实例进行属性依赖注入
  3. 无源码情况下动态调试混淆的java程序
  4. 阿里云数据库自研产品亮相国际顶级会议ICDE 推动云原生数据库成为行业标准
  5. 【计算机视觉】opencv姿态解算6 理论算法调研 PNP问题 5种算法
  6. 苹果将在内华达州里诺市再购地块 都是为了它
  7. win8.1远程桌面连接2008显示正在加密远程连接
  8. Julia : 1亿条记录读取测试,及几个优化点
  9. VC++6.0安装番茄助手Visual Assist X和VC6LineNumberAddin的方法
  10. 软件测试mysql面试题及答案_软件测试技术之面试必问的25道数据库测试题
  11. matlab根据数值大小聚类,[matlab聚类分析]请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?...
  12. 工程实践线切割3B代码参考
  13. Vuejs中字符串判空处理--如何判断字符串是否为空或不为空
  14. 【debug】googlecode 使用代理svn下载代码
  15. Android软键盘的删除键和activity返回冲突
  16. 视频传输协议总结、码率
  17. Wordpress中wp-admim管理后台(404)无法进入,无限循环跳出解决方法
  18. 【解决U盘无法访问】
  19. qq部落android,QQ部落安卓版
  20. 鸟哥的Linux私房菜(基础篇)- 第二十一章、系统配置工具(网络与打印机)与硬件侦测

热门文章

  1. centos 一键安装ftp 配置_CentOS快速搭建FTP(初级-四步)
  2. 儿童吹泡泡水简单配方_儿童吹泡泡水简单配方[组图]
  3. mysql cluster_redislt;3.cluster集群模式gt;
  4. 【杂谈】为什么我们从来不追热点,循序渐进学习它不好吗?
  5. 全球及中国超导磁铁探针台行业现状规模及“十四五”发展趋势预测报告2021-2027年版
  6. 【转】Linux开机启动管理---systemd使用
  7. Kafka学习之路 (三)Kafka的高可用
  8. 如何在博客园的博客中添加可运行的JS(转载)
  9. 转: 如何从keystore file中查看数字证书信息
  10. 新手学逆向,调试abexcm1过程