初识Hadoop
Posted m0_45241917
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Hadoop相关的知识,希望对你有一定的参考价值。
概述
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,是Google的云计算基础架构的开源实现。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的优势进行高速运算和存储。
Hadoop被ASF定义成一个允许大型数据集使用简单编程模型在计算机集群的分布式处理的框架。他提供了一个高度可用的服务上的计算机集群。
Hadoop的特点:
(1) 是一系列软件库组成的框架;
(2)适合处理大规模数据,高吞吐量;
(3)被部署在一个集群上,高容错性,可以不使用昂贵的硬件设备;
(4)HDFS可以以流的形式访问文件系统中的数据。
核心功能
最核心设计包括:HDFS和MapReduce。
HDFS
HDFS用于海量数据的存储。
HDFS优势 劣势
1、大数据处理 1、低时间延迟的数据访问
2、流式数据访问 2、不适用存储大量小文件
3、数据冗余,硬件容错
HDFS的核心概念
数据块:一般为128MB;
数据复制:默认复制3份;
数据副本存放策略:第一个副本放在本地机架的一个节点,第二个副本放置在本地机架上的另外一个节点,第三个副本放置在另外一个机架的节点上;
机架感知;
负载均衡;
心跳机制:用于实现Hadoop集群节点之间的通信
HDFS体系结构
HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。一个HDFS集群是由一个NameNode和一定数目的DataNode组成的。NameNode是一个中心服务器,负责管理文件系统的名字空间 (Namespace )及客户端对文件的访问。集群中的DataNode一般是一个节点运行一个DataNode进程,负责管理它所在节点上的存储。
这种结构模型主要由四个部分组成:Client(客户端)、Namenode(名称节点)、Datanode(数据节点)和SecondaryNamenode(第二名称节点,辅助Namenode)。
一个真正的HDFS集群包括一个Namenode和若干数目的Datanode。Namenode是一个中心服务器,负责管理文件系统的命名空间 (Namespace )及客户端对文件的访问。集群中的Datanode一般是一个节点运行一个Datanode进程,负责管理客户端的读写请求,在Namenode的统一调度下进行数据块的创建、删除和复制等操作。
MapReduce
MapReduce为海量数据提供计算能力,可分解为map和reduce两部分。
流程分为5的步骤:
读取数据;map阶段;shuffle;reduce阶段,存储数据。
shuffle是Mapreduce的核心,它分布在Mapreduce的map阶段和reduce阶段。
Hadoop的物理架构
Hadoop是典型的Master-Slave架构。
Hadoop的特色与优势
(1)高可靠性:Hadoop采用按位存储和处理数据。
(2)高扩展性:在可用的计算机集群间分配任务数据,可方便的扩展数以千计的节点。
(3)高效性:能够在节点之间动态地移动数据并保证各个节点的动态平衡以加快任务处理速度。
(4)高容错性:能够自动保存数据的多个副本,能够自动将失败的任务重新分配。
Hadoop体系架构
Hadoop生态系统
Hadoop1.0 Hadoop2.0
1.0版本的核心组件主要是HDFS和MapReduce。2.0在1.0的基础上增加了yarn资源管理系统。
YARN
YARN是Hadoop2.0版本新引入的资源管理系统,直接从1.0演化而来。
核心思想:将1.0中JobTracker的资源管理和作业调度两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。
ResourceManager:负责整个集群的资源管理和调度。
ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。
YARN的出现,使得多个计算框架可以运行在一个集群当中。
每个应用程序对应一个ApplicationMaster。
目前可以支持多种计算框架运行在YARN上面比如MapReduce、Storm、Spark、Flink等。
YARN架构
从YARN的架构图来看,它主要由ResourceManager和ApplicationMaster、NodeManager、ApplicationMaster和Container等组件组成。
1、 ResourceManager(RM)
YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 ApplicationMaster 一起分配资源,与 NodeManager 一起启动和监视它们的基础应用程序。在此上下文中,ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。
总的来说,RM有以下作用
(1)处理客户端请求
(2) 启动或监控ApplicationMaster
(3)监控NodeManager
(4)资源的分配与调度
2、 ApplicationMaster(AM)
ApplicationMaster 管理在YARN内运行的每个应用程序实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。从 YARN 角度讲,ApplicationMaster 是用户代码,因此存在潜在的安全问题。YARN 假设 ApplicationMaster 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。
总的来说,AM有以下作用
(1)负责数据的切分;
(2)为应用程序申请资源并分配给内部的任务;
(3)任务的监控与容错。
3、 NodeManager(NM)
NodeManager管理YARN集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
总的来说,NM有以下作用
(1)管理单个节点上的资源
(2)处理来自ResourceManager的命令;
(3)处理来自ApplicationMaster的命令。
4、 Container
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
总的来说,Container有以下作用
对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息。
以上是关于初识Hadoop的主要内容,如果未能解决你的问题,请参考以下文章