知名百科 >> Apache Hadoop >> 历史版本
编辑时间历史版本内容长度图片数目录数修改原因
2024-05-08 13:17 最新历史版本 11633 1 5
  返回词条

Apache Hadoop

Hadoop是一个开源的分布式计算平台,可以使用简单的编程模型在计算机集群之间分发大规模数据。Hadoop的历史可以追溯到2002年,当时雅虎的Doug Cutting和Mike Cafarella开始开发一个可以处理大规模数据集的系统。他们的开发基于Google的两篇论文,一篇是关于Google文件系统(GFS),另一篇是关于MapReduce计算模型。Hadoop以前是Apache Lucene的子项目Nutch的一部分。Doug Cutting将其命名为Hadoop,以纪念他儿子的玩具大象。2006年,它被剥离出来,成为一个独立的软件。

Hadoop在Apache Lucene的历史背景中解释了其最初的设计目的:处理海量数据。早期,Hadoop主要用于处理网络爬虫的数据,然后用于搜索引擎和其他应用程序。随着时间的推移,Hadoop已经越来越多地应用于数据仓库、数据湖、数据分析、机器学习等领域,成为处理大数据的标准工具之一。

目录

发展历史

2002-2005:Hadoop的前身Nutch

2002年10月,Doug Cutting和Mike Cafarella创建了Nutch,这是一个开源网络爬虫项目。Nutch最初的设计目的是从网络上收集和索引大量的web信息,用于后续的搜索和数据分析。但是,Nutch的开发需要一个可靠的分布式文件系统和计算模型来处理海量数据,这是Hadoop的主要功能。

2003年10月,谷歌发表了一篇关于谷歌文件系统(GFS)的论文,这启发了道格·卡丁和迈克·卡法雷拉将GFS的设计思想应用于Nutch。2004年,他们在Nutch中实现了GFS的功能,这是Hadoop分布式文件系统(HDFS)的前身。然后,在2004年10月,谷歌发表了MapReduce论文,该论文指导了Hadoop计算模型的设计。

2005年2月,Mike Cafarella在Nutch实现了MapReduce的第一个版本。同年12月,Nutch使用MapReduce和NDFS(Nutch分布式文件系统)运行。

2006 -2010年:Hadoop成为一个独立的项目。

2006年1月,道格·卡丁加入雅虎,雅虎提供了一个专门的团队和资源,将Hadoop开发成一个可以在网络上运行的系统。2月,Apache Hadoop项目正式启动,以支持MapReduce和HDFS的独立开发。今年4月,Apache Hadoop发布了第一个版本,Doug Cutting将其命名为Hadoop,以纪念他儿子的玩具大象。

2008年1月,Hadoop成为Apache的顶级项目。6月,Hadoop SQL框架Hive成为Hadoop的子项目。

2009年7月,Hadoop核心模块更名为Hadoop Common。同时,MapReduce和Hadoop分布式文件系统(HDFS)已经成为Hadoop项目的独立子项目。此外,Avro和Chukwa也成为Hadoop的新子项目。

2009年8月,Hadoop创始人Doug Cutting加入Cloudera担任首席架构师。他的团队致力于推动Hadoop的商业化应用和发展。

2010年5月,几个与Hadoop相关的项目成为Apache的顶级项目。其中,Avro和HBase脱离了Hadoop项目,成为Apache的顶级项目。Hive和Pig也脱离了Hadoop,成为独立的Apache顶级项目。在此期间,Hadoop逐渐被越来越多的企业采用,包括雅虎、脸书和Twitter。这促进了Hadoop生态系统的发展,并使Hadoop成为当时最流行的大数据处理平台之一。

2011-2012:Hadoop的快速发展

2011年10月,Apache Hadoop 0 . 20 . 205版本发布,该版本引入了Apache Hadoop安全性,使Hadoop能够处理更多敏感数据。同年发布了Apache Hadoop 0 . 22 . 0版本,该版本加入了Hadoop Common项目,使Hadoop更加通用。

2011年12月,Apache Hadoop 1 . 0 . 0版本发布。该版本标志着Hadoop已成为真正可靠、稳定的大数据处理平台。同年,Cloudera发布了CDH4版本(Cloudera的发行版包括Apache Hadoop 4),该版本增加了Hadoop的许多新功能和工具,包括HBase、Zookeeper和Hue。

