首页IT科技hadoop的生态项目(Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn)

hadoop的生态项目(Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn)

时间2025-04-30 19:07:10分类IT科技浏览3639
导读:大家好,我是北山啦,好久不见,Nice to meet you,本文将记录学习Hadoop生态圈相关知识。...

大家好         ,我是北山啦                  ,好久不见     ,Nice to meet you      ,本文将记录学习Hadoop生态圈相关知识         。

大数据时代

大数据是指无法在一定时间范围内通过常用软件工具进行捕捉         、管理和处理的数据集合                 ,是需要新处理模式才具有更强的决策力                  、洞察发现力和流程优化能力的海量     、高增长率和多样化的信息资产

大数据时代的特征5V

应用场景        ,包括电商领域中的推荐以及金融方面中的个人信用评估    ,交通领域中拥堵预测                ,导航最优规划等等           ,https://beishan.blog.csdn.net/

大数据场景下:海量数据如何存储以及海量数据如何计算?

这里涉及到分布式      、集群的概念

海量数据如何存储以及海量数据如何计算

Hadoop

Hadoop概述

官网:https://hadoop.apache.org/

侠义上Hadoop指的是Apache软件基金会的一款开源软件

允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理

Hadoop核心组件

HDFS:分布式文件存储系统  ,解决海量数据存储

YARN:集群资源管理和任务调度框架               ,解决资源任务调度

MapReduce:分布式计算框架              ,解决海量计算

广义上Hadoop指的是围绕Hadoop打造的大数据生态圈

Hadoop特性优点

Hadoop国内外应用

Hadoop最先应用于国内外的互联网公司,外国的例如:Yahoo                 、Facebook        、IBM                  。国内的例如:BAT以及华为

Hadoop的成功在于它的通用性以及简单

精确区分做说什么和怎么做            ,做什么属于业务问题                 ,怎么做属于技术问题  ,用户负责业务         ,Hadoop负责技术

Hadoop发行版本

分为开源社区版以及商业发行版

开源社区版本:https://hadoop.apache.org/

商业发行版本:https://www.cloudera.com/products/open-source/apache-hadoop.html

截至目前                  ,Hadoop以及发展到了3.x版本     ,Hadoop1.0时      ,包括HDFS(分布式文件存储)和MapReduce(资源管理和分布式数据处理)                 ,到2.0        ,将MapReduce(分布式数据处理)进行拆分    ,引入新的组件YARN(集群资源管理    、任务调度)

Hadoop3.0架构组件和Hadoop2.0类似                ,3.0着重于性能优化

Hadoop集群整体概述

Hadoop集群包括两个集群:HDFS集群                、YARN集群 两个集群在逻辑上分离通常物理上在一起 两个集群都是标准的主从架构集群

MapReduce是计算框架           、代码层面的组件 没有集群之说

两个集群在逻辑上分离通常物理上在一起           ,可以从下图中理解

HDFS集群由一主(NN即NameNode)三从(DN即DataNode)+一个秘书(SNN即Secondary NameNode)构成

YARN集群由RM即Resource Manager和NM即Node Manager构成

Hadoop集群 = HDFS集群 + YARN集群

逻辑上分离  ,指他们之间互相没有依赖 物理上一起               ,指进程部署在同一台机器上

HDFS分布式文件系统

文件系统是一种存储和组织数据的方法              ,实现了数据的存储  、分级组织               、访问和获取等操作,使得用户对访问和查找变得容易            ,文件系统使用树形目录的逻辑抽象代替了硬盘等物理设备使用数据块的概念                 ,用户不需要关系数据底层存在硬盘哪里  ,只需记得这个文件所属的目录和文件名即可

传统常见的文件系统

海量数据存储遇到的困难:

传统存储硬件通用性差         ,设备投资加上后期维修              、升级扩容的成本非常高 传统存储方式意味着:存储时存储                  ,计算是计算     ,当需要处理数据的时候把数据移动过来 性能低      ,单节点I/O性能瓶颈无法逾越                 ,难以支持海量数据的高并发高吞吐 可扩展性差

数据和元数据

HDFS核心属性 分布式存储 元数据记录 分块存储 副本机制

分布式存储

数据量大        ,单机存储遇到瓶颈    ,分布式存储通过横向扩展来解决数据存储问题

元数据记录

针对文件分布在不同机器上不利于寻找                ,元数据记录下文件机器存储位置信息           ,快速定位文件位置

分块存储

文件过大导致单机存放不下  ,上传下载效率低     。通过文件分块存储在不同机器               ,针对块并行操作提高效率

副本机制

不同机器设置备份              ,冗余存储,保障数据安全

总结如下:

