hadoop是Apache基金会开发的分布式系统基础框架。主要用于分布式的存储与分布式分析。该系统的设计可以扩展至数千台机器共同协作,由每台机器提供局部的运算和存储。同时,通过检测和处理应用层的故障,hadoop可以提供高可用性。
一、应用场景:
1、**大数据分析:**它常被用来执行大数据的分析任务,如日志分析、用户行为分析、市场调查等;
2、**数据仓库:**可以作为企业数据仓库的处理,用于存储来自不同来源的结构化数据与非结构化数据;
3、**数据湖:**hadoop可以作为数据湖基础,允许组织存储原始数据,后期使用时再确定最佳使用方案;
4、机**器学习和数据挖掘:**提供大量的数据能力,使其成为训练机器学习模型和数据挖掘的理想选择。
二、核心组件
1、HDFS(Hadoop Distributed File System):提供高吞吐量的数据访问,适合大数据集的文件系统;HDFS包含nameNode和dataNode两种节点,NameNode是HDFS的主服务器,管理文件系统的命名空间和元数据。它记录每个文件中的数据块信息和数据块存储位置,维护数据目录结构和整个文件系统的元数据。在Hadoop2.x中,引入了Secondary NameNode和Active/Standby NameNode的概念来提高系统的容错性和可用性。DataNode存储实际数据,在HDFS中,文件被切分成一个或多个块,这些块存储在一个或多个DataNode上。
2、MapReduce:一个编程模型和处理大数据的实现组件;它包含JobTracker和TaskTracker两个主要的组件。在Hadoop1.x中,JobTracker负责整个系统的调度和监控,它在集群中的一个节点上运行,跟踪每个TaskTracker,提交作业,分配任务,并重新计算失败的任务。TaskTracker运行在集群的每个节点上,负责执行由JobTracker分配的任务。每个TaskTracker执行Map和Reduce任务并将进度和状态报告给JobTracker.
3、YARN(Yet Another Resource Negotiator):资源管理器,用于集群资源管理和调度框架.为了解决Hadoop1.x中的扩展和资源管理问题,Hadoop2.x中引入了YARN,将资源管理和作业调度/监控功能分开。YARN包含ResourceManager、NodeManager、ApplicationMaster几个重要组件。
ResouceManeger:RM是YARN主要组件,负责整个集群的资源管理和作业调度。RM中有两个组件,调度器(Scheduler)和应用程序管理器(ApplicationManager),调度器通过容器、队列等分配资源,而应用程序管理器管理整个系统中所有应用程序的生命周期。
NodeManager:运行在每个节点上,负责监控每个节点上的资源使用情况,并向ResourceManager报告。NM负责管理容器,容器就是执行特定任务(如MapReduce任务)的执行环境。
ApplicationMaster:每个应用程序都有一个ApplicationMaster,它负责切分数据、分配任务和监控任务执行,同时还需与ResourceManager通信以获取所需资源。
4、Common:提供Hadoop需要的常用功能和库
三、核心功能
1、分布式存储:Hadoop通过HDFS提供高效的分布式存储功能,HDFS能存储大量数据,并将数据分割成块(默认大小为128M),并且能跨集群的多个节点分散存储这些块;
2、分布式处理:Hadoop通过MapReduce编程模型处理数据,MapReduce将数据处理过程分成map和reduce两个阶段,允许系统并行处理大量数据;
3、容错和可靠性:Hadoop通过自动保存数据的多个副本来处理数据。如果某个节点出错,系统会重新计算丢失的数据副本;
4、可扩展性:Hadoop集群可以轻松扩展更多的节点,不需要用应用程序、处理流程和数据结构作任何修改。
四、Hadoop任务执行流程
1、作业提交:用户编写MapReduce程序首先提交的YARN的ResourceManager,ResourceManager初始化作业,并启动ApplicationMaster来管理该作业。
2、ApplicationMaster启动:对于每个作业,ResourceManager启动一个ApplicationMaster来负责协调作业的执行,包括请求资源(CPU、内存等)、监控任务进度,并在任务失败时重新调度任务。
3、资源分配:ApplicationMaster向ResourceManager请求运行任务所需要的各种资源,ResourceManeger根据可用资源和策略(如公平调度器事容量调度器)分配资源,并指示ApplicationMaster在哪个DataManager上启动任务。
4、任务执行:ApplicationMaster与选中的NodeManager通信,要求它们启动容器来执行具体任务,NodeManager为任务启动容器,容器内运行实际的Map任务或Reduce任务,这些任务处理输入数据,并产生输出结果。
5、进度与状态更新:Task进程将进度和状态更新通知给NodeManeger,NodeManeger把这些信息更新给ApplicationMaster,,并处理任务调度失败的异常等信息。
6、作业完成:所有任务完成后,ApplicationMaster向ResourceManager注册作业完成,并释放所有资源。用户可以从HDFS查询到MapReduce任务的输出结果。