前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop Spark Kylin...你知道大数据框架名字背后的故事吗?

Hadoop Spark Kylin...你知道大数据框架名字背后的故事吗?

作者头像
PP鲁
修改2019-12-27 17:13:11
1.2K0
修改2019-12-27 17:13:11
举报
文章被收录于专栏:皮皮鲁的AI星球皮皮鲁的AI星球

对软件命名并不是一件容易的事情,名字要朗朗上口,易于记忆,既不能天马行空,又要代表软件本身的功能和创新。本文将历数几款大数据框架及其创始背后的故事。

Hadoop:最具童心

2004年,Apache Hadoop(以下简称Hadoop)的创始人Doug Cutting和Mike Cafarella受MapReduce编程模型和Google File System等论文的启发,对论文中提及的思想进行了编程实现,Hadoop的名字来源于Doug Cutting儿子的玩具大象。当时Cutting的儿子刚刚两岁,正处在咿呀学语的阶段,经常将自己的黄色玩具大象叫做"Hadoop",Cutting灵机一动,将自己的大数据项目以此来命名。

Cutting和玩具大象

Cutting称,软件的名字有时候要听起来“毫无意义”,因为软件会随着时间不断迭代演进,一开始就使用一个与其初始功能紧密相关的名字,日后有可能比较尴尬。

由于Doug Cutting后来加入了雅虎,并在雅虎工作期间支持了大量Hadoop的研发工作,因此Hadoop也经常被认为是雅虎开源的一款大数据框架。时至今日,Hadoop不仅仅是整个大数据领域的先行者和领导者,更形成了一套围绕Hadoop的生态系统,Hadoop和它的生态是绝大多数企业首选的大数据解决方案。

谁说大象不能跳舞

目前,Hadoop的核心组件主要有三个:

  • Hadoop MapReduce:Hadoop版本的MapReduce编程模型,可以处理海量数据,主要面向批处理。
  • HDFS:HDFS全称为Hadoop Distributed File System,是Hadoop提供的分布式文件系统,有很好的扩展性和容错性,为海量数据提供存储支持。
  • YARN:YARN是Yet Another Resource Negotiator的缩写,是Hadoop生态中的资源调度器,可以管理一个Hadoop集群,并为各种类型的大数据任务分配计算资源。

这三大组件中,数据存储在HDFS上,由MapReduce负责计算,YARN负责集群的资源管理。

羚羊、麒麟还有德鲁伊:大数据动物园

继Hadoop之后,很多大数据框架相继使用动物的名字来命名。很多工具功能比较相似,甚至有些重叠,主要因为他们来自不同的公司,而不同公司的业务需求略有不同,因此开发出来的大数据工具比较相似。比如在SQL-on-Hadoop领域,就有Hive、Impala、Phoenix、Kylin等工具。

大数据动物园

Hive

如果说数据是蜂蜜,计算集群是辛勤工作的小蜜蜂,那么我们需要一个蜂窝来存储这些无价之宝。英文“Hive”翻译过来是蜂巢或蜂窝,数据仓库工具Hive就像一个蜂窝一样,对大数据进行分析和处理,生成高价值的数据。Hive起初由Facebook开发,目前被广泛应用在各大互联网公司。

Hive的logo由大象的头和蜜蜂尾巴构成

Hive基于Hadoop,Hadoop在计算层面只提供了MapReduce的编程API,这种API还是不够傻瓜化。Hive在Hadoop MapReduce基础上,提供了一种类SQL的查询接口,被称为HiveQL。HiveQL与SQL的语法高度兼容,用户想要对大数据做分析和处理,无需使用Hadoop MapReduce的复杂编程,只需要写一些SQL即可。

Impala和Kudu

查询引擎Impala(黑斑羚)和存储引擎Kudu(弯角羚)是一对好基友,都是非洲的羚羊,其创始团队Cloudera公司喜欢使用跑得快的动物来命名产品。Kudu和Impala两者结合可以大大加快大数据OLTP和OLAP的速度。

Druid:变形德鲁伊,游戏玩家的最爱

德鲁伊在游戏玩家眼中并不陌生,他擅长变形,在游戏中能担当不同的角色。Apache Druid的起名源于德鲁伊擅长变形的特点,表示它能够处理多种不同类型的数据处理任务。Druid是一种OLAP工具,可以同时处理批量和流式大数据。Druid被广泛应用在用户行为分析、计算广告、IoT等领域。

Kylin:国产大数据神器麒麟

之前提到的大数据框架都是欧美人主导开发的,随着中国技术水平的提升,在大数据领域也有一款中国人主导的项目,以中国神兽麒麟命名。Kylin最初由eBay上海研发团队开发,随后被开源,目前由一家中国公司Kyligence在主导这个项目的开发。

Kylin

Kylin也是一款OLAP工具,比起Hadoop、Hive和Spark,它的查询速度更快,能在亚秒内查询巨大的Hive表。Kylin的用户群非常大,有eBay、腾讯、百度、思科、小米等等。

Apache Phoenix和Apache Trafodion均是基于HBase的SQL工具,其logo分别是凤凰和龙。Phoenix由Saleforce开源,Trafodion是HP开发的。

为了管理这些动物园里的动物们,ZooKeeper起着管理协调大数据集群的作用。

Spark:无心插柳柳成荫

