Hadoop之资源调度框架YARN

1.YARN产生背景

1.1 MapReduce1.x 存在一些问题

在这里插入图片描述

  • JobTracker 是单点的,自身的压力很大,而且会成为系统扩展的瓶颈,并且不健壮,一挂全挂
  • 仅仅只能够支持mapreduce作业

1.2 优化资源利用率和降低运维成本

所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配!
在这里插入图片描述

2.YARN概述

2.1 关键词汇概念

  • YARN:Yet Another Resource Negotiator 的简称
  • Client:向RM提交任务、杀死任务等
  • RM:ResourceManager (RM),集群中同一时刻对外提供服务的只有1个,负责分配资源相关;处理来自客户端的请求:提交、杀死任务;启动/监控AM;监控NM
  • AM:ApplicationMaster (AM),每个应用程序对应一个AM,AM向RM申请资源用于在NM上启动对应的Task;数据切分;为每个task向RM申请资源(container);NodeManager通信;任务的监控
  • NM:NodeManager (NM),多个,干活的;向RM发送心跳信息、任务的执行情况;接收来自RM的请求来启动任务;处理来自AM的命令
  • Container: 任务的运行抽象,memory、cpu…;task是运行在container里面的;可以运行AM、也可以运行map/reduce task
    在这里插入图片描述

2.2 执行流程

在这里插入图片描述

  • 步骤1Client提交JobRM
  • 步骤2 + 步骤3RM分配一个NM启动第一个Container来运行AM,因为一个task对应一个AM,所以首先得启动一个AM
  • 步骤4AMRM上面注册自己,并且向RM申请资源
  • 步骤5 + 步骤6AM申请到资源之后,通知相应的NM启动Container来运行JobAM会监控Job的执行情况

3.YARN的部署

文档地址:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html,按照文档编辑对应的hadoop配置文件即可
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.提交Job到YARN运行

4.1 运行hadoop内置mapreduce-examples任务

cd $HADOOP_HOME/share/hadoop/mapreduce,可以看的有个 hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar,看看有哪些任务?

hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar

在这里插入图片描述
执行wordcount 任务

hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar wordcount /wordsCount/input/h.txt /wordsCount/output

在这里插入图片描述
在这里插入图片描述
控制台:
在这里插入图片描述
在这里插入图片描述

4.2 运行自己编写的任务

4.2.1 AccessYARNApp

改写上篇文章里的流量统计任务,输入目录和输出目录改成读取参数

package com.zc.bigdata.mapreduce;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class AccessYARNApp {
    public static void main(String[] args) throws Exception{
        Configuration configuration = new Configuration();
        Job job = Job.getInstance(configuration);
        job.setJarByClass(AccessYARNApp.class);
        job.setMapperClass(AccessMapper.class);
        job.setReducerClass(AccessReducer.class);
        // 设置自定义分区规则
        job.setPartitionerClass(AccessPartitioner.class);
        // 设置reduce个数
        job.setNumReduceTasks(3);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Access.class);
        job.setOutputKeyClass(NullWritable.class);
        job.setOutputValueClass(Access.class);
        FileInputFormat.setInputPaths(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        job.waitForCompletion(true);
    }

}

4.2.2 打包项目

clean一下,package一下,注意要忽略test,得到 hadoop-dfs-1.0-SNAPSHOT.jar
在这里插入图片描述
在这里插入图片描述

4.2.3 上传项目jar

在这里插入图片描述在这里插入图片描述

4.2.4 执行命令

hadoop jar hadoop-dfs-1.0-SNAPSHOT.jar com.zc.bigdata.mapreduce.AccessYARNApp /access/input/access.log /access/output

jar名 包名+类名 + 输入路径+ 输出路径
在这里插入图片描述
在这里插入图片描述
运行结果,分了三个专区:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值