首页 > 其他分享 >Hadoop的概念

Hadoop的概念

时间:2024-08-21 21:52:27浏览次数:13  
标签:ResourceManager Reduce Hadoop MapReduce 概念 NodeManager 数据

1.什么是大数据

  1. 数据体量巨大:数据量规模庞大,通常以PB(拍字节)或EB(艾字节)来衡量,远远超出了传统数据库和数据处理工具的处理能力。
  2. 数据类型多样:大数据包括结构化数据、半结构化数据和非结构化数据。其中,非结构化数据占据了相当大的比例,如文本、音频、视频、图片、地理位置信息等。
  3. 价值密度低:在大量的数据中,真正有价值的信息可能只是很小的一部分。因此,如何从海量数据中快速提取有价值的信息是大数据处理的一个重要挑战。
  4. 处理速度快:大数据处理需要高效、实时的数据处理技术,以满足对数据价值的快速发现和利用的需求。

目前,有很多大数据处理系统可以处理大数据,如表

名称

类型

说明

Hadoop

开源

Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。

Spark

开源

类似Hadoop MapReduce的并行框架,用于快速处理大量数据。

Storm

开源

实时的、分布式以及具备高容错的计算系统。

MongoDB

开源

面向文档的NoSQL数据库,用于存储和检索键值对数据。

IBM PureData

商用

基于Hadoop,属于IBM专家集成系统PureSystem家族中的组成部分,主要面向大数据应用。

Oracle Exadata

商用

Oracle的新一代数据库云服务器,提供高性能的数据查询功能。

SAP Hana

商用

提供高性能的数据查询功能,用户可以直接对大量实时业务数据进行查询和分析。

Teradata

商用

非结构化数据解决方案。

AsterData

商用

未在图片中提供详细说明,但通常与大规模数据处理相关。

EMC GreenPlum

商用

采用了大规模并行处理,支持50PB级海量存储与管理。

HP Vertica

商用

列式大数据分析数据库,用于大型数据集的高效分析。

2.Hadoop体系结构

1:HDFS(Hadoop Distributed File System)

    • 定义:Hadoop的分布式文件系统,是Hadoop体系结构中负责数据存储管理的基础。
    • 结构:采用主从(Master/Slave)结构模型,由一个NameNode(主服务器)和若干个DataNode(从服务器)组成。NameNode管理文件系统的命名空间和客户端对文件的访问操作,DataNode则负责存储数据。
    • 特点:
      • 高容错性:能够自动检测并应对硬件故障。
      • 高吞吐量:通过流式数据访问提供高吞吐量应用程序数据访问功能。
      • 数据块存储:文件被分成若干个数据块(默认为128MB,用户可设置),并分散存储在多个DataNode上。
      • 元数据管理:NameNode维护文件系统的元数据,如文件块位置、大小、拥有者信息等。

2 :MapReduce

    • 定义:一种并行编程模型,用于大数据量的计算。
    • 结构:由JobTracker(作业跟踪器,运行在NameNode上)和TaskTracker(任务跟踪器,运行在每个DataNode上)组成。JobTracker负责调度作业,将作业切割成多个小任务并分配给TaskTracker执行。TaskTracker负责执行具体的Map和Reduce任务。
    • 特点:
      • 分而治之:将大规模数据集的操作分发给多个节点共同完成,然后整合结果。
      • 可靠性:自动处理节点故障,重新执行失败的任务。
      • 高容错性:通过数据块副本机制提高数据的可靠性。

3:YARN(Yet Another Resource Negotiator)

    • 定义:Hadoop 2.x版本中引入的资源管理系统,用于管理和调度集群中的计算资源。
    • 结构:包括ResourceManager(资源管理器)、NodeManager(节点管理器)、ApplicationMaster(应用程序主)等组件。ResourceManager负责资源的分配和调度,NodeManager管理各个节点的资源,ApplicationMaster则负责应用程序的生命周期管理。
    • 特点:
      • 通用性:支持多种计算框架(如MapReduce、Spark等)在Hadoop集群上运行。
      • 高效性:通过细粒度的资源管理和调度,提高集群的资源利用率。

其他组件

  • Hadoop Common:支持其他模块的公用组件,包括文件系统操作、序列化、网络通信等。
  • Hive:基于Hadoop的数据仓库工具,提供SQL查询功能,将SQL语句转换为MapReduce任务执行。
  • Spark:另一种大数据处理框架,与MapReduce功能类似但性能更优,支持快速迭代和实时计算。

3、Hadoop生态圈

