大数据HADOOP框架

Hadoop

  • 一、入门
    • 1、大数据定义
    • 2、Hadoop 入门
      • 概念
        • ①Hadoop是什么?
        • ②Hadoop发展历史
        • ③Hadoop的三大发行版本
        • ④Hadoop的优势
        • ⑤Hadoop的组成 (重点)
        • ⑥大数据技术生态体系
        • ⑦推荐系统案例
    • 3、模拟虚拟机准备
        • ①安装`epel-releaes`
        • ②安装`net-tools`
        • ③关闭防火墙,关闭防火墙开自启
        • ④创建atguigu用户,并修改atguigu用户的密码
        • ⑤配置atguigu用户具有root权限,
        • ⑥使用atguigu用户使用root权限实例
        • ⑦克隆虚拟机
        • ⑧JDK 安装
    • 4、Hadoop安装
      • Hadoop_本地运行模式
      • 本地运行模式(官方WordCount)
    • 5、完全分布式运行模式(开发重点)
        • ①编写集群分发脚本 xsync
        • ②scp (secure copy)安全拷贝
        • ③rsync 远程同步工具
        • ④xsync集群分发脚本
        • ⑤ssh免密登录
        • ⑥集群配置
  • 二、HDFS的Shell操作(开发重点)
      • 通过浏览器访问Hadoop文件系统
    • 基本语法
      • 1、启动Hadoop集群
      • 2、help帮助命令
      • 3、创建/sanguo 文件夹
      • 4、上传
        • ①**moveFromLocal**:从本地剪切粘贴到HDFS
        • ②**copyFromLocal**:从本地文件系统中拷贝文件到HDFS路径去
        • ③**put**: 等同于copyFromLocal,生产环境更习惯用put
        • ④**appendToFile**:追加一个文件到已经存在的文件末尾
      • 5、下载
        • ①**copyToLocal**: 从HDFS拷贝到本地
        • ②**get**:等同于copyToLocal,生产环境更习惯用get
      • 6、HDFS直接操作
        • ①Is: 显示目录信息
        • ②cat: 显示文件内容
        • ③chgrp、 -chmod、 -chown: Linux 文件系统中的用法一样,修改文件所属权限
        • ④mkdir: 创建路径 (目录)
        • ⑤cp: 从HDFS的一个路径拷贝到HDFS的另一个路径
        • ⑥mv:在HDFS目录中移动文件
        • ⑦tail 显示一个文件的末尾1kb的数据
        • ⑧rm 删除文件或文件夹
        • ⑨-rm-r:递归删除目录及目录里面内容
        • ⑩du 统计文件夹的大小信息
        • ⑪setrep:设置HDFS中文件的副本数量
    • 第3章HDFS的API操作
        • 略,非重点
    • 第4章HDFS 的读写流程
      • 1、HDFS 读写流程
      • 2、网络拓扑-节点距离计算
      • 3、机架感知(副本存储节点选择)
      • 4、HDFS读数据流程(重点)
    • 第5章NameNode和SecondaryNameNode
      • ①Fsimage和Edits解析
    • hadoop_HDFS 总结
  • 三、Hadoop_MapReduce
      • MapReduce概述
        • 1、MapReduce定义
        • 2、MapReduce优缺点
        • 3、MapReduce核心编程思想
        • 4、MapReduce进程
        • 5、官方WordCount源码
        • 6、常用数据序列化类型
        • 7、 MapReduce编程规范
      • WordCount案例实操
        • 本地测试
      • 略 P.73
  • 四、Yarn资源调度器
      • 1、Yarn基础架构
      • 2、Yarn 工作机制
      • 3、作业提交的全过程
      • 4、Yarn调度器和调度算法
        • ①先进先出调度器(FIFO)
        • ②容量调度器(Capacity Scheduler)
        • ③公平调度器(Fair Scheduler)
        • **缺额**
        • 公平调度器队列资源分配方式
      • 5、Yarn常用命令
        • ①执行
        • ②yarn application查看任务
        • ③yarn logs查看日志
        • ④yarn applicationattempt查看尝试运行的任务
        • ⑤yarn container 查看容器
        • ⑥yarn node查看节点状态
        • ⑦yarn rmadmin更新配置
        • ⑧yarn queue查看队列

一、入门

1、大数据定义

大数据定义
定义:大数据主要解决,海量数据的采集、存储、分析计算问题。
特点:Volume(大量) Velocity(高速) Variety(多样) Value(低价值密度)

