带你了解大数据入门(四) - 分布式资源调度——YARN框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你了解大数据入门(四) - 分布式资源调度——YARN框架相关的知识,希望对你有一定的参考价值。

参考技术A YARN是Hadoop2.x才有的,所以在介绍YARN之前,我们先看一下MapReduce1.x时所存在的问题:

1.1 MapReduce1.x时的架构



可以看到,1.x时,即 Master/Slave 主从结构,在集群上的表现就是一个JobTracker带多个TaskTracker

1.2 该架构存在的问题

由于1.x版本不支持其他框架的作业,所以导致我们需要根据不同的框架去搭建多个集群。这样就会导致资源利用率比较低以及运维成本过高,因为多个集群会导致服务环境比较复杂



在上图中我们可以看到,不同的框架不仅需要搭建不同的集群

而且这些集群很多时候并不是总是在工作,如上图可以看到,Hadoop集群在忙的时候Spark就比较闲,Spark集群比较忙的时候Hadoop集群就比较闲,而MPI集群则是整体并不是很忙

这样就无法高效的利用资源,因为这些不同的集群无法互相使用资源

除此之外,我们还得运维这些个不同的集群,而且文件系统是无法共享的

如果当需要将Hadoop集群上的HDFS里存储的数据传输到Spark集群上进行计算时,还会耗费相当大的网络IO流量

所以我们就想着要把这些集群都合并在一起,让这些不同的框架能够运行在同一个集群上,这样就能解决这各种各样的问题了.如下



正是因为在1.x中,有各种各样的问题,才使得YARN得以诞生,而YARN就可以令这些不同的框架运行在同一个集群上,并为它们调度资源

在上图中,我们可以看到,集群最底层的是HDFS,在其之上的就是YARN层,而在YARN层上则是各种不同的计算框架。所以不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度,进而提高集群资源的利用率,这也就是所谓的 xxx on YARN

2.1 概述

2.2 核心组件

2.2.1 ResourceManager(RM)

2.2.2 NodeManager(NM)

整个集群中会有多个NM,它主要负责自己本身节点的资源管理和使用,以及定时向RM汇报本节点的资源使用情况。接收并处理来自RM的各种命令,例如:启动Container。NM还需要处理来自AM的命令,例如:AM会告诉NM需要启动多少个Container来跑task。

2.2.3 ApplicationMaster(AM)

每个应用程序都对应着一个AM。例如:MapReduce会对应一个、Spark会对应一个。它主要负责应用程序的管理,为应用程序向RM申请资源(Core、Memory),将资源分配给内部的task。AM需要与NM通信,以此来启动或停止task。task是运行在Container里面的,所以AM也是运行在Container里面。

2.2.4 Container

封装了CPU、Memory等资源的一个容器,相当于是一个任务运行环境的抽象

2.2.5 Client

客户端,它可以提交作业、查询作业的运行进度以及结束作业

官网





1.client向yarn提交job,首先找ResourceManager分配资源,

2.ResourceManager开启一个Container,在Container中运行一个Application manager

3.Application manager找一台nodemanager启动Application master,计算任务所需的计算

4.Application master向Application manager(Yarn)申请运行任务所需的资源

5.Resource scheduler将资源封装发给Application master

6.Application master将获取到的资源分配给各个nodemanager

7.各个nodemanager得到任务和资源开始执行map task

8.map task执行结束后,开始执行reduce task

9.map task和 reduce task将执行结果反馈给Application master

10.Application master将任务执行的结果反馈pplication manager。

另外找到两篇关于YARN执行流程不错的文章:

4.1 官方文档指南





验证



到此为止,我们的yarn环境就搭建完成了.

5.1 提交作业

虽然我们没有搭建MapReduce的环境,但是我们可以使用Hadoop自带的一些测试例子来演示一下如何提交作业到YARN上执行。Hadoop把example的包放在了如下路径,可以看到有好几个jar包:

5.2 命令说明

5.3 运行以上命令后,到浏览器页面上进行查看,会有以下三个阶段:

5.3.1 接收资源

5.3.2 运行作业

5.3.3 作业完成

大数据基础Hadoop 2.x入门

