Hadoop的概念

目录

1.什么是大数据

2.Hadoop体系结构

1:HDFS(Hadoop Distributed File System)

2 :MapReduce

3:YARN(Yet Another Resource Negotiator)

3、Hadoop生态圈

4、MapReduce的原理和工作流程

5、YARN的原理和工作流程


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集群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android gradle 配置国内gradle地址

1. 地址: 腾讯云镜像 Gradle下载地址:https://mirrors.cloud.tencent.com/gradle/ 阿里云镜像 Gradle下载地址:https://mirrors.aliyun.com/macports/distfiles/gradle/ 阿里云镜像 Gradle下载地址:https://mirrors.aliyun.com…

浪潮服务器主板集成RAID常见问题

★主板集成RAID出现Initialize初始化,如下图 判断及解决方案: 1.机器是否有过插拔硬盘等操作。 2.系统初始化-系统启动会非常的慢。一般为非法关机或者断电导致。 3.出现此情况耐心等待磁盘初始化完成即可。系统初始化时间以具体的数据大小来决定&#…

Linux启动流程和Systemd特性

文章目录 内核设计流派linux启动流程1.硬件加电自检2.启动加载器bootloader3.加载kernel4.init初始化5.用户终端启动 systemdsystemd特性systemd的unitunit配置文件 systemctl管理系统服务service unit服务状态 service unit文件格式Unit段Service段Install段 内核设计流派 1.…

android 实现简易音乐播放器

音乐App 源代码 : 简易音乐APP源代码 1、简介 一个简易的音乐APP,主要练习对四大组件的应用。感兴趣的可以看看。 播放界面如下: 歌曲列表界面如下: 项目结构如下: 接下来将对代码做详细介绍: 2、Musi…

【SpringCloud Alibaba】(九)学习 Gateway 服务网关

目录 1、网关概述1.1、没有网关的弊端1.2、引入 API 网关 2、主流的 API 网关2.1、NginxLua2.2、Kong 网关2.3、Zuul 网关2.4、Apache Shenyu 网关2.5、SpringCloud Gateway 网关 3、SpringCloud Gateway 网关3.1、Gateway 概述3.2、Gateway 核心架构 4、项目整合 SpringCloud …

大模型在应用开发安全左移实践

1.应用开发安全左移势在必行 近年来,应用系统被入侵或敏感信息泄漏类的安全事件时有发生,大部分安全事件的根本原因是应用软件设计或实现中存在安全漏洞。由于软件安全性问题导致各种信息泄密、信息被篡改、网络服务中断的事件频发,给企业和…

C# 泛型类型的约束详解与示例

文章目录 一、泛型约束概述二、泛型约束详解与示例1. 类约束2. 接口约束3. 引用类型约束4. 值类型约束5. 无参数构造函数约束6、多重约束7、默认构造函数约束8、基类和接口的组合约束 三、总结 在C#编程语言中,泛型是一种非常强大的特性,它允许我们编写可…

图解Redis五大数据类型

五种数据类型的不同之处&#xff0c;是value在存储时的形式不同。 hash类型 value类型是<key,value>键值对。如果发生hash冲突&#xff0c;用开放定址法解决&#xff0c;不拉链&#xff01; key值重复&#xff0c;则新值覆盖旧值 List类型 Set类型 与List的类似&…

3款一键AI智能改写软件,轻松改出高质量文章 tzq

随着科技的不断发展&#xff0c;人工智能技术正逐渐渗透到各个领域。在写作方面&#xff0c;一键AI智能改写软件的出现&#xff0c;为人们提供了更加便捷高效的写作工具。无论是写作初学者还是专业作家&#xff0c;都可以通过这些软件轻松改写出高质量的文章。本文将介绍三款优…

查找数学类文献的专业数据库有哪些 如何获取这些数据库资源

一、MathSciNet&#xff08;美国数学会《数学评论》&#xff09; MathSciNet数据库是美国数学学会出版的《数学评论》Mathematical Reviews和Current Mathematical Publications的网络版&#xff0c;包含《数学评论》自1940年出版以来的所有评论文章&#xff0c;包括期刊、图书…

【AI+编程】只需1句提示词0代码生成前端展示效果

最近被Vercel发布的V0 编程效果惊艳到了&#xff0c; 不管是前端开发 还是立志成为全栈工程师的 同学&#xff0c;不可错过。 官网地址&#xff1a;https://v0.dev/chat/ 代码生成工具很多&#xff0c;不管是github copilot、阿里的通义灵码&#xff0c; 腾讯云的AI代码助手…

PyTorch升级之旅——主要组成模块

本文仅作为个人学习记录使用 文章目录 前言 一、深度学习的简单流程 二、基本配置 三、数据读入 四、模型构建 五、模型初始化 六、损失函数 七、训练和评估 八、可视化 九、PyTorch优化器 总结 前言 学习链接&#xff1a;第三章&#xff1a;PyTorch的主要组成模块…

leetcode 80 删除有序数组中的重复项 II

正文 仍旧使用双指针&#xff0c; 思想与 leetcode 26 删除有序数组中的重复项 一致。只是此时因为要求保留重复元素两次&#xff0c;我们的左侧指针可以从第二个数据开始&#xff0c;且右侧指针需要和两个元素的值进行判断。 class Solution:def removeDuplicates(self, nums…

深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)

目录 &#x1f354; RNN 概述 1.1 循环神经网络 1.2 自然语言处理 &#x1f354; 词嵌入层 2.1 词嵌入层的使用 2.2 关于词嵌入层的思考 2.3 小节 &#x1f354; 循环网络层 3.1 RNN 网络原理 3.1.1 RNN计算过程 3.1.2 如何计算神经元内部 3.2 PyTorch RNN 层的使用…

Flask返回Json格式字符,中文导致unicode乱码问题

一.问题描述 或者直接返回json格式的字符串 从上图可以看出&#xff0c;当flask实现的接口响应中存在中文时&#xff0c;接口返回json字串的中文为unicode乱码。 二.问题解决 百度搜索了很多&#xff0c;原来在创建flask app时使用json格式的字符串&#xff0c;默认是ascii编…

字节微前端框架Garfish

Garfish 是字节跳动开源的微前端框架&#xff0c;旨在应对现代 Web 应用在前端生态繁荣与应用日益复杂化背景下的挑战。本文将介绍如何使用 Garfish&#xff0c;提供代码示例&#xff0c;并与另一流行的微前端框架 Qiankun 进行对比分析。 安装 Garfish 首先&#xff0c;安装…

快速排序模版

1.霍尔法 #include <iostream> using namespace std; int partition(int *arr,int left,int right){int pivotIndexleft;while(left<right){while(left<right && arr[right]>arr[pivotIndex]){right--;}while(left<right && arr[left]<a…

vTable实现多维表格

介绍 vTable是字节开发的一款能用来渲染表格的库&#xff0c;是用canvas渲染&#xff0c;避免了传统用dom组件表格的一些问题&#xff0c;能很快的渲染出上万格子的表格。 接下来我将使用vTable构建类似下面的多维表格&#xff0c;其中quantity、sales等是指标。 使用 官网地址…

【精选】基于大数据的___银行信用卡用户的数仓系统的设计与实现(全网独一无二,最新定制)

目录&#xff1a; 关键技术介绍 PYTHON语言简介 大数据介绍 MySql数据库 DJANGO框架 Hadoop介绍 Scrapy介绍 B/S架构 系统的设计 系统总功能模块设计 系统测试 系统测试的目的 软件测试过程 6.3测试用例 参考代码&#xff1a; 为什么选择我&#xff1a; 博主介绍&am…