2012年10月,第一个Hadoop原生查询引擎Impala加入Hadoop生态系统。除了技术发展之外,在此期间,Hadoop还吸引了更多企业加入Hadoop生态系统。例如,IBM发布了基于Hadoop的大数据处理平台InfoSphere BigInsights。还有一些新的Hadoop发行版,如Hortonworks和MapR,它们为Hadoop的发展做出了贡献。自2013年以来:Hadoop不断扩展其功能并完善其生态系统。

2013年11月,Hadoop 2.0发布,并引入了Yarn(另一个资源谈判者)资源管理器。YARN使Hadoop不再局限于MapReduce计算模型,而是将MapReduce作为一个可以在YARN上运行的应用程序。它还可以支持其他计算框架,如Spark和Storm。

2014年2月,Apache Spark成为Hadoop生态系统中备受关注的项目,并成为Apache基金会的顶级项目。与MapReduce相比,Spark具有更高的性能和更多的计算功能。许多企业开始将Spark集成到Hadoop生态系统中。

2015年4月,Hadoop 2.7发布,该版本引入了Hadoop Docker支持,使Hadoop更易于在Docker容器中部署和运行。此外,Hadoop 2.7还引入了许多新功能和改进,例如备份节点和磁盘负载平衡。

2016年4月,Apache Zeppelin成为Hadoop生态系统中的数据分析和可视化工具。Zeppelin提供了一个交互式Web界面,使用户能够轻松地分析和可视化数据。

2016年9月,Hadoop 3.0发布,其中引入了许多新功能和改进,例如支持擦除编码、GPU加速、容器洗牌等。Hadoop 3.0还升级了YARN和HDFS,使Hadoop能够更好地支持大规模数据处理。

2018年,Hadoop生态系统中的项目数量持续增加。例如,Apache Kafka已经成为Hadoop生态系统中的实时流媒体平台。此外,Apache Druid已经成为Hadoop生态系统中的OLAP数据存储和查询引擎。

2019年3月,Hadoop 3.2发布,其中引入了许多新功能和改进,例如支持擦除编码、GPU加速、容器洗牌等。此外,Hadoop 3.2还引入了许多新的API和工具,如S3A支持、Hadoop Ozone、Hadoop Token服务等。

2020年,Hadoop生态系统中的项目数量将继续增加。例如,Apache Arrow已经成为Hadoop生态系统中的跨语言数据存储和处理框架。此外,Apache胡迪已经成为Hadoop生态系统中的分布式数据湖工具。

Hadoop已经成为大数据处理领域的重要工具之一,其生态系统包括许多重要项目,如Spark、Kafka、Hive等。随着新技术和应用场景的出现,Hadoop生态系统将不断扩展和完善。

核心组件

Hadoop是一个用于处理大规模数据集的开源分布式计算框架。Hadoop的核心组件主要包括以下四个部分。

Hadoop分布式文件系统(HDFS):HDFS(Hadoop分布式文件系统)是Hadoop生态系统中的一个分布式文件系统,最初由Apache Hadoop项目开发和维护。其设计目标是支持大规模数据处理应用的存储和处理。HDFS是基于谷歌文件系统(GFS)的研究成果,但在某些方面进行了优化和改进。HDFS由两个核心组件组成:NameNode和DataNode。NameNode是主节点,负责管理文件系统的命名空间、控制数据块的复制和处理客户端访问请求。DataNode是存储和提供数据块的数据节点。HDFS中的文件被划分为数据块(通常大小为128 MB或256 MB),并在数据节点之间复制以提供容错能力。每个数据块都有多个副本(通常是三个),这些副本分布在不同的数据节点上以确保可靠性。这样,即使某个数据节点出现故障,也可以从其他节点恢复数据块。HDFS提供了多种方法来访问存储在其中的文件,包括Java API、命令行界面和Web界面。用户可以使用这些界面上传、下载、删除和查看文件。HDFS还具有高可扩展性和高可靠性的优势。它可以轻松扩展到数百甚至数千台服务器,并且可以通过块复制来保证数据的可靠性和可用性。

