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

相关推荐
莫叫石榴姐1 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
魔珐科技2 小时前
以3D数字人AI产品赋能教育培训人才发展,魔珐科技亮相AI+教育创新与人才发展大会
大数据·人工智能
上优3 小时前
uniapp 选择 省市区 省市 以及 回显
大数据·elasticsearch·uni-app
陌小呆^O^3 小时前
Cmakelist.txt之Liunx-rabbitmq
分布式·rabbitmq
samLi06204 小时前
【更新】中国省级产业集聚测算数据及协调集聚指数数据(2000-2022年)
大数据
Mephisto.java4 小时前
【大数据学习 | Spark-Core】Spark提交及运行流程
大数据·学习·spark
EasyCVR5 小时前
私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
大数据·网络·音视频·h.265
hummhumm5 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
斯普信专业组5 小时前
深度解析FastDFS:构建高效分布式文件存储的实战指南(上)
分布式·fastdfs