hadoop概述

  1. 存储和分析网络数据
  2. 三大组件
    • MapReduce
      • 对海量数据的处理
      • 思想:
        • 分而治之
        • 每个数据集进行逻辑业务处理map
        • 合并统计数据结果reduce
    • HDFS
      • 储存海量数据
      • 分布式存储
      • 安全性高
        • 副本数据
    • YARN
      • 分布式资源管理框架
        • 管理整个集群的资源(内存、CPU核数)
        • 分配调度集群资源
    • Common
      • 工具

hadoop生态圈

  1. Hive(蜜蜂)通过使用sql语句来执行hadoop任务
  2. HBase 存储结构化数据的分布式数据库
    • HBase放弃了事务特性,追求更高的扩展
    • 和HDFS不同的,HBase提供数据的随机读写和实时访问,实现对表数据的读写功能
  3. zookeeper 维护节点状态

Hadoop安装

  1. 使用docker安装
docker run -i -t -p 50070:50070 -p 9000:9000 -p 8088:8088 -p 8040:8040 -p 8042:8042  -p 49707:49707  -p 50010:50010  -p 50075:50075  -p 50090:50090 sequenceiq/hadoop-docker:2.6.0 /etc/bootstrap.sh -bash

HDFS基本概念

  1. 块 (Block)
    • HDFS的文件被分成块进行存储
    • HDFS块的默认大小64M
    • 块是文件储存处理的逻辑单元
  2. NameNode
    • NameNode是管理节点,存放文件元数据
    • 文件与数据块的映射表
    • 数据块与数据节点的映射表
  3. DataNode
    • 是HDFS的工作节点,存放数据块

HDFS中数据管理与容错

  1. 数据块副本

  2. 心跳检测

  3. 二级NameNode

HDFS中文件读写的流程

HDFS写入文件的流程

HDFS的特点

  1. 数据冗余,硬件容错
  2. 流式的数据访问
  3. 适合存储大文件
  4. 适合数据批量读写,吞吐量高
  5. 不适合交互式应用,低延迟很难满足
  6. 适合一次写入多次读取,顺序读写
  7. 不支持多用户并发写相同文件

HDFS命令行操作

  1. hadoop fs -ls /
  2. hadoop namenode -format 格式化操作
  3. hadoop fs -ls /user
  4. hadoop fs -put hadoop-env.sh /user/root 把文件放入hadoop
  5. hadoop fs -rm input
  6. hadoop fs -rm hadoop-env.sh
  7. hadoop fs -mkdir input
  8. hadoop fs -cat input/hadoop-env.sh
  9. hadoop fs -get input/hadoop-env.sh hadoop-env2.sh
  10. hadoop dfsadmin -report

MapReduce原理

  1. 分而治之,一个大人物分成多个小的子任务(map),并行执行后,合并结果(reduce)
  2. 比如:100GB的网站访问日志文件,找出访问次数最多的IP地址
    • 根据日期切分,比如按周,每周一份进行统计
    • 再合并到某几个机器进行分析合并

MapReduce运行流程

  1. 基本概念
    • Job & Task 一个job就例如上面的例子,task可以分为map task和reduce task
    • JobTracker
      • 作业调度
      • 分配任务、监控任务执行进度
      • 监控TaskTracker的状态
    • TaskTracker
      • 执行任务
      • 汇报任务状态
  2. MapReduce作业执行过程

MapReduce的容错机制

  1. 重复执行
    • 重复4次仍旧失败放弃
  2. 推测执行
    • 假设有个TaskTracker执行特别慢,它会启动另一个TaskTracker执行相同的任务,两个谁先执行完,就放弃另一个

MapReduce应用

WordCount单词计数

  1. 由于我是docker安装,具体例子可以参考如下

https://blog.csdn.net/qq_16563637/article/details/81702633

  1. docker安装的容器里,自带了例子,位置是/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar

参考 https://www.imooc.com/video/7777

以上是关于带你了解大数据入门(四) - 分布式资源调度——YARN框架的主要内容,如果未能解决你的问题,请参考以下文章

一文带你了解大数据技术之Zookeeper(入门级)

Superior Scheduler:带你了解FusionInsight MRS的超级调度器

四.HIVE及其相关大数据组件

hadoop入门

大数据基础Hadoop 2.x入门

资源 | 大数据Hadoop入门到实战视频教程