Hadoop纱线:YARN是Hadoop的资源管理器,最初是作为Hadoop 2.0的新功能引入的。YARN的设计目标是将Hadoop从一个仅支持MapReduce的系统转变为一个通用的分布式计算平台,从而使Hadoop可以支持多种分布式计算框架,例如Apache Spark和Apache Flink。YARN将集群资源的管理与任务的调度分离,使不同的应用程序可以共享集群资源,提高集群资源的利用率。YARN包含两个核心组件:ResourceManager和NodeManager。ResourceManager负责管理集群资源,为不同的应用程序分配资源;NodeManager运行在每个节点上,负责启动、停止和监视容器(运行应用程序的进程)。在YARN中,应用程序被封装为一个容器,这是一个虚拟化的执行环境,其中包含应用程序的代码、依赖关系和环境设置。YARN根据应用程序的需求为其分配容器,并根据需要动态调整容器的数量和大小。YARN提供了丰富的API和CLI接口来管理和监控应用程序的运行状态,例如启动、停止和查询。此外,YARN还提供了一个Web界面,可以查看集群资源的使用情况、应用程序的运行状态等信息。

Apache HadoopApache Hadoop

Hadoop MapReduce:MapReduce是Hadoop的数据处理框架,用于处理大规模数据集。它最初受到Google的MapReduce研究论文的启发,是Hadoop版本的核心组件之一。Hadoop MapReduce的设计目标是分布数据,以便数据处理任务可以在分布式计算节点上并行执行。Hadoop MapReduce的处理流程可以分为两个阶段:Map阶段和Reduce阶段。在Map阶段,将输入数据分成若干小块,对每个小块进行相同的计算,生成键值对序列作为输出;在Reduce阶段,对Map输出的键值对序列进行排序和合并,并执行相应的计算以生成最终的输出结果。在Hadoop MapReduce中,Map和Reduce任务可以在不同的计算节点上并行执行,从而使数据处理任务可以快速处理大规模数据集。此外,Hadoop MapReduce还提供了一种数据本地化优化机制,即尽可能将计算任务调度到存储相关数据的计算节点上执行,从而减少数据传输的开销,提高处理效率。Hadoop MapReduce提供了多种API和CLI接口,如Java API和Streaming API,以支持开发人员使用他们熟悉的编程语言进行数据处理。此外,Hadoop MapReduce还提供了丰富的监控和管理工具,例如JobTracker和TaskTracker,用于监控和管理任务的执行状态以及重试失败。

Hadoop Common:Hadoop Common是Hadoop生态系统中的核心模块,它提供了Hadoop分布式计算框架中所需的基本库和工具。它包含分布式文件系统(HDFS)和分布式计算框架(MapReduce)的通用代码和工具。Hadoop Common提供了Hadoop生态系统中组件之间的通信和协调机制,如RPC机制、序列化和反序列化机制、安全认证机制、日志记录和异常处理。此外,Hadoop Common还提供了一系列工具和实用程序,如命令行工具、文件系统操作API、Shell API等。,方便开发者使用Hadoop分布式计算框架进行数据处理和管理。Hadoop Common还提供了一些额外的组件,如ZooKeeper、Avro、Thrift等,以支持更丰富的分布式计算场景。例如,ZooKeeper用于分布式协调和锁定,Avro和Thrift用于支持不同语言和平台之间的数据交换。Hadoop Common还提供了丰富的配置选项和可扩展接口,以满足不同的业务和环境需求。开发人员可以通过修改配置文件和实现自定义扩展点来定制Hadoop分布式计算框架的行为和性能。

生态系统

除了Hadoop本身,Hadoop生态系统还包括许多其他工具和技术,如Avro、Parquet、Sqoop、Hive、Pig、HBase、Spark等。这些工具可以帮助用户更方便地使用Hadoop处理和分析数据。以下是对Hadoop生态系统中重要组件和技术Hive、Spark和Hbase的简单介绍。

Hive:Hive是一个基于Hadoop的数据仓库工具,它提供了一种类似SQL的查询语言HiveQL,用于查询和分析大规模数据。Hive将查询转换为MapReduce作业并在Hadoop集群上执行。Hive的应用场景主要包括数据仓库、数据分析、日志分析等领域。它可以帮助用户快速处理和分析大规模数据,从而提高数据处理的效率和准确性。

