文章目录

  • 大数据时代
  • Hadoop
    • Hadoop概述
      • Hadoop特性优点
      • Hadoop国内外应用
      • Hadoop发行版本
      • Hadoop集群整体概述
    • HDFS分布式文件系统
      • 传统常见的文件系统
      • 数据和元数据
        • HDFS核心属性
      • HDFS简介
      • HDFS shell操作
  • Map Reduce
    • 分而治之
    • 理解MapReduce思想
      • 分布式计算概念
    • MapReduce介绍
      • MapReduce产生背景
      • MapReduce特点
      • MapReduce局限性
      • MapReduce实例进程
      • MapReduce阶段组成
      • MapReduce数据类型
    • MapReduce官方示例
      • 计算圆周率Π的值
      • WordCount词频统计
    • Map阶段执行流程
    • Reduce阶段执行流程
    • Shuffle机制
  • YARN
    • YARN介绍
      • YARN功能说明
      • YARN概述
    • YARN架构、组件
    • 程序提交YARN交互流程
    • YARN资源调度器Scheduler

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

大数据时代

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

大数据时代的特征5V

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|YarnHadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
大数据场景下:海量数据如何存储以及海量数据如何计算?

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
海量数据如何存储以及海量数据如何计算

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop概述

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

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

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

Hadoop核心组件
HDFS:分布式文件存储系统,解决海量数据存储
YARN:集群资源管理和任务调度框架,解决资源任务调度
MapReduce:分布式计算框架,解决海量计算
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop特性优点

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop国内外应用

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop的成功在于它的通用性以及简单

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

Hadoop发行版本

分为开源社区版以及商业发行版
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
开源社区版本:https://hadoop.apache.org/
商业发行版本:https://www.cloudera.com/products/open-source/apache-hadoop.html
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop3.0架构组件和Hadoop2.0类似,3.0着重于性能优化

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop集群整体概述

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

两个集群在逻辑上分离通常物理上在一起,可以从下图中理解
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
HDFS集群由一主(NN即NameNode)三从(DN即DataNode)+一个秘书(SNN即Secondary NameNode)构成

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

Hadoop集群 = HDFS集群 + YARN集群

HDFS分布式文件系统

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

传统常见的文件系统

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
海量数据存储遇到的困难:

数据和元数据

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

HDFS核心属性

分布式存储

数据量大,单机存储遇到瓶颈,分布式存储通过横向扩展来解决数据存储问题
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

元数据记录

针对文件分布在不同机器上不利于寻找,元数据记录下文件机器存储位置信息,快速定位文件位置
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

分块存储

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

副本机制

不同机器设置备份,冗余存储,保障数据安全
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
总结如下:
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

HDFS简介

HDFS shell操作

HDFS Shell包含了各种的类Shell的命令,可以直接与Hadoop分布式文件系统以及其他文件系统进行交互,常用命令如下:
这里搬运的CSDN气质&末雨的总结,感谢感谢

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Map Reduce

hadoop主键之MapReduce

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

分而治之

MapReduce的核心思想是:分而治之
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
将原问题拆分位若干个子问题,并对子问题进行求解,最后进行合并,得到原问题的解。

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

  1. 能不能拆分
  2. 是否存在依赖
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

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

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

理解MapReduce思想

  1. 如何针对大数据处理场景

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

  1. 构建抽象编程模型

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

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

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

MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户编程实现:
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
通过以上两个编程接口,大家可以看出MapReduce处理的数据类型是<key,value>键值对

  1. 统一架构、隐藏底层细节

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

分布式计算概念

MapReduce介绍

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

MapReduce产生背景

由Google于2004年的论文中《MapReduce:Simplified Data Processing on Large Cluster》中提出
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

MapReduce特点

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

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

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

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

MapReduce局限性

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

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

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

MapReduce实例进程

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

MapReduce阶段组成

MapReduce数据类型

MapReduce官方示例

概述:
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
实例说明:
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

计算圆周率Π的值

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

WordCount词频统计

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

WordCount编程实现思路

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Word程序提交
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Map阶段执行流程

依托WordCount程序
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
MapReduce整体执行流程图

Map阶段执行过程
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

Reduce阶段执行流程

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Reduce阶段执行过程
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Shuffle机制

Map端的shuffle

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Reduce端的shuffle

shuffle机制弊端

YARN

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

YARN介绍

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

YARN功能说明

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

YARN概述

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

YARN架构、组件

YARN官方架构图
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

程序提交YARN交互流程

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

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

YARN资源调度器Scheduler

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

如何理解资源调度

调度器策略

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

  1. FIFO Scheduler
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
  2. Capacity Schedule
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

  1. Fair Schedule
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
    Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

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

发表回复