2、Hadoop 入门

概念

①Hadoop是什么?
  • Hadoop是一 个由Apache基 金会所开发的分布式系统基础架构。
  • 主要解决,海量数据的存储和海量数据的分析计算问题。
  • 广义上来说,Hadoop通常是指一个更广 泛的概念一Hadoop生态圈。
②Hadoop发展历史

创始人 Doug Cutting

③Hadoop的三大发行版本
  • Hadoop三大发行版本: Apache、 Cloudera、 Hortonworks。
  • Apache版本最原始(最基础)的版术,对于入门学习最好。(2006)
  • Cloudera内部集成」很多大数据框架,对应产品CDH。(2008)
  • Hortonworks文档较好,对应产品HDP。(2011)
  • Hortonworks现在已经被Cloudera公司收购,推出新的品牌CDP
④Hadoop的优势
  • 高可靠性: Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
  • 高扩展性:在集群间分配任务数据,可方便的打展数以干计的节点。
  • 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
  • 高容错性:能够自动将失败的任务重新分配
⑤Hadoop的组成 (重点)

1、 Hadoop1.x、2.x、 3.x区别

  • Hadoop1.x组成: MapReduce(计算+资源调度) + HDFS (数据存储) + Common (辅助工具)
  • Hadoop2.x组成 :MapReduce (计算) + Yarn (资源调度) + HDFS (数据存储) + Common (辅助工具)
  • Hadoop3.x在组成上没有变化。 在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。在Hadoop2.x时代,增 加了Yarn。Yarn只负责 .资源的调度,MapReduce只负责运算。

2、HDFS架构概述
Hadoop Distributed File System,简称HDFS,是一个 分布式文件系统。

  • NameNode (nn) :存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
  • DataNode(dn): 在本地文件系统存储文件块数据,以及块数据的校验和。
  • Secondary NameNode(2nn):每隔-段时间对NameNode元数据备份。

3、YARN架构概述

YetAnother Resource Negotiator简称YARN,另一种资源协调者,是Hadoop的资源管理器。

  • ResourceManager (RM) :整个集群资源(内存、CPU等) 的老大
  • NodeManager (NM) :单个节点服务器资源老大
  • ApplicationMaster (AM) :单个任务运行的老大
  • Container: 容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
  • 说明1:客户端可以有多个
  • 说明2:集群.上可以运行多个AplicationMaster
  • 说明3:每个NodeManager.上可以有多个Container
    大数据HADOOP框架_第1张图片
    4、 MapReduce架构概述
  • MapReduce将计算过程分为两个阶段: Map 和Reduce
  • Map阶段并行处理输入数据
  • Reduce阶段对Map结果进行汇总
    大数据HADOOP框架_第2张图片

5、HDFS、YARN、 MapReduce三 者关系
大数据HADOOP框架_第3张图片

