什么是Hadoop
Hadoop 是一个用于存储和处理大规模数据集(大数据)的分布式存储和分布式计算平台。它由 Apache 软件基金会维护,并基于 Java 编程语言编写。Hadoop 的核心设计理念是能够在普通硬件上运行,并且能够处理非常大的数据集。狭义上说Hadoop就是一个框架平台,广义上讲Hadoop代表大数据的一个技术生态 圈,包括很多其他软件框架
Hadoop 框架主要包括以下几个核心组件:
- Hadoop Distributed File System (HDFS): HDFS 是一个高度容错的分布式文件系统,它能够存储大量数据,并且提供高吞吐率的数据访问,特别是对大型文件的读写访问。HDFS 将数据分散存储在多台计算机上,形成一个逻辑上的单一文件系统。
- Yet Another Resource Negotiator (YARN): YARN 是 Hadoop 2.x 引入的资源管理层,它负责管理计算资源,并为运行在 Hadoop 集群上的应用程序分配资源。YARN 的引入使得 Hadoop 能够更有效地利用集群资源,并支持多种数据处理框架。
- MapReduce: MapReduce 是一种编程模型,用于并行处理大量数据。在 MapReduce 中,数据被分成小块,然后由多个 map 任务处理,处理完后的结果再由 reduce 任务合并。MapReduce 是 Hadoop 早期的核心组成部分,但在 Hadoop 2.x 中,MapReduce 成为了 YARN 上的一个应用程序。
除了这些核心组件,Hadoop 生态系统还包括许多其他的项目和工具,如:
- Hive:用于数据仓库任务的数据汇总、查询和分析。
- Pig:提供高级脚本语言,用于编写 MapReduce 程序。
- Spark:一个快速的通用分布式计算系统,可以替代 MapReduce 进行数据处理。
- HBase:一个分布式、可扩展的 NoSQL 数据库,运行在 Hadoop 之上,提供随机读写访问大量数据的能力。
- Flume:用于高效地收集、聚合和移动大量日志数据到 HDFS。
- Sqoop:用于在 Hadoop 和关系型数据库之间传输数据。
Hadoop 的可扩展性和容错性使其成为处理大数据问题的理想选择,尤其是在需要处理PB级数据量的场景中。此外,Hadoop 的生态系统不断扩展,提供了丰富的工具和框架,以支持各种大数据处理需求。
Hadoop的起源
Hadoop起源于Apache Nutch项目,Doug Cutting受Google的三篇论文启发实现了Hadoop框架。
Google的三篇论文 GFS:Google的分布式文件系统(Google File System) MapReduce:Google的分布式计算框架 BigTable:大型分布式数据库
发展演变关系: GFS —> HDFS Google MapReduce —> Hadoop MapReduce BigTable —> HBase
可见,Hadoop实际上是基于Google的大数据技术演化出来的。
2005年,Hadoop 作为Lucene的子项目Nutch的一部分引入Apache。
2006年,Hadoop从Nutch剥离出来独立。
2008年,Hadoop成为Apache的顶级项目。