HDFS简介

HDFS(Hadoop Distributed File System),Hadoop分布式文件系统            ,是Apache Hadoop的核心组件之一                 ,作为大数据生态圈最底层的分布式存储服务而存在  ,也可以说大数据首要解决的我呢提就是海量数据的存储问题

HDFS shell操作

HDFS Shell包含了各种的类Shell的命令         ,可以直接与Hadoop分布式文件系统以及其他文件系统进行交互                  ,常用命令如下:

这里搬运的CSDN气质&末雨的总结     ,感谢感谢

Map Reduce

hadoop主键之MapReduce

分而治之思想、设计构思            、官方示例                 、执行流程

分而治之

MapReduce的核心思想是:分而治之

将原问题拆分位若干个子问题      ,并对子问题进行求解                 ,最后进行合并        ,得到原问题的解      。

将原问题拆分位若干个小问题之后    ,可以并行处理                ,同时来计算                 。当然           ,如果无法拆分或者拆分后小问题之间存在着依赖关系  ,那就不能用分而治之的思想        。

能不能拆分 是否存在依赖

举例:要数停车场中的所有停放车的总数量

Map:你数一列               ,我数一列…这就是Map阶段              ,人越多,能过够同时数车的人就越多            ,速度就越快    。

Reudece:数完之后                 ,聚在一起  ,把所有人的统计数加在一起         ,这就是Reduce合并汇总阶段

理解MapReduce思想

MapReduce的思想很好理解                  ,关键在于如何基于这个思想设计出一款分布式计算程序 后续讲解Hadoop团队针对MapReduce的设计构思 如何针对大数据处理场景 构建抽象编程模型

MapReduce借鉴了函数式语言中的思想     ,再用Map和Reduce两个函数提供了高层的并行编程抽象模型                。

Map:对一组数据元素进行某种重复式的处理

Reduce:对Map的中间结果进行某种进一步的结果整理

MapReduce中定义了如下的Map和Reduce两个抽象的编程接口      ,由用户编程实现:

通过以上两个编程接口                 ,大家可以看出MapReduce处理的数据类型是<key,value>键值对 统一架构  、隐藏底层细节

分布式计算概念

分布式计算是一种计算方法        ,和集中式计算是相对的 随着计算机技术的发展    ,有些应用需要非常巨大的计算能力才能完成                ,如果采用集中式计算           ,需要耗费相当长的时间来完成 分布式计算将改应用分解成许多小的部分  ,分配给堕胎计算机进行处理               ,这样可以节约整体计算时间              ,大大提高计算效率

MapReduce介绍

Hadoop MapReduce是一个分布式计算框架,用于轻松编写分布式应用程序            ,这些应用程序以可靠                 ,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集) Map Reduce是一种面向海量数据处理的一种指导思想  ,也是一种用于大规模数据进行分布式计算的编程模型

MapReduce产生背景

由Google于2004年的论文中《MapReduce:Simplified Data Processing on Large Cluster》中提出

MapReduce特点

易于编程:MapReduce提供了用于二次开发的接口         ,简单地实现一些接口                  ,就可以完成一个分布式程序     ,任务计算交给计算框架去处理      ,将分布式程序部署到hadoop集群上运行                 ,集群节点可以扩展到成百上千

良好的扩展性:当计算机资源不能得到满足的时候        ,可以通过增加机器来扩展计算能力    ,基于MapReduce的分布式计算的特点可以随节点数目增长保持近乎于线性的增长                ,这也是MapReduce处理海量数据的关键           ,通过将计算节点增至几百或几千就可以很容易地处理数TB甚至数PB的离线数据

高容错性:Hadoop集群式分布式搭建和部署的  ,任何一个机器节点宕机了               ,它可以把上面的计算任务转移到另一个节点上运行              ,不影响整个作业任务的完成,过程完全是Hadoop内部完成的

适合海量数据的离线处理:可以处理GB         、TB和PB级别的数据量

MapReduce局限性

MapReduce虽然有很多优势            ,也有相对的局限性                 ,局限性不代表不能做  ,而是在某些场景下实现效果比较差         ,不适合MapReduce来处

实时计算性能差:MapReduce主要应用于离线作业                  ,无法做到秒级的数据相应

不能进行流式计算:流式计算特点是数据源源不断地计算     ,并且数据是动态的      ,而MapReduce作为一个离线计算框架                 ,主要是针对静态数据集的        ,数据是不能动态变化的

MapReduce实例进程

一个完整的MapReduce程序在分布式运行时有三类

MRAppMaster:负责整个MR程序的过程调度以及状态协调 MapTask:负责map姐u单的整个数据处理流程 ReduceTask:负责reduce阶段的整个数据处理流程

