Hadoop架构概览
1 Hadoop组成
- HDFS
- Yarn
- MapReduce
- Common辅助工具
1.1 HDFS概述
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统
包含:NameNode(nn)、DataNode(dn) 和 Secondary NameNode (2nn)
1.1.1 NameNode(nn)
就是Master,它是一个主管、管理者。
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)映射信息;
(4)处理客户端读写请求。
1.1.2 DataNode(dn)
就是Slave,NameNode下达命令,DataNode执行实际的操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作。
1.1.3 Client
就是需要使用HDFS能力的客户端。
(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;
(2)与NameNode交互,获取文件的位置信息;
(3)与DataNode交互,读取或者写入数据;
(4)Client提供一些命令来管理HDFS,比如NameNode格式化;
(5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作。
1.1.4 Secondary NameNode(2nn)
并非NameNode的热备份。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
(1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ;
(2)在紧急情况下,可辅助恢复NameNode。
1.2 Yarn概述
Yet Another Resource Negotiator 简称YARN ,另一种资源协调者,是Hadoop 的资源管理器。
包含:
- ResourceManager(RM):整个集群资源(内存、CPU等)的老大
- ApplicationMaster(AM):单个任务运行的老大
- NodeManager(NM):单个节点服务器资源老大
- Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
说明:
- 客户端可以有多个
- 集群上可以运行多个ApplicationMaster
- 每个NodeManager上可以有多个Container
1.2.1 ResourceManager(RM)
主要作用如下
- 处理客户端请求
- 监控NodeManager
- 启动或监控ApplicationMaster
- 资源的分配与调度
1.2.2 ApplicationMaster(AM)
作用如下
- 任务的监控与容错
- 为应用程序申请资源并分配给内部的任务
1.2.3 NodeManager(NM)
主要作用如下
- 管理单个节点上的资源
- 处理来自ResourceManager的命令
- 处理来自ApplicationMaster的命令
1.2.4 Container
Container 是YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
1.3 MapReduce概述
MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于Hadoop 的数据分析应用”的核心框架。
MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop 集群上。
MapReduce 将计算过程分为两个阶段:Map 和Reduce
1)Map 阶段并行处理输入数据
2)Reduce 阶段对Map 结果进行汇总
2 HDFS、YARN、MapReduce 三者关系
3 大数据技术生态体系
图中涉及的技术名词解释:
3.1 Sqoop
Sqoop 是一款开源的工具,主要用于在Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导入到Hadoop 的HDFS 中,也可以将HDFS 的数据导进到关系型数据库中
3.2 Flume
Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据
3.3 Kafka
Kafka 是一种高吞吐量的分布式发布订阅消息系统
3.4 Spark
Spark 是当前最流行的开源大数据内存计算框架。可以基于Hadoop 上存储的大数据进行计算
3.5 Flink
Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多
3.6 Oozie
Oozie 是一个管理Hadoop 作业(job)的工作流程调度管理系统
3.7 Hbase
HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库
3.8 Hive
Hive 是基于Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL 查询功能,可以将SQL 语句转换为MapReduce 任务进行运行。其优点是学习成本低,可以通过类SQL 语句快速实现简单的MapReduce 统计,不必开发专门的MapReduce 应用,十分适合数据仓库的统计分析
3.9 ZooKeeper
是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等