2009年,Apache Spark(以下简称Spark)诞生于加州大学伯克利分校(University of California, Berkeley)AMP实验室,2013年被捐献给Apache基金会。实际上,Spark的创始团队本来是为了开发集群管理框架Apache Mesos(以下简称Mesos),其功能类似YARN,Mesos开发完成后,需要一个基于Mesos的产品运行在上面以验证Mesos的各种功能,于是他们接着开发了Spark。Spark有火花、鼓舞之意,创始团队希望用Spark来证明在Mesos上从零开始创造一个项目非常简单。如今,Spark已经成为大数据分析领域绝对的王者,而Mesos反而没有那么有名,真可谓无心插柳柳成荫。

在计算机领域,伯克利一直是殿堂级的存在:他们开发的操作系统BSD曾被各大厂商修改后商用,现在苹果的macOS和iOS前身就是BSD。AMP实验室更是在大数据领域具有举足轻重的地位。

回到Spark上,Spark是一款大数据计算框架,其初衷是改良Hadoop MapReduce的编程模型和执行速度,尤其提升大数据在机器学习方向上的性能。与Hadoop相比,Spark的改进主要有两点:

  • 易用性:并不是所有计算任务都可以简单拆分成map和reduce,有可能为了解决一个问题,要设计多个MapReduce任务,任务之间相互依赖,整个程序非常复杂,导致代码的可读性差。Spark提供更加方便易用的接口,提供Java、Scala、Python和R几种语言的API,支持SQL、机器学习和图计算,覆盖了绝大多数计算场景。
  • 速度快:Hadoop的map和reduce的中间结果都需要落地到磁盘上,而Spark尽量将大部分计算放在内存中,加上Spark有向无环图的优化,在官方的基准测试中,Spark比Hadoop快一百倍以上。

Spark生态系统

Spark的核心在于计算,主要目的在于优化Hadoop MapReduce计算部分,在计算层面提供更细致的服务。如图 1‑8所示,Spark提供了常用几种数据科学语言的API,提供了SQL、机器学习和图计算支持,这些服务都是最终面向计算的。Spark并不能完全取代Hadoop,实际上,从图 1‑7可以看出,Spark融入到了Hadoop生态圈,成为其中的重要一元。一个Spark任务很可能依赖HDFS上的数据,向YARN来申请计算资源,将结果输出到HBase上。当然,Spark也可以不用依赖这些组件,独立地完成计算。

Kafka:致敬卡夫卡

中学时代的语文课堂上曾讲到,卡夫卡和他的作品《变形记》刻画了资本主义的底层残酷,如今有一款大数据框架正是以卡夫卡来命名。2010年,LinkedIn开始了其内部流数据处理平台的开发,2011年将该系统捐献给了Apache基金会,取名Apache Kafka(以下简称Kafka)。Kafka的创始人Jay Kreps觉得这个系统主要用于优化读写,应该用一个作家的名字来命名,加上他很喜欢作家卡夫卡的文学作品,觉得这个名字对于一个开源项目来说很酷,因此取名Kafka。

Kafka是一种面向大数据领域的消息系统。在大数据生态圈中,Hadoop的HDFS或Amazon S3提供数据存储服务,Hadoop MapReduce、Spark和Flink负责计算,Kafka是被用来连接这些系统和应用。

Kafka可以连接不同的系统

如图所示,企业中不同的应用系统作为数据生产者会产生大量数据流,这些数据流还需要进入不同的数据消费者,Kafka起到数据集成和系统解耦的作用。系统解耦是让某个应用系统专注于一个目标,以降低整个系统的维护难度。在实践上,一个企业经常拆分出很多不同的应用系统,系统之间需要建立数据流管道(Stream Pipeline)。假如没有Kafka这样的消息队列,M个生产者和N个消费者之间要建立M*N个点对点的数据管道,Kafka就像一个中介,让数据管道的个数变为M+N,大大降低了数据管道的复杂程度。

从批处理和流处理的角度来讲,数据流经Kafka后会持续不断地写入到HDFS,积累一段时间后可提供给后续的批处理任务,同时数据流也可以直接流入到Flink,被用于流处理。

随着流处理的兴起,Kafka不甘心只做一个数据管道,开始向轻量级流处理方向努力,但相比Spark和Flink这样的计算框架,Kafka主要侧重功能在消息队列上。

Flink:像松鼠一样快

Flink是由德国三所大学发起的的学术项目,后来不断发展壮大,并于2014年末成为Apache顶级项目。在德语中,“flink”表示快速敏捷,同时,团队使用生活在柏林的红色松鼠作为吉祥物,以此来表征这款计算框架的特点。

Flink的logo是一只可爱的红色松鼠

Flink主要面向流处理,如果说Spark是批处理界的王者,那么Flink就是流处理领域的冉冉升起的新星,被广泛认为是继Hadoop和Spark的下一代大数据计算引擎。Flink是一个支持在有界和无界数据流上做有状态计算的大数据计算引擎。它以事件为单位,支持SQL、状态、水位线(WaterMark)等特性,支持“Exactly once”。比起Storm,它的吞吐量更高,延迟更低,准确性能得到保障;比起Spark Streaming,它以事件为单位,达到真正意义上的实时计算,且所需计算资源相对更少。

小结

大数据工具的竞争非常激烈,各家公司都有一些内部工具,并将其开源。了解大数据软件命名故事是一件非常有趣的事情,从他们的名字中,我们可以窥见软件创始团队的初衷和愿景。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 皮皮鲁的AI星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hadoop:最具童心
  • 羚羊、麒麟还有德鲁伊:大数据动物园
    • Hive
      • Impala和Kudu
        • Druid:变形德鲁伊,游戏玩家的最爱
          • Kylin:国产大数据神器麒麟
          • Spark:无心插柳柳成荫
          • Kafka:致敬卡夫卡
          • Flink:像松鼠一样快
          • 小结
          相关产品与服务
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档