Hadoop不仅仅包括HDFS和MapReduce,还形成了一个庞大的生态圈,包括:

  • Hive:建立在Hadoop上的数据仓库工具,提供SQL类查询语言。
  • Pig:用于大规模数据集的查询和分析平台。
  • HBase:基于Google BigTable的分布式、面向列的数据库。
  • ZooKeeper:为分布式应用提供协调服务的系统。
  • Sqoop:用于在Hadoop与传统数据库之间传输数据。
  • Flume:日志采集系统。
  • Spark:与Hadoop兼容的独立大数据处理框架。

4、MapReduce的原理和工作流程

原理:

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它采用“分而治之”的策略,将复杂任务分解成多个子任务,在Hadoop集群的多个节点上并行执行,然后将结果合并得到最终答案。MapReduce的核心思想是将数据(或计算任务)的“Map(映射)”和“Reduce(归约)”两个过程分开,“Map”将数据分割成不相关的区块,便于并行处理;“Reduce”则将结果汇总输出。

如图是MapReduce的工作流程图

工作流程:

  1. 作业提交:客户端提交MapReduce作业到JobTracker(在Hadoop 2.x及以后版本中,JobTracker的功能被ResourceManager和ApplicationMaster取代)。
  2. 作业初始化:JobTracker(或ResourceManager)接收作业,进行初始化操作,包括创建作业ID、配置作业参数等。
  3. 任务分配:JobTracker(或ResourceManager)将作业分割成多个Map任务和Reduce任务,并将这些任务分配给空闲的TaskTracker(或NodeManager)执行。
  4. Map阶段:
    • 每个Map任务读取输入数据(通常是一个HDFS上的数据块),并将其分割成多个键值对(key-value pairs)。
    • 对每个键值对执行用户定义的Map函数,输出中间结果。
    • 将中间结果写入本地磁盘,并通知Reduce任务拉取数据。

        5.Shuffle阶段:

    • Reduce任务从Map任务拉取中间结果,并进行排序和合并。
    • Shuffle过程包括数据的分区、排序、合并等操作,以确保Reduce任务能够正确接收和处理数据。

        6.Reduce阶段:

    • Reduce任务对收到的数据进行归约操作,执行用户定义的Reduce函数。
    • 将最终结果输出到HDFS或其他存储系统。

        7.作业完成:所有Reduce任务完成后,作业结束。JobTracker(或ResourceManager)通知客户端作业已完成。

设计框架:

MapReduce的设计框架主要包括JobClient、JobTracker(或ResourceManager)、TaskTracker(或NodeManager)等组件。JobClient负责作业的提交和监控;JobTracker(或ResourceManager)负责作业的调度和资源管理;TaskTracker(或NodeManager)负责执行具体的Map和Reduce任务。

5、YARN的原理和工作流程

原理:

YARN(Yet Another Resource Negotiator)是Hadoop 2.x版本中引入的资源管理系统,用于管理和调度集群中的计算资源。YARN将资源管理和作业调度/监控的功能分离,使得Hadoop集群能够同时运行多种计算框架(如MapReduce、Spark等)。YARN采用主从结构,包括ResourceManager(主节点)和NodeManager(从节点)等组件。如图是YARN的工作流程图

工作流程:

  1. 作业提交:客户端提交应用程序到ResourceManager。
  2. 资源申请:ResourceManager为应用程序分配一个ApplicationMaster(AM),AM负责向ResourceManager申请资源(如CPU、内存等)。
  3. 资源分配:ResourceManager根据集群的资源情况和调度策略,为AM分配资源,并通知相应的NodeManager启动Container。
  4. 任务执行:AM在分配到的Container上启动应用程序的任务(如Map和Reduce任务),并监控任务的执行情况。
  5. 进度和状态更新:任务将其进度和状态信息返回给AM,AM再将这些信息汇总后报告给ResourceManager和客户端。
  6. 作业完成:所有任务完成后,AM向ResourceManager申请注销自己,作业结束。

设计框架:

YARN的设计框架主要包括ResourceManager、NodeManager、ApplicationMaster等组件。ResourceManager负责资源的全局管理和调度;NodeManager负责节点上资源的监控和管理;ApplicationMaster负责应用程序的生命周期管理。

配置文件:

配置文件

路径

主要作用

yarn-site.xml

$HADOOP_CONF_DIR(通常是

/etc/hadoop/conf${HADOOP_HOME}/etc/hadoop)

定义YARN集群的全局配置,如ResourceManager的地址、NodeManager的配置、调度器类型(如Capacity Scheduler或Fair Scheduler)等。

capacity-scheduler.xml

$HADOOP_CONF_DIR

专用于Capacity Scheduler的配置文件,定义了队列结构、资源限制、用户权限等。Capacity Scheduler是YARN默认的资源调度器之一,它允许将资源划分为多个队列,每个队列都有自己的容量和限制。

