Hadoop是一个开源的分布式计算框架,主要用于存储和处理大规模的数据集。他的设计目标是能在廉价的硬件上创建集群,并提供高吞吐量的数据访问。hadoop和核心架构主要由以下组件构成:
-
HDFS (Hadoop Distributed File System)
-
YARN (Yet Another Resource Negotiator)
-
MapReduce
1. HDFS (Hadoop Distributed File System)
HDFS是Hadoop的分布式文件系统,用于存储大规模数据集。他的设计目标是提供高容错性与高吞吐量。
主要组件:
-
NameNode: 负责管理文件系统的元数据,如文件名、目录结构、文件块的位置等。NameNode 是 HDFS 的主节点。
-
DataNode: 负责存储实际的数据块。DataNode 是 HDFS 的从节点,定期向 NameNode 报告其存储的数据块状态。
-
Secondary NameNode: 辅助 NameNode,定期合并 fsimage 和 edits 文件,以减少 NameNode 的启动时间。
特点:
-
分布式存储: 数据被分割成多个块,并分布在多个 DataNode 上。
-
高容错性: 每个数据块都有多个副本(默认是 3 个),存储在不同的 DataNode 上。
-
高吞吐量: 数据访问模式是“一次写入,多次读取”,适合大数据批处理。
2. YARN (Yet Another Resource Negotiator)
YARN 是 Hadoop 的资源管理框架,负责集群资源的管理和作业调度。
主要组件:
-
ResourceManager (RM): 负责整个集群的资源管理和调度。ResourceManager 是 YARN 的主节点。
-
NodeManager (NM): 负责单个节点的资源管理和任务执行。NodeManager 是 YARN 的从节点,定期向 ResourceManager 报告资源使用情况。
-
ApplicationMaster (AM): 每个应用程序都有一个 ApplicationMaster,负责与 ResourceManager 协商资源,并与 NodeManager 协作执行任务。
特点:
-
资源管理: YARN 将集群资源(CPU、内存等)统一管理,按需分配给不同的应用程序。
-
作业调度: YARN 支持多种调度策略,如 FIFO、Capacity Scheduler、Fair Scheduler 等。
-
多任务支持: YARN 可以同时运行多个应用程序,如 MapReduce、Spark、Flink 等。
3. MapReduce
MapReduce 是 Hadoop 的分布式计算模型,用于处理大规模数据集。它将计算任务分为两个阶段:Map 阶段和 Reduce 阶段。
主要组件:
-
Map 阶段: 将输入数据分割成多个小块,每个小块由一个 Map 任务处理,生成中间键值对。
-
Reduce 阶段: 将 Map 阶段生成的中间键值对按键进行分组,每个分组由一个 Reduce 任务处理,生成最终结果。
特点:
-
分布式计算: Map 和 Reduce 任务分布在多个节点上并行执行。
-
容错性: 如果某个任务失败,YARN 会自动重新调度该任务。
-
高吞吐量: 适合处理大规模数据集,支持批处理任务。
Hadoop架构图:
架构图解析
1. NameNode (HDFS Master)
-
功能: NameNode 是 HDFS(Hadoop Distributed File System)的主节点,负责管理文件系统的元数据,如文件名、目录结构、文件块的位置等。
-
作用: 它不存储实际数据,而是存储数据的元信息,并协调 DataNode 的工作。
2. DataNode (HDFS Slave)
-
功能: DataNode 是 HDFS 的从节点,负责存储实际的数据块。
-
作用: 数据被分割成多个块并分布存储在多个 DataNode 上,每个数据块通常有多个副本以实现容错。
3. ResourceManager (YARN Master)
-
功能: ResourceManager 是 YARN(Yet Another Resource Negotiator)的主节点,负责整个集群的资源管理和作业调度。
-
作用: 它分配集群资源(如 CPU、内存)给不同的应用程序,并管理 NodeManager。
4. NodeManager (YARN Slave)
-
功能: NodeManager 是 YARN 的从节点,负责单个节点的资源管理和任务执行。
-
作用: 它监控节点的资源使用情况,并向 ResourceManager 报告。
5. MapReduce (Compute Engine)
-
功能: MapReduce 是 Hadoop 的分布式计算模型,用于处理大规模数据集。
-
作用: 它将计算任务分为 Map 和 Reduce 两个阶段,分布式处理数据。
6. ApplicationMaster (Per Application)
-
功能: ApplicationMaster 是每个应用程序的协调者,负责与 ResourceManager 协商资源,并与 NodeManager 协作执行任务。
-
作用: 它为每个应用程序(如 MapReduce 作业)管理任务的生命周期