image.png
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项目
图片.png
Hadoop集群中有哪些节点类型?
Hadoop的集群搭建在之前的博客中已经详细介绍了,下面介绍一下集群中的节点类型。
Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduce。MapReduce的作业包括:
- 1、从磁盘或者从网络读取数据,即
IO密集工作。 - 2、计算数据,即
CPU密集工作。
Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。一个基本的Hadoop集群中的节点主要有:
-
NameNode(名称节点):负责协调集群中的数据存储 -
DateNode(数据节点):存储被拆分的数据块 -
JobTracker:协调数据计算任务 -
TaskTracker:负责执行有JobTracker指派的任务 -
SecondaryNameNode(第二名称节点):帮助NameNode收集文件系统运行的状态信息 -
ResourceManager:在YARN中,负责集群中所有资源的统一管理和分配,它接受来自各个节点的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序。
图片.png
Apache Hadoop YARN
YARN的作用
YARN是一个通用的开源集群管理员。在Hadoop MapReduce2.0中,集群管理员和作业调度、监控是分开的进程。YARN提供了集群管理功能,应用指定的master则提供作业调度、监控的功能。
YARN的架构
YARN集群管理员由两个关键组件组成:ResourceManager和NodeManager。
-
NodeManager管理单个节点上可以使用的资源; -
ResourceManager管理集群中所有节点上可使用的资源,它将NodeManager报告的资源汇总到一起并将它们分配给不同的应用。它本质上就是一个master,在应用之间调度集群的可用资源。
基于YARN的分布式计算框架有三部分组成:客户端应用、ApplicationMaster、容器。
image
- 客户端应用:客户端应用想
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分配用于执行作业的集群资源。它只提供调度功能,并不监控应用或追踪应用的状态。













网友评论