1. Hadoop
1.1 Hadoop 是什么
Apache Hadoop 软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。
1.2 Hadoop 组件
Hadoop HDFS:分布式文件系统,解决海量数据存储
Hadoop YARN:集群资源管理和任务调度框架,解决资源任务调度
Hadoop MapReduce:分布式(离线并行)计算框架,解决海量数据计算
Hadoop Common:支持其他模块的工具模块
1.3 Hadoop 特性
高扩展: Hadoop 是在可用的计算机集群间分配数据完成计算任务,这些集群可方便的
扩展到数以千计的节点中。
高效性: 通过并发数据,Hadoop 可以在节点之间动态并行的移动数据,使得速度非常快。
高可靠: 能自动维护数据的多份数据,并在任务失败后自动地重新部署计算任务。
低成本: Hadoop 通过普通廉价的机器组成服务器集群来分发以及处理数据。
1.4 Hadoop 发行版本
Apache 开源社区版本:https://hadoop.apache.org/
Cloudera(CDH):https://www.cloudera.com/products/open-source/apache-hadoop.html
Hortonworks(HDP):https://cn.cloudera.com/products/hdp.html
HUAWEI: Fusion Insight HD
1.5 Hadoop 机构变迁
Hadoop 1.0
- HDFS
- MapReduce
Hadoop 2.0
- HDFS
- MapReduce
- YARN)
Hadoop 3.0
- HDFS:EC 纠删码、多 NameNode 支持
- MapReduce:任务本地优化、内存参数自动推断
- YARN: Timeline Service V2、队列配置
2. Hadoop HDFS
2.1 HDFS
HDFS: Hadoop Distributed File System,一个高可靠、高吞吐量的分布式文件系统
**HDFS元素: ** NameNode、DataNode、Secondary NameNode、Block
NameNode: 集群中的 Master 节点(主节点),负责管理元数据(文件属性信息)
DataNode: 集群中的 Slave 节点(从节点),是文件存储的基本单元,用来管理文件块
Secondary NameNode: 集群中的主节点辅助节点,用于 NameNode 的存储优化和数据恢复
组件间关系:
- 一个HDFS集群是由一个 NameNode 和一定数目的 DataNode 组成。
- DataNode 负责处理文件系统客户端的读写请求,在 NameNode 的统一调度下进行数据块的创建、删除和复制。
- 典型的部署场景是一台机器上只运行一个 NameNode 实例,而集群中的其它机器分别运行一个 DataNode 实例。
3. Hadoop YARN
3.1 YARN
YARN: Yet Another Resource Negotiator,集群资源管理和任务调度框架。基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。
YARN组件: ResourceManager、NodeManager、ApplicationMaster、Container
3.2 YARN 组件
ResourceManager(RM): 集群中的主节点(Master进程),用于接收客户都提交的任务,并将任务分发给NodeManager,启动/监控ApplicationMaster
NodeManager(NM): 集群中的从节点(Salve进程),用于启动容器运行RM分发的任务、处理来自 ApplicationMaster 的命令,管理容器监控其他资源使用情况
ApplicationMaster: 数据切分、为应用程序申请资源,对单个作业的资源管理和任务监控
Container: 资源(内存、CPU等)申请的单位和任务运行的容器,YANR 以 Container 为单位分配资源
组件间关系:
- ResourceManager 和 NodeManager 构成了数据计算框架,ResourceManager 对各个 NodeManager 上的资源进行统一管理和调度
- NodeManager 负责容器、监控其资源使用情况(CPU、内存、磁盘、网络)并将其报告给 ResourceManager/Scheduler
- ApplicationMaster协商来自 ResourceManager 的资源并与 NodeManager 一起执行和监视 Container
- ApplicationMaster 和 Container 构成了分布式计算框架的基础
4. Hadoop MapReduce
4.1 MapReduce
**MapReduce: **分布式计算框架,是一种设计思想,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
Map: 将数据进行映射
Reduce: 将Map执行完毕的结果进行聚合(归约)
指定一个 Map 函数,用来把一组键值对映射成一组新的键值对,指定并发的 Reduce 函数,用来保证所有映射的键值对中的每一个共享相同的键组。