Hadoop入门概论
一、分布式系统和集群
分布式和集群的区别
定义:
分布式是将一个系统拆分为多个子系统,多个子系统部署在多个服务器上,多个服务器上的子系统协同合作完成一个特定任务。
集群是将一个系统完整的部署到多个服务器上,每个服务器都能提供系统的所有服务,多个服务器通过负载均衡调度完成任务。
场景:
- 分布式是解决系统中心化的问题。把一个大的问题拆分为多个小的问题,分别解决各个小问题,最终将解决完成后的各个小问题合并成最初的大问题。
- 集群是解决系统请求压力的问题。把一个大的问题完整的复制为多个,部署在多个服务器上,每个服务器都有完整的系统,最终通过负载均衡来解决系统请求压力的问题。
区别:
- 分布式是多个人在一起作不同的事。
- 集群则是多个人在一起作相同的事。
理解与联系:
分布式通过将任务分成一个个独立的子任务 ,为了进一步提高子任务的效率,会复制多个子任务组成集群,通过负载均衡调度各个子任务。最后将各个子任务的结果通过分布式将结果归并,而分布式每个子任务只有一台服务器的话可能会导致整个系统的宕机,而分布式与集群的结合能很好的解决这一问题,很多时候,二者都是相互配合的。
正常情况下我们将系统架构分为单点和分布式,由于分布式架构都会包含集群,或者说分布式是建立在集群之上的,所以在实际的分布式架构设计中并不会把分布式和集群单独区分,而是统称为:分布式架构。
分布式的基础架构
分布式系统的常见组织形式
-
去中心化模式:没有明确中心,大家协调合作
-
中心化模式:有明确的中心,基于中心节点分配工作
什么是主从模式?
- 主从模式就是中心化模式,表示有应该主节点来做管理者,协调管理下属一批节点工作。
Hadoop是哪种模式?
- 主从模式(中心化模式)的架构
二、Hadoop基础框架概论
Hadoop是什么?
- Hadoop是一个由Apache基金会所开发的分布式系统基础架构
- 主要解决,海量数据的存储和海量数据的分析计算问题。
- 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
Hadoop 优势
- 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
- 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
Hadoop组成
组成Hadoop的最核心框架有三个MapReduce、YARN和HDFS,分别是分布式计算框架、资源调度框架和分布式文件系统。
HDFS架构概述
Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。
NameNode(nn) | 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等 |
---|---|
DataNode(dn) | 存数实际的数据块并执行数据块的读写操作 |
Secondary NameNode(2nn) | 每隔一段时间对NameNode元数据备份 |
YARN 架构概述
Yet Another Resource Negotiator 简称 YARN ,另一种资源协调者,是 Hadoop 的资源管理器。
ResourceManager(RM) | 整个集群资源(内存、CPU等)的老大 |
---|---|
ApplicationMaster(AM) | 单个任务运行的老大 |
NodeManager(N M) | 单个节点服务器资源老大 |
Container | 容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等 |
MapReduce 架构概述
MapReduce:分布式的离线并行计算框架,对海量数据的处理。将计算过程分为Map和Reduce两个阶段,Map阶段并行处理输入数据,Reduce阶段对Map结果进行汇总。
MrAppMaster | 负责整个程序的过程调度及状态协调 |
---|---|
MapTask | 负责Map阶段的整个数据处理流程 |
ReduceTask | 负责Reduce阶段的整个数据处理流程 |
MapReduce将计算过程分为两个阶段:Map和Reduce
- Map阶段并行处理输入数据
- Reduce阶段对Map结果进行汇总
HDFS、YARN、MapReduce三者关系
客户端Client提交任务到资源管理器(ResourceManager),
资源管理器接收到任务之后去NodeManager节点开启任务(ApplicationMaster),
ApplicationMaster向ResourceManager申请资源, 若有资源ApplicationMaster负责开启任务即MapTask。
每个map独立工作,各自负责检索各自对应的DataNode,将结果记录到HDFS,
DataNode负责存储,NameNode负责记录,2nn负责备份部分数据。