Spark:Spark是一个用于大规模数据处理的统一分析引擎,由加州大学伯克利分校的AMPLab开发。Spark支持基于内存的计算,可以比Hadoop MapReduce更快地处理数据。Spark可以在Hadoop、Mesos、YARN和Kubernetes等集群管理器上运行,也可以在单台机器上运行。Spark的应用场景包括数据科学和机器学习、SQL分析和BI、存储和基础设施。

HBase:HBase是一个基于Apache Hadoop项目构建的分布式、面向列的开源数据库系统。它支持海量数据存储和实时读写操作,通常用于存储非结构化或半结构化数据,如网页、日志数据、传感器数据等。HBase适用于大规模、高速率的数据存储场景,如实时大数据分析、Web日志处理、用户行为分析、在线广告等。

优点缺点

优势

处理大规模数据集:Hadoop可以处理大规模数据集,包括海量结构化和非结构化数据,并且它支持多种数据类型和格式,如文本、图像、音频和视频。Hadoop可以有效地处理从数十GB到数百PB的数据集。

高可靠性:Hadoop的高可靠性是由其分布式存储和计算模型决定的。数据在Hadoop中被划分为许多块并存储在不同的计算节点上,因此即使一个节点出现故障,也可以在其他节点上找到数据。此外,Hadoop还具有数据冗余功能,可以在数据丢失时自动恢复数据。

高可扩展性:Hadoop的计算和存储能力可以随着集群规模的增加而线性扩展,因此可以轻松处理不断增加的数据量。

高容错性:Hadoop的高容错性意味着当计算节点或数据节点出现故障时,它可以继续运行。Hadoop的数据冗余和计算任务重试机制可以保证失效节点的任务重新分配到其他可用节点上,从而保证任务的完成和数据的可靠性。

劣势

不适合低延迟数据访问:HDFS是为大规模数据批处理而设计的,具有高吞吐量,但也存在高延迟。主要原因是HDFS需要将大文件分成多个块并以分布式方式存储,同时还需要优化数据局部性以减少网络传输开销。此外,Hadoop的MapReduce模型还需要大量的数据交换和磁盘I/O,这增加了处理时间。因此,在需要实时处理的场景中,我们应该考虑使用或引入其他技术。

无法高效存储大量小文件:Hadoop是基于HDFS的文件存储系统。HDFS使用块作为存储数据的基本单位,每个块的大小为64KB。如果文件未达到64KB,它将被保存为一个独立的块。如果有大量小于64KB的小文件,每个块将无法完全存储,从而导致大量空间浪费。

不支持多用户写入和任意修改文件:Hadoop目前不支持多用户并发写入和随机修改同一文件的功能。相反,它只允许一个文件只有一个写入者,并且只允许对文件进行追加,即新写入的数据将添加到文件的末尾。这种方法与传统的关系数据库不同,因为Hadoop的设计目标是高吞吐量和数据处理能力而不是实时数据访问。

应用场景

搜索引擎:搜索引擎需要处理网页、图片和视频等数据,并对其进行存储、索引和分析。Hadoop可以帮助搜索引擎公司处理这些数据,提高搜索引擎的响应速度和搜索质量。2007年,百度开始使用Hadoop进行离线处理。

社交网络:社交网络需要处理用户上传的文本、图片和视频等数据,同时需要执行用户行为分析和广告推荐等任务。Hadoop可以帮助社交网络公司处理这些数据,提高社交网络的运营效率和用户体验。例如,脸书使用Hadoop进行数据处理和分析,并推出了数据仓库工具Hive。

电子商务/电子商务:电子商务需要处理大量的用户数据、订单数据、商品数据等。,同时它需要执行数据分析和推荐系统等任务。Hadoop可以帮助电子商务公司处理这些数据并进行实时分析,以便更好地了解用户行为并提供个性化服务。2008年,淘宝开始研究基于Hadoop的系统“天梯”,并将其用于处理电子商务相关数据。

在线广告:在线广告需要处理大量的广告数据和用户数据,同时需要实时竞价、定位和投放。Hadoop可以帮助在线广告公司处理这些数据,以便更好地了解用户行为并提供准确的广告。Hadoop起源于雅虎!,美国著名的互联网门户网站。

标签