MapReduce阶段组成

一个MapReduce编程模型中只包含一个Map阶段和Reduce阶段    ,或者只有Map阶段 不能有诸多个map阶段                ,多个reduce阶段的出现 如果用户的业务逻辑非常复杂           ,那就只能多个MapReduce程序串行运行

MapReduce数据类型

在整个MapReduce程序中  ,数据都是以kv键值对的形式流转的 在实际编程解决各种业务问题中               ,需要考虑每个阶段的输入输出kv是什么 MapReduce内置了很多默认属性              ,比如排序,分组等            ,都和数据的k相关                 ,所以说kv的类型数据确定是极其重要的

MapReduce官方示例

概述:

实例说明:

计算圆周率Π的值

WordCount词频统计

WordCount算是大数据计算领域经典的入门案例  ,相当于hello world 通过WordCount         ,可以感受背后MapReduce的执行流程和默认的行为机制

WordCount编程实现思路

map阶段核心:把输入的数据进行切割                  ,全部标记     ,因此输出就是<单词      ,1>

shuffle阶段核心:经过MR程序内部自带默认的排序分组等功能                 ,把key相同的单词会作为一组数据构成新的kv对

reduce阶段核心:处理shuffle完成的一组数据        ,该组数据就是该代词所有的键值对    ,对所有的1进行累计求和                ,就是单词的总数

Word程序提交

Map阶段执行流程

依托WordCount程序

MapReduce整体执行流程图

Map阶段执行过程

![在这里插入图片描述](https://img-blog.csdnimg.cn/b721600efc88488f9ce65fad59774916.png

Reduce阶段执行流程

Reduce阶段执行过程

Shuffle机制

Shuffle的本意是洗牌的意思           ,把一组有规则地数据尽量打乱成无规则的数据 在MR中  ,Shuffle更像是洗牌的逆过程               ,指的是将map端的无规则输出按指定的规则‘打乱’成具有一定规则的数据              ,以便reduce端接收处理 一般吧从Map产生输出开始到Reduce得到数据作为输入之前的操作称作shuffle

Map端的shuffle

Reduce端的shuffle

shuffle机制弊端

Shuffle是MapReduce程序的核心和精髓 Shuffle也是MapReduce被诟病最多的地方,MapReduce相比较于Spark                  、Flink计算引擎慢的原因            ,根Shuffle机制有很大的关系 Shuffle中频繁涉及数据在内存                 ,磁盘之间的多次往复

YARN

介绍     、架构组件      、程序提交交互流程                 、调度器

YARN介绍

Apache Hadoop Yarn(Yet Another Resource Negotiatot,另一种资源协调者)是一种新的Hadoop资源管理器 YARN是一个通用资源管理系统和调度平台  ,可为上层应用提供统一的资源管理和调度 它的引入为集群在利用率        、资源同意管理和数据共享等方面带来了巨大好处

YANR是一个通用资源管理系统和调度平台

YARN功能说明

YARN概述

YARN架构    、组件

YARN官方架构图

程序提交YARN交互流程

MR作业提交         ,Client → RM 资源的申请 MrAppMaster → RM MR作业状态汇报 Container(Map|Reduce task) → Container(MrAppMaster) 节点的状态汇报 NM→ RM

YARN资源调度器Scheduler

如何理解资源调度

在理想的情况下                  ,应用程序提出的请求将以及得到YARN的批准     ,但在实际中      ,资源是有限的                 ,并且在繁忙的集群中        ,应用程序通常将需要等待其后写请求得到满足           。YARN调度程序的工作是根据一些定义的策略为应用程序分配资源 在YARN中    ,负责给应用分配资源的就是Scheduler                ,他是ResourceManager的核心组件之一           ,Scheduler完全专用于调度作业  ,他无法跟踪应用程序的状态 一般而言               ,调度是一个难题              ,并且没有一个最佳的策略,为此            ,YARN提供了多种调度器和配置的策略供选择

调度器策略

根据需求                 ,选择合适的调度器

FIFO Schedule Capacity Schedule Fair Schedule

FIFO Scheduler

Capacity Schedule

Fair Schedule

https://beishan.blog.csdn.net/  ,我是北山啦         ,欢迎评论交流

声明:本站所有文章                  ,如无特殊说明或标注     ,均为本站原创发布  。任何个人或组织      ,在未征得本站同意时                 ,禁止复制                、盗用           、采集  、发布本站内容到任何网站               、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益        ,可联系我们进行处理              。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
创建一个springboot的web项目(【springBoot篇1】概念、创建和运行) 如何挖掘网站的SEO优化(实用技巧分享)