hadoop

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任务的输出结果。

相关推荐
传输能手2 小时前
从三方云服务器将数据迁移至本地,如何保障安全高效?
大数据·服务器·数据库
再拼一次吧3 小时前
Elasticsearch
大数据·elasticsearch·搜索引擎
橙子qyfftf3 小时前
深度了解flink(七) JobManager(1) 组件启动流程分析
大数据·flink
昨天今天明天好多天3 小时前
【Mac】Homebrew
大数据·macos
爱奇艺技术产品团队4 小时前
爱奇艺大数据多 AZ 统一调度架构
大数据·架构
安科瑞武陈燕WX172696036555 小时前
智慧用电监控装置:引领0.4kV安全用电新时代
大数据·人工智能·安全
m0_375599735 小时前
Hadoop:单机伪分布式部署
大数据·hadoop·分布式
flying robot6 小时前
PySpark和Hadoop
大数据·hadoop·分布式
小森饭6 小时前
Kubernetes运行大数据组件-运行hive
大数据·hive·云原生·kubernetes