概念
Hadoop是一个分布式系统基础架构,可扩展大量集群进行分布式计算和分布式存储。
优点是
- 高可靠性:数据存储时数据块多副本存储,数据计算时某个节点崩溃可以自动重新调度作业计算
- 高扩展性:可以横向线性扩展机器,一个集群中可以有数以千计的节点,集群可以用廉价机器,成本低
- Hadoop生态成熟
组件
HDFS
HDFS(Hadoop Distributed File System)是分布式文件系统,具有扩展性、容错性和海量数据存储。HDFS将数据切分成指定大小的数据块进行存储,数据存储会冗余保存(多副本),一个数据会被拆分成多个Block。
- NameNode负责客户端请求的响应;负责元数据(文件名、副本系数、Block存放的DN)的管理;监控DataNode健康状况
- DataNode存储用户的文件对应的Block;定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况
- 分布式集群NameNode和DataNode部署在不同的机器上
MapReduce
MapReduce是分布式计算框架,具有扩展性、容错性和海量数据离线处理。需要对数据进行分析计算,对数据进行分解Map和合并Reduce两个步骤。
- 输入数据
- 对数据进行切分、格式化处理
- 将切分数据做map处理
- 将相同的数据放在一起,并对数据进行排序处理
- 将map输出的数据进行hash计算,对每个map数据进行统计计算
- 格式化输出数据
YARN
YARN负责整个集群资源的管理和调度,具有扩展性、容错性和多框架资源统一调度。多个框架用到HDFS上的数据时会有先后问题,需要YARN来起到协调作用。
- RM资源管理器:整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度;处理客户端的请求;监控NM
- NM节点管理器:整个集群有多个,负责自己本身节点资源管理和使用;定时向RM汇报本节点的资源使用情况;接收并处理来自RM的各种命令,启动Container;处理来自AM的命令
- AM(ApplicationMaster):每个应用程序对应一个,负责应用程序的管理;为应用程序向RM申请资源,分配给内部的task;需要与NM通信
- Container容器:封装了CPU、Memory等资源的一个容器,是一个任务运行环境的抽象
- Client客户端:提交作业,查询作业运行进度,杀死作业
- Client提交作业请求
- RM进程和NM进程通信,根据集群资源,为用户程序分配第一个Container,并将AM分发到这个Container上
- 在启动的Container中创建AM
- AM启动后向RM注册进程,申请资源
- AM申请到资源后,向对应的NM申请启动Container,将要执行的程序分发到NM上
- Container启动后,执行对应任务
- Task执行完毕后,向AM返回结果
- AM向RM汇报任务结束,请求kill进程