⑥大数据技术生态体系
  • Sqoop: Sqoop是一款开源的工具, 主要用于在Hadoop. Hive与传统的数据库( MySQL)间进行数据的传递,可以将一个关系型数据库(例如: MySQL, Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  • Flume:Flume是–个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;
  • Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统;
  • Spark: Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算
  • Flink: Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
  • Oozie: Oozie 是-个管理Hadoop作业(job)的工作流程调度管理系统。
  • Hbase: HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
  • Hive: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并捉供简单的SOL查询功能,可以将SOL语句转换为ManReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
  • ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
    大数据HADOOP框架_第4张图片
⑦推荐系统案例

大数据HADOOP框架_第5张图片

3、模拟虚拟机准备

①安装epel-releaes

命令:yum install -y epel-release
如果yum.pid进程被锁定,就kill -9 被锁定的进程号,再重新执行命令yum install -y epel-release

②安装net-tools

net-tool:工具包集合,包含ifconfig等命令
安装命令:yum install -y net-too ls

③关闭防火墙,关闭防火墙开自启

关闭当前防火墙:systemctl stop firewalld
开机关闭防火墙:systemctl disable firewalld.service
注:在企业开发时,通常单个服务器的防火墙是关闭的。公司整体对外会设置安全的防火墙。

④创建atguigu用户,并修改atguigu用户的密码

创建:useradd atguigu
修改: passwd atguigu

⑤配置atguigu用户具有root权限,

方便后期加sudo执行root权限的命令

修改etc/sudoers.文件,在%wheel 这行下面添加一行, 如下所示:。
在这里插入图片描述
进入文件后,一直下拉找到下图所示语句。
大数据HADOOP框架_第6张图片

大数据HADOOP框架_第7张图片

注: atguigu这一行不要 直接放到root行下面,因为所有用户都属于wheel组,你先配置了atguigu 县有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以atguigu要放到%wheel这行下面。

⑥使用atguigu用户使用root权限实例

关键点:sudo (加sudo执行root权限的命令)

大数据HADOOP框架_第8张图片

⑦克隆虚拟机

右键点击下图位置,悬停”管理“选项,点击“克隆”
大数据HADOOP框架_第9张图片
下一步,到下图选择 “创建完整克隆”
大数据HADOOP框架_第10张图片
再编辑虚拟机名称,选择虚拟机要克隆到的地址,点击完成。
大数据HADOOP框架_第11张图片

⑧JDK 安装

①将JDK文件通过Xftp拷贝到指定的目录文件夹下
②解压JDK文件到相应文件夹,例:tar -zxvf jdk-8u281-linux-x64.tar.gz -C /opt/module/
③进入JDK文件夹下,cd jdk-8u281-linux-x64.tar.gz
④配置JDK环境变量
1.vim /etc/profile
2. cd /etc/profile.d
3. 创建并配置JAVA环境变量 vim my_env.sh
4. 编辑 my_env.sh 文件, 如下:

#JAVA_HOME
#export 全局变量
#JAVA文件的路径
export JAVA_HOME=/opt/module/jdk1.8.0_281
export PATH=$PATH:$JAVA_HOME/bin

5.重新遍历文件使配置的JAVA文件生效source /etc/profile
6.安装成功验证:java -version

4、Hadoop安装

1.解压Hadoop文件,例: tar -zxvf hadoop-2.7.3.tar.gz -C /opt/module
2. 进入Hadoop文件下,例:cd hadoop-2.7.3
3.pwd ,复制路径
3. 创建并配置Hadoop环境变量,vim /etc/profile.d/my_env.sh

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

4.遍历profile文件source /etc//profile ,使配置的环境变量文件生效

Hadoop_本地运行模式

Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

1、本地模式

数据存储在linux本地
单机运行,只是用来演示下官方案例。(生产环境不用)

2、伪分布式模式

数据存储在HDFS
单机运行,但是具备Hadoop集群的所有功能,一台 服务器模拟一个分布式的环境。(个别缺钱的公司用来测试,生产环境不用。)

3、完全分布式模式

数据存储在HDFS
多台服务器组成分布式环境。(生产环境使用)

本地运行模式(官方WordCount)

①在hadoop-3.1.3文件下面创建一个 wcinput文件夹 mkdir wcinput
②在wcinput文件下创建一个word.txt文件 cd wcinput
③编辑word.txt文件 vim word. txt (随便写入几个单词)
④执行程序:bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount wcinput/ wcoutput
⑤查看结果cat wcoutput/part-r-00000

5、完全分布式运行模式(开发重点)

1.准备3台客户机(关闭防火墙、静态IP、 主机名称)。
2.安装JDK
3.配置环境变量
4.安装Hadoop
5.配置环境变量
6.配置集群
7.单点启动
8.配置ssh
9.群起并测试集群

①编写集群分发脚本 xsync
②scp (secure copy)安全拷贝

(1) scp 定义
scp可以实现服务器与服务器之间的数据拷贝。( from server1 to server2)
(2)基本语法
scp -r $pdir/$fname $user@host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

实例:将YZ2中的 /opt/module/hadoop-2.7.3 拷贝到 YZ3中。
方式一:YZ2给YZ3推数据
scp -r jdk1.8.0_281/ root@YZ3:/opt/module/
方式二: YZ3从YZ2拉数据
scp -r root@YZ2:/opt/module/hadoop-2.7.3 ./ (./表示当前目录下)
方式三:YZ3让YZ2给YZ4传数据
scp -r root@YZ2:/opt/module/* root@YZ4:/opt/module/ (/* 表示目录下所有文件)

③rsync 远程同步工具
  • rsyne,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
  • rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp, 是把所有文件都复制过去。

(1)基本语法
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

选项参数 功能
-a 归档拷贝
-v 显示复制过程
实例:
删除YZ3中的/opt/module/hadoop-2.7.3/wcinput
rm -rf wcinput
同步YZ2中的/opt/module/hadoop-2.7.3到YZ3
rsync -av hadoop-2.7.3/ root@YZ3:/opt/module/hadoop-2.7.3/

报错:rsync找不到命令: yum -y install rsync 安装rsync(YZ2、YZ3都要装)

④xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下。
(2)需求分析:
① rsync ,命令原始拷贝: rsync -av /opt/module root@YZ3:/opt/
②期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

查看当前环境变量:echo $PATH 
方式一:创建并编写xsync文件,将xsync文件配置到环境变量中,达到全局使用的目的
方式二:在用户家目录下创建一个bin目录,在bin目录下创建一个脚本文件,便可全局使用

以root用户为例:
①cd /root
②mkdir bin
③cd bin 
④vim xsync (
在该文件中编写如下代码
#!/bin/bash
#1.判断参数个数
if [ $# -lt 1]
then
     echo Not Enough Arguement!
     exit;
fi

#2.遍历集群所有机器
for host in YZ2 YZ3 YZ4
do
      echo ========= $host =========

#3.遍历所有目录,挨个发送
for file in $@
do

#4.判断文件是否存在
if [ -e $file ]
   then 

#5. 获取父目录
pdir=$(cd -p $(dirname $file);pwd)

#6.获取当前文件的名称
   fname=$(basename $file)
   ssh $host "mkdir -p $pdir"
   rsync -av $pdir/$fname $host:$pdir
else
   echo $file does not exists!
  fi
 done
done
)
⑤修改 xsync 具有执行权限
chmod 777 xsync
若显示没找到命令就装一个(yum install -y chomd)
注:所要拷贝到的节点也要安装 rsync ,(yum install -y rsync),否者拷贝不成功。
⑥此时便可以成功拷贝文件到其他节点,例: xsync a.txt

⑤ssh免密登录

指令:ssh-keygen -t rsa

①到用户所在的家目录下
②查看隐藏文件 ls -al
③进入.ssh文件
④创建密匙 ssh-keygen -t rsa
⑤拷贝公钥到YZ3和YZ4 ssh-copy-id YZ3
ssh YZ3 便可登录到YZ3 (返回自己的用户 exit

⑥集群配置

二、HDFS的Shell操作(开发重点)

通过浏览器访问Hadoop文件系统

打开浏览器,再浏览器网址处输入:前面为自己的虚拟机IP地址,例:192.168.187.198:50070

注:①hadoop集群程序是开启状态
②192.168.187.198:50070,ip 需为master主节点IP。

基本语法

hadoopfs具体命令 OR hdlfsdfs 具体命令,两个是完全相同的。

hadoop fs , hdfs dfs 命令列表

1、启动Hadoop集群

[atguigu@hadoop102 hadoop-3.1.3]1$ sbin/start-dfs.sh
[ atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.shk

2、help帮助命令

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -help rm

3、创建/sanguo 文件夹

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir ./sanguo

4、上传

moveFromLocal:从本地剪切粘贴到HDFS
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -moveFromLocal ./shuguo.txt /sanguo
copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -copyFromLocal weiguo.txt /sanguo
put: 等同于copyFromLocal,生产环境更习惯用put
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -put ./wuguo.txt /sanguo
appendToFile:追加一个文件到已经存在的文件末尾
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt

5、下载

copyToLocal: 从HDFS拷贝到本地
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -copyToLocal /sanguo/shuguo.txt ./
get:等同于copyToLocal,生产环境更习惯用get
[atguigu@hadoop102 hadoop-3. 1.3]$ hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt

6、HDFS直接操作

①Is: 显示目录信息
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /sanguo
②cat: 显示文件内容
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -cat /sanguo/shuguo.txt
③chgrp、 -chmod、 -chown: Linux 文件系统中的用法一样,修改文件所属权限
chgrp 命令更改【目录或文件所属的组】
chgrp [-R]目录 或 文件

######/usr/meng及其子目录下的所有文件的用户组改为mengxin
hadoop fs -chgrp -R mengxin /usr/meng
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -chmod 666 /sanguo/shuguo.txt
chown -R 文件的新拥有者 文件名
[atguigu@hadoop102 hadoop-3. 1.3]$ hadoop fs -chown atguigu:atguigu/sanguo/shuguo.txt
④mkdir: 创建路径 (目录)
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /jinguo
⑤cp: 从HDFS的一个路径拷贝到HDFS的另一个路径
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -cp /sanguo/shuguo.txt /jinguo
⑥mv:在HDFS目录中移动文件
[atguigu@hadoop102 hadoop-3.1.31$ hadoop fs -mv /sanguo/wuguo.txt /jinguo
⑦tail 显示一个文件的末尾1kb的数据
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -tail /jinguo/shuguo.txt
⑧rm 删除文件或文件夹
[atguigu@hadoop102 hadoop-3.1.31$ hadoop fs -rm /sanguo/shuguo.txt
⑨-rm-r:递归删除目录及目录里面内容
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -rm -r /sanguo
⑩du 统计文件夹的大小信息
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -du -s -h /jinguo
效果:27 81 /jinguo

[atguigu@hadoop102 hadoop-3. 1.3]$ hadoop fs -du -h /jinguo
效果:
14 42 /jinguo/shuguo.txt
7 21 /jing/weiguo.txt
6 18 /jinguo/wuguo.txt

说明: 27表示文件大小; 81 表示27*3个副本; /jinguo 表示查看的目录
⑪setrep:设置HDFS中文件的副本数量
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -setrep 10 /jinguo/shuguo.txt
效果:
这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10

在这里插入图片描述

第3章HDFS的API操作

略,非重点

第4章HDFS 的读写流程

1、HDFS 读写流程

大数据HADOOP框架_第12张图片

2、网络拓扑-节点距离计算

在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?
节点距离:两个节点到达最近的共同祖先的距离总和。

3、机架感知(副本存储节点选择)

大数据HADOOP框架_第13张图片

4、HDFS读数据流程(重点)

大数据HADOOP框架_第14张图片

第5章NameNode和SecondaryNameNode

大数据HADOOP框架_第15张图片

①Fsimage和Edits解析

大数据HADOOP框架_第16张图片

hadoop_HDFS 总结

大数据HADOOP框架_第17张图片

三、Hadoop_MapReduce

MapReduce功能:解决海量数据的计算问题
大数据HADOOP框架_第18张图片

MapReduce概述

1、MapReduce定义

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

2、MapReduce优缺点

优点:
1、易于编程。 用户只关心,业务逻辑。 实现框架的接口。
2、良好扩展性:可以动态增加服务器,解决计算资源不够问题
3、高容错性。任何一台机器挂掉,可以将任务转移到其他节点。
4、适合海量数据计算(TB/PB)几千 台服务器共同计算。
缺点:
1、不擅长实时计算。Mysql
2、不擅长流式计算。Sparkstreaming flink
3、不擅长DAG有向无环图计算。spark

3、MapReduce核心编程思想

大数据HADOOP框架_第19张图片

4、MapReduce进程

一个完整的MapReduce程序在分布式运行时有三类实例进程:
(1) MrAppMaster:负责整个程序的过程调度及状态协调。
(2)MapTask:负责Map阶段的整个数据处理流程。
(3) ReduceTask: 负责Reduce阶段的整个数据处理流程。

5、官方WordCount源码

采用反编译工具反编译源码,发现WordCount案例有Map类、Reduce 类和驱动类。且数据的类型是Hadoop自身封装的序列化类型。

6、常用数据序列化类型

大数据HADOOP框架_第20张图片

7、 MapReduce编程规范

用户编写的程序分成三个部分: Mapper、 Reducer 和Driver。
1.Mapper阶段

  • (1)用户自定义的Mapper要继承自己的父类
  • (2) Mapper的输入数据是KV对的形式(KV的类型可自定义
  • (3) Mapper中的业务逻辑写在map0方法中
  • (4) Mapper的输出数据是KV对的形式(KV的类型可自定义)
  • (5) map(方法(MapTask进程) 对每一个调用一次

2、Reducer阶段
(1) 用户自定义的Reducer要继承自己的父类
(2) Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
(3) Reducer 的业务逻辑写在reduce()方法中
(4) Reduce’ Task进程对每一-组相同k的 k,v>组调用一次reduce( )方法

3、Driver阶段
相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象。

WordCount案例实操

本地测试

需求:在给定的文本文件中统计输出每一个单词出现的总次数
①输入数据
大数据HADOOP框架_第21张图片
②期望输出数据

dian 3
yuzai 2
love 1

分析需求:
按照MapReduce编程规范,分别编写Mapper,Reducer, Driver。
大数据HADOOP框架_第22张图片

略 P.73

四、Yarn资源调度器

大数据HADOOP框架_第23张图片
思考:
如何管理集群资源?
如何给任务合理分配资源?

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之,上的应用程序。

1、Yarn基础架构

YARN主要由ResourceManager、NodeManager、 ApplicationMaster 和Container等组件构成。
①ResourceManager (RM)
整个集群资源的boss
②NodeManager (NM)
单节点资源的boss
③ApplicationMaster (AM)
每一个作业资源的boss
④Container
相应的容器
大数据HADOOP框架_第24张图片

2、Yarn 工作机制

大数据HADOOP框架_第25张图片

3、作业提交的全过程

HDFS、YARN、MapReduce三者关系
大数据HADOOP框架_第26张图片
大数据HADOOP框架_第27张图片
大数据HADOOP框架_第28张图片

4、Yarn调度器和调度算法

目前,Hadoop作业调度器主要有三种: FIFO、 容量(Capacity Scheduler)和公平(FairScheduler)。 Apache Hadoop3.1 .3默认的资源调度器是Capacity Scheduler。
CDH 框架默认调度器是FairScheduler

具体设置详见: yarn-default.xml 文件
大数据HADOOP框架_第29张图片

①先进先出调度器(FIFO)

FIFO调度器(First In FirstOut) :单队列,根据提交作业的先后顺序,先来先服务。
大数据HADOOP框架_第30张图片

②容量调度器(Capacity Scheduler)

Capacity Scheduler是Yahoo开发的多用户调度器。
大数据HADOOP框架_第31张图片

1、多队列:每个队列可配置-定的资源量, 每个队列采用FIFO调度策略。
2、容量保证:管理员可为每个队列设置资源最低保证和资源使用上限
3、灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。
4、多租户:
支持多用户共享集群和多应用程序同时运行。
为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。

大数据HADOOP框架_第32张图片

③公平调度器(Fair Scheduler)

大数据HADOOP框架_第33张图片

缺额
  • 公平调度器设计目标是:在时间尺度上,所有作业获得公平的资源。某一时刻一个作业应获资源和实际获取资源的差距叫“缺额”。
  • 调度器会优先为缺额大的作业分配资源
    大数据HADOOP框架_第34张图片
公平调度器队列资源分配方式

大数据HADOOP框架_第35张图片
大数据HADOOP框架_第36张图片
大数据HADOOP框架_第37张图片
大数据HADOOP框架_第38张图片

5、Yarn常用命令

Yarn状态的查询,除了可以在hadoop103:8088页面查看外,还可以通过命令操作。常见的命令操作如下所示:
需求:执行WordCount案例,并用Yarn 命令查看任务运行情况。

①执行
[atguigu@hadoop102 hadoop-3.1.3]$ myhadoop.sh start

$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output1
②yarn application查看任务

(1)列出Application

[atguigu@hadoop102 hadoop-3.1.3]$ yarn application -list

(2)根据Application状态过滤: yarn application -list -appStates (所有状态: ALL、 NEW、NEW_ SAVING、 SUBMITTED、ACCEPTED、RUNNING、FINISHED、 FAILED、 KILLED)

[ atguigu@hadoop102hadoop-3.1.3]$ yarn application -list -appStates FINISHED

(3)Kill 掉 Application:

[atguigu@hadoop102 ~]$ yarn application -kill application_1612659778342_0001
③yarn logs查看日志

(1)查询Application日志:

 yarn logs -applicationId ApplicationId application_1612659778342_0001

(2)查询Container日志:

yarn logs -applicationId <ApplicationId> -containerd <ContainerId> 
④yarn applicationattempt查看尝试运行的任务

(1)列出所有Application尝试的列表:

yarn applicationattempt -list <ApplicationId>

[atguigu@hadoop102 hadoop-3.1.3]$ yarn applicationattempt -list application_1612577921195_0001

(2)打印ApplicationAttemp状态:

yarn applicationattempt -status <ApplicationAttemptId>
⑤yarn container 查看容器

(1)列出所有Container:

yarn container -list <ApplicationAttemptId>

(2)打印Container状态:

yarn container -status <ContainerId>

注:只有在任务跑的途中才能看到container的状态

⑥yarn node查看节点状态

列出所有节点:

yarn node -list -alk
⑦yarn rmadmin更新配置

加载队列配置:

yarn rmadmin -refreshQueues
⑧yarn queue查看队列

打印队列信息:

yarn queue -status <QueueName>

你可能感兴趣的:(linux,centos,java)