
Hadoop发展简史
Hadoop
最初是由Apache Lucene
项目的创始人DougCutting
开发的文本搜索库。Hadoop
源自始于2002年的Apache Nutch
项目——一个开源的网络搜索引擎并且也是Lucene
项目的一部分。2008年1月,Hadoop
正式成为Apache
顶级项目,Hadoop
也逐渐开始被雅虎之外的其他公司使用。
什么是Hadoop?
Hadoop
是一个由Apache
基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。它具有以下几个方面的特性:
- 高可靠性、高效性、高可扩展性、高容错性
- 成本低
- 运行在Linux平台上
- 支持多种编程语言
Hadoop
实现了一个分布式文件系统(Hadoop Distributed File System
),简称HDFS
。HDFS
有高容错性的特点,并且设计用来部署在低廉的(low-cost
)硬件上;而且它提供高吞吐量(high throughput
)来访问应用程序的数据,适合那些有着超大数据集(large data set
)的应用程序。HDFS
放宽了(relax
)POSIX
的要求,可以以流的形式访问(streaming access
)文件系统中的数据。
核心设计:
-
HDFS
:HDFS
为海量的数据提供了存储。 -
MapReduce
:MapReduce
为海量的数据提供了计算。
Hadoop解决的问题
Hadoop
就是解决了大数据(大到一台计算机无法进行存储,一台计算机无法在要求的时间内进行处理)的可靠存储和处理的问题。
Hadoop项目

Hadoop集群中有哪些节点类型?
Hadoop
的集群搭建在之前的博客中已经详细介绍了,下面介绍一下集群中的节点类型。
Hadoop
框架中最核心的设计是为海量数据提供存储的HDFS
和对数据进行计算的MapReduce
。MapReduce
的作业包括:
- 1、从磁盘或者从网络读取数据,即
IO
密集工作。 - 2、计算数据,即
CPU
密集工作。
Hadoop集群的整体性能取决于CPU
、内存、网络以及存储之间的性能平衡。一个基本的Hadoop
集群中的节点主要有:
-
NameNode
(名称节点):负责协调集群中的数据存储 -
DateNode
(数据节点):存储被拆分的数据块 -
JobTracker
:协调数据计算任务 -
TaskTracker
:负责执行有JobTracker
指派的任务 -
SecondaryNameNode
(第二名称节点):帮助NameNode
收集文件系统运行的状态信息 -
ResourceManager
:在YARN中,负责集群中所有资源的统一管理和分配,它接受来自各个节点的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序。

Apache Hadoop YARN
YARN的作用
YARN
是一个通用的开源集群管理员。在Hadoop MapReduce2.0
中,集群管理员和作业调度、监控是分开的进程。YARN
提供了集群管理功能,应用指定的master则提供作业调度、监控的功能。
YARN的架构
YARN
集群管理员由两个关键组件组成:ResourceManager
和NodeManager
。
-
NodeManager
管理单个节点上可以使用的资源; -
ResourceManager
管理集群中所有节点上可使用的资源,它将NodeManager
报告的资源汇总到一起并将它们分配给不同的应用。它本质上就是一个master,在应用之间调度集群的可用资源。
基于YARN
的分布式计算框架有三部分组成:客户端应用、ApplicationMaster
、容器。

- 客户端应用:客户端应用想
ResourceManager
提交作业。举例来说,spark-submit
脚本就是一个客户端应用。 -
ApplicationMaster
:ApplicationMaster
通常由诸如Spark
或MapReduce
这样的库提供。这些库会为每一个应用创建一个ApplicationMaster
。ApplicationMaster
在YARN集群上拥有一个作业机会并会运行这个作业。ApplicationMaster
会与ResourceManager
协商资源并且与NodeManager
一起使用容器来执行作业。它会监控作业并追踪作业的跨度。ApplicationMaster在运行NodeManager的诸多设备中的一台上运行。- 容器从概念上看代表单个节点上可供一个应用使用的资源。
ApplicationManager
向ResourceManager
协商执行作业所需的容器。一旦容器成功分配,它将在集群节点上和NodeManager
一起启动容器。NodeManager
管理在设备上运行的容器。
- 容器从概念上看代表单个节点上可供一个应用使用的资源。
ResourceManager
由两个关键组件构成:ApplicationManager
和Scheduler
。
-
ApplicationManager
:ApplicationManager
从客户端应用获取作业并分配第一个容器来运行ApplicationMaster
。 -
Scheduler
:Scheduler
向ApplicationMaster
分配用于执行作业的集群资源。它只提供调度功能,并不监控应用或追踪应用的状态。
网友评论