fair-scheduler.xml

$HADOOP_CONF_DIR

专用于Fair Scheduler的配置文件,定义了队列的权重、优先级、资源限制等。Fair Scheduler是另一种资源调度器,它试图公平地分配资源给所有应用程序,无论它们何时提交。

container-executor.cfg

/etc/hadoop/conf(或类似路径)

配置容器执行器的参数,容器执行器负责在YARN节点上安全地执行容器。这个文件通常包含安全相关的配置,如用户权限、组权限等。

nodemanager-env.sh

$HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop

NodeManager的环境配置文件,用于设置NodeManager启动时的环境变量。

resourcemanager-env.sh

$HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop

ResourceManager的环境配置文件,用于设置ResourceManager启动时的环境变量。

log4j.properties

$HADOOP_CONF_DIR

配置YARN组件的日志级别和输出格式。这个文件允许你控制日志的详细程度,以便更好地监控和调试YARN集群。

标签:ResourceManager,Reduce,Hadoop,MapReduce,概念,NodeManager,数据
From: https://blog.csdn.net/qq_51678989/article/details/141403722

相关文章

  • Docker 基本概念
    Container(容器)容器的特点:Self-contained.Eachcontainerhaseverythingitneedstofunctionwithnorelianceonanypre-installeddependenciesonthehostmachine.Isolated.Sincecontainersareruninisolation,theyhaveminimalinfluenceonthehostand......
  • RabbitMQ 基础概念与架构设计及工作机制学习总结
    什么是RabbitMQMQ全称为MessageQueue,即消息队列.它也是一个队列,遵循FIFO原则。RabbitMQ则是一个开源的消息中间件,由erlang语言开发,基于AMQP协议实现的一个软件产品,提供应用程序之间的通信方法,在分布式系统开发中广泛应用。AMQP协议AMQP,即AdvancedMessageQueuingProtocol,......
  • XSS 基本概念和原理介绍
    XSS基本概念和原理介绍基本概念跨站脚本攻击XSS(CrossSiteScripting),为了不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意JavaScript代码,当用户浏览该页面时,嵌入在Web里面的JS代码会被解......
  • Hadoop学习总结
    除了HDFS和MapReduce,Hadoop生态系统还包含了许多其他强大且实用的工具和框架,它们在数据分析和处理领域中发挥了重要作用。其中,Hive、Pig和Spark是几个尤为重要的组件,它们为处理和分析大数据提供了更高层次的抽象和简化的操作流程。在这篇报告中,我将分享我对这些工具的探索与使用经......
  • Vue组件概念以及全局组件定义
    组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不能的功能木块,将来需要什么样的功能,就可以去调用组件和模块化的不同:模块化:是从代码逻辑的角度进行划分的,方便代码分层开发,保证每个功能模块只能单一组件化:是从UI界面的角度进行划分的,前端的组件化,方便UI......
  • 异常与中断的概念以及处理流程
    1.CPU理解的中断CPU在运行的过程中,也会被各种“异常”打断。这些“异常”有:指令未定义指令、数据访问异常SWI(软中断)快中断中断中断也是“异常”的一种,导致中断发生的情况有按键定时器ADC转换完成uart发送完数据,收到收据等等这些众多的“中断源”,汇集到“中......
  • ArgoWorkflow教程(二)---快速构建流水线:Workflow & Template 概念
    上一篇我们部署了ArgoWorkflow,并创建了一个简单的流水线做了个Demo。本篇主要分析ArgoWorkflow中流水线相关的概念,了解概念后才能更好使用ArgoWorkflow。本文主要分析以下问题:1)如何创建流水线?Workflow中各参数含义2)WorkflowTemplate流水线模版如何使用,3)Workflow、Wo......
  • 基于Hadoop的异构网络协同过滤推荐算法设计
    基于Hadoop的异构网络协同过滤推荐算法设计DesignofHeterogeneousNetworkCollaborativeFilteringRecommendationAlgorithmbasedonHadoop完整下载链接:基于Hadoop的异构网络协同过滤推荐算法设计文章目录基于Hadoop的异构网络协同过滤推荐算法设计摘要第一章......
  • 基于Hadoop的海量图像检索
    基于Hadoop的海量图像检索“MassiveImageRetrievalBasedonHadoop:AStudyinSoftwareEngineering”完整下载链接:基于Hadoop的海量图像检索文章目录基于Hadoop的海量图像检索摘要第一章引言1.1研究背景1.2研究意义1.3国内外研究现状1.4研究内容与方法1.5......
  • 多线程概念
    packagecom.shujia.day19;/*多线程:进程:正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。理解:一个正在运行的软件线程:是进程中的单个顺序控制流,是......