【学习笔记】Hadoop1:Hadoop的四大模块
【学习笔记】Hadoop1:Hadoop的四大模块
前言
Hadoop是一个由Apache基金会开发的分布式系统基础架构,在大量计算机组成的集群当中实现了对于海量的数据进行的分布式计算,简单来说就是解决海量数据的存储和分析计算的问题。
Hadoop的优势
- 高可靠性: Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
- 高扩展性: 在集群间分配任务数据,可方便的扩展数以千计的节点
- 高效性: 在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
- 高容错性: 能够自动将失败的任务重新分配。
Hadoop的组成结构
Hadoop经历了从Hadoop1.x到Hadoop2.x的转换,为:
区别: 在Hadoop1.x时代,Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源的调度,耦合性较大。而在 Hadoop2.x 时代,MapReduce 将 JobTracker 中的资源管理及任务生命周期管理(包括定时触发及监控)拆分成两个独立的组件,并更名为 YARN(Yet Another Resource Negotiator)。即 YARN只负责资源的调度,MapReduce 只负责运算。
1. common(工具类)
common 包括Hadoop常用的工具类,由原来的Hadoopcore部分更名而来。主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem等。它们为在通用硬件上搭建云计算环境提供基本的服务,并为运行在该平台上的软件开发提供了所需的API。
2. Hadoop Distributed File System(HDFS)
HDFS为海量的数据提供了存储,是一个分布式文件系统。通过流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件集群内的不同机器上,HDFS主要由三个部分组成:
- NameNode
NameNode存储文件的元数据,如文件名,文件目录的结构,文件的属性(生成时间、副本数、文件权限),以及每个文件的块列表和块(block)所在的DateNode等(类似于一个对DateNode的索引系统)。
- DataNode
DataNode存储了文件被分块后的块数据,以及块数据的校验和。
- Secondary NameNode
Secondary NameNode的目的是在HDFS中提供一个检查点,每隔一段时间就会获取元数据的快照,并返回给NameNode。(这里推荐一篇写的很好的博客:Secondary NameNode:它究竟有什么作用?)
3. YARN(Yet Another Resource Negotiator)
YARN在Hadoop中负责对资源的管理与调度,主要方法是创建一个全局的 ResourceManager(RM) 和若干个针对应用程序的 ApplicationMaster(AM)。
- ResourceManager
ResourceManager 将各个资源部分(CPU、内存等)安排给 NodeManager,与 ApplicationMaster 一起分配资源,与 NodeManager 一起启动和监视它们的基础应用程序。(类似于公司中的最高管理者,负责分配任务和监视手下)。
- ApplicationMaster
ApplicationMaster 管理一个在YARN内运行的应用程序的每个实例。ApplicationMaster 负责协调来自ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。(类似于公司中的项目经理,负责调控上头的指令,并把任务分配给下级)。
- NodeManager
NodeManager 处理 ResourceManager 和 ApplicationMaster 的命令管理一个YARN集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。(类似于公司中的员工,负责处理上头的命令并完成工作)。
4. MapReduce
MapReduce 是基于 YARN 的大型数据集并行处理系统,适合用来处理大数据。MapReduce 将计算过程分为两个阶段:Map(映射)和Reduce(归约)。指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组(相当于约束作用)。