什么是Hadoop
Hadoop是Apache的一个开源框架,用于存储、处理和分析大量的数据。Hadoop是用Java编写的,不是OLAP(在线分析处理)。它用于批量/离线处理。Facebook、Yahoo、Google、Twitter、LinkedIn等都在使用它。此外,通过添加集群中的节点可以扩展它。
Hadoop的模块
- HDFS: Hadoop分布式文件系统。Google发表了GFS的论文,HDFS就是基于该论文开发的。它规定文件将被分解为块,并存储在分布式架构上的节点上。
- Yarn: Yet Another Resource Negotiator,用于作业调度和集群管理。
- Map Reduce: 这是一个框架,帮助Java程序使用键值对对数据进行并行计算。Map任务将输入数据转换为可以使用键值对进行计算的数据集。Map任务的输出由reduce任务消耗,然后reduce器的输出给出所需的结果。
- Hadoop Common: 这些Java库用于启动Hadoop,并被其他Hadoop模块使用。
Hadoop的体系结构
Hadoop体系结构包括文件系统、MapReduce引擎和HDFS(Hadoop分布式文件系统)。MapReduce引擎可以是MapReduce/MR1或YARN/MR2。
Hadoop集群由一个主节点和多个从节点组成。主节点包括作业跟踪器、任务跟踪器、名称节点和数据节点,而从节点包括数据节点和任务跟踪器。
Hadoop分布式文件系统
Hadoop分布式文件系统(HDFS)是Hadoop的分布式文件系统。它包含一个主/从架构。这个架构由一个单独的NameNode作为主节点,和多个DataNode作为从节点。
NameNode和DataNode都可以在廉价机器上运行。使用Java语言来开发HDFS。因此,任何支持Java语言的机器都可以轻松运行NameNode和DataNode软件。
NameNode
- 它是HDFS集群中的单个主服务器。
- 由于它是一个单节点,可能成为单点故障的原因。
- 它通过执行打开、重命名和关闭文件等操作来管理文件系统命名空间。
- 它简化了系统的架构。
DataNode
- HDFS集群包含多个DataNode。
- 每个DataNode包含多个数据块。
- 这些数据块用于存储数据。
- DataNode负责从文件系统的客户端读取和写入请求。
- 它根据NameNode的指示执行块的创建、删除和复制。
Job Tracker
- Job Tracker的作用是接受来自客户端的MapReduce作业,并使用NameNode处理数据。
- 作为回应,NameNode向Job Tracker提供元数据。
Task Tracker
- 它作为Job Tracker的从节点工作。
- 它接收来自Job Tracker的任务和代码,并将该代码应用于文件。这个过程也可以称为Mapper。
MapReduce层
当客户端应用程序向Job Tracker提交MapReduce作业时,MapReduce就开始工作了。作业跟踪器随后向适当的任务跟踪器发送请求。有时,任务跟踪器可能失败或超时。在这种情况下,作业的那一部分会被重新安排。
Hadoop的优势
- 快速: 在HDFS中,数据分布在集群上,并进行了映射,这有助于更快地检索。即使用于处理数据的工具通常也在同一台服务器上,从而减少了处理时间。它可以在几分钟内处理数TB的数据和数PB的数据。
- 可扩展: Hadoop集群可以通过添加节点来扩展。
- 成本效益: Hadoop是开源的,并使用廉价硬件存储数据,因此与传统的关系数据库管理系统相比,成本更低。
- 容错性: HDFS具有数据在网络上复制的属性,因此如果一个节点宕机或发生其他网络故障,Hadoop将使用其他副本的数据。通常,数据会被复制三次,但复制因子是可配置的。
Hadoop的历史
Hadoop是由Doug Cutting和Mike Cafarella于2002年创立的。它的起源是Google发表的《Google文件系统》论文。
让我们按照以下步骤重点关注Hadoop的历史:-
- 在2002年,Doug Cutting和Mike Cafarella开始致力于一个名为 Apache Nutch的项目 ,这是一个开源的网络爬虫软件项目。
- 当他们在Apache Nutch上工作时,他们处理大数据。为了存储这些数据,他们不得不付出很多成本,这成为该项目的一个后果。这个问题成为Hadoop出现的一个重要原因之一。
- 2003年,Google推出了一个称为GFS(Google文件系统)的文件系统。它是一个专有的分布式文件系统,旨在提供高效的数据访问。
- 2004年,Google发布了一篇关于Map Reduce的白皮书。这种技术简化了大型集群上的数据处理。
- 2005年,Doug Cutting和Mike Cafarella引入了一个名为NDFS(Nutch分布式文件系统)的新文件系统。该文件系统还包括Map Reduce。
- 2006年,Doug Cutting离开了Google,加入了Yahoo。基于Nutch项目,Dough Cutting推出了一个名为Hadoop的新项目,带有一个名为HDFS(Hadoop分布式文件系统)的文件系统。Hadoop的第一个版本0.1.0在这一年发布。
- Doug Cutting将自己的项目命名为Hadoop,名字取自他儿子的玩具大象。
- 2007年,Yahoo运行了两个拥有1000台机器的集群。
- 2008年,Hadoop成为在900台节点集群上快速排序1TB数据的系统,仅需209秒。
- 2013年,发布了Hadoop 2.2。
- 2017年,发布了Hadoop 3.0。
年份 | 事件 |
---|---|
2003 | Google发布了《Google文件系统(GFS)》的论文。 |
2004 | Google发布了关于Map Reduce的白皮书。 |
2006 | Hadoop被引入。 发布了Hadoop 0.1.0。 雅虎部署了300台机器,并在这一年内达到了600台机器。 |
2007 | 雅虎运行了2个包含1000台机器的集群。 Hadoop包含HBase。 |
2008 | YARN JIRA被开放。 Hadoop成为了在900节点集群上以209秒的速度对1TB数据进行排序的最快系统。 雅虎集群每天加载10TB数据。 Cloudera成立,并成为Hadoop的分销商。 |
2009 | 雅虎运行了17个包含24,000台机器的集群。 Hadoop变得足够强大,可以对PB级数据进行排序。 MapReduce和HDFS成为了独立的子项目。 |
2010 | Hadoop添加了对Kerberos的支持。 Hadoop运行了4,000个节点,拥有40PB数据。 Apache Hive和Pig发布了。 |
2011 | Apache Zookeeper发布了。 雅虎拥有42,000个Hadoop节点和数百PB的存储。 |
2012 | Apache Hadoop 1.0版本发布。 |
2013 | Apache Hadoop 2.2版本发布。 |
2014 | Apache Hadoop 2.6版本发布。 |
2015 | Apache Hadoop 2.7版本发布。 |
2017 | Apache Hadoop 3.0版本发布。 |
2018 | Apache Hadoop 3.1版本发布。 |