当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/56982.html

相关文章:

  • LeetCode53:最大子数组和
  • 论文解析七: GNN与GCN(图神经网络)一站式详细讲解
  • 2024第一次随堂测验参考答案
  • Data+AI下的云数仓未来已来!
  • 创建型模式-----(单例模式)
  • 代码随想录算法训练营第46期Day35
  • linux 编译安装的php7.4 开启pgsql,pdo_pgsql的扩展
  • 软件设计师考试大纲整理
  • JavaEE进阶----18.<Mybatis补充($和#的区别+数据库连接池)>
  • 如何设置Page Cache的大小为默认值
  • 32 类和对象 · 中
  • 卡牌抽卡机小程序,带来新鲜有趣的拆卡体验
  • 2025秋招八股文--mysql篇
  • 日志分析工具-应急响应实战笔记
  • 网络不稳定?试试这款Figma的中文替代设计工具
  • LLaMA Factory环境配置
  • ERP、SCM与CRM:三大系统的区别与整合策略
  • Go语言开发环境搭建
  • 源代码防泄密技术正在更新迭代中
  • curl请求接口的三个坑
  • 117.WEB渗透测试-信息收集-ARL(8)
  • STM32CubeMX软件界面不清晰调整方法
  • 专利交易:开启知识产权变现之门
  • 大厂面试真题-说说Clickhouse比Hbase强在哪
  • linux之网络子系统-路由子系统(1)
  • 分享一些成功保障淘宝详情接口调用安全性的实践案例