Yarn的简介以及安装

Hadoop---Yarn资源调度管理器

1.Yarn简介

      YARN是一个运算资源(cpu 内存 网络 Io....)管理系统, 主要负责集群资源的管理和调度监控任务进度   , 如果要将程序运行在yarn上需要两个组件 , 客户端和yarn这两个组件在编程的过程中非常复杂

2.Yarn 的安装

2.1 在hadoop_home中的etc下修改yarn-site.xml文件,具体目录为:/opt/apps/hadoop-3.1.1/etc/hadoop/yarn-site.xml,将一下内容编辑到配置文件中,注意:将配置文件修改完成之后,需要将配置文件分发到集群中的每个机器,使用命令:scp /opt/apps/hadoop-3.1.1/etc/hadoop/yarn-site.xml  linux02:$PWD

<configuration>

<!-- Site specific YARN configuration properties -->
<!--  resource,manager主节点所在机器 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux01</value>
</property>

<!--  为mr程序提供shuffle服务 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!--  一台NodeManager的总可用内存资源 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!--  一台NodeManager的总可用(逻辑)cpu核数 -->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
</property>

<!--  是否检查容器的虚拟内存使用超标情况 -->
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

<!--  容器的虚拟内存使用上限:与物理内存的比率 --> 
<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>2.1</value>
</property>

</configuration>

2.2  配置一键启动和停止,在/opt/apps/hadoop-3.1.1/sbin/下修改start-yarn.sh  和 stop-yarn.sh这两个文件

YARN_RESOURCEMANAGER_USER=root 
HADOOP_SECURE_DN_USER=yarn 
YARN_NODEMANAGER_USER=root

2.3 使用一键启动命令,启动yarn服务

2.4 web端访问yarn,http://linux01:8088

3. 将MR程序提交到Yarn上有两种方式:

3.1 在windows上提交Yarn

3.1.1  在idea中添加mapre-site.xml配置文件

3.1.2 在mapre-site.xml文件中添加配置参数

<configuration>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>

</configuration>

3.1.3 在启动程序中需要设置一些参数,具体如下

   1) HADOOP_USER_NAME 

   2) 运行模式为yarn

   3) resourcemanage的位置

   4) 默认操作的文件系统

   5) 跨平台参数 

   6) Jar包的路径

// 设置hadoop的用户名
        System.setProperty("HADOOP_USER_NAME", "root");
        // yarn  集群模式运行  单
        // 1 配置对象
        Configuration conf = new Configuration();
        //设置MR程序运行模式
        conf.set("mapreduce.framework.name" , "yarn");
        //程序yarn的位置
        conf.set("yarn.resourcemanager.hostname", "linux01");
        // 处理HDFS中的数据
        conf.set("fs.defaultFS", "hdfs://linux01:8020");
        // 设置跨平台参数
        conf.set("mapreduce.app-submission.cross-platform","true");
        
        //  获取一个Job对象
        Job job = Job.getInstance(conf, "wordcount");
        // 设置jar包的位置
        job.setJar("C:\\Users\\Mr。ZXX\\Desktop\\demo.jar");
        //3 设置map和reducetask任务类
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReduce.class);
        // 4 设置maptask和reducetask的输出的key value类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        //5 设置reduce的个数
        job.setNumReduceTasks(2);
        //6 设置处理数据的输入路径 这个路径指的是linux中的要出来文件的路径
        FileInputFormat.setInputPaths(job,new Path("/b.txt"));
        // 7设置结果的输出路径 ,这个输出路径值得是在linux中的输出路径
        FileOutputFormat.setOutputPath(job,new Path("/wc/"));
        //8提交job
        job.waitForCompletion(true) ;

3.1.4 在linux上提交mr 程序

1)需要修改启动类

      // 1 配置对象
        Configuration conf = new Configuration();
        //设置MR程序运行模式
        conf.set("mapreduce.framework.name" , "yarn");
        //程序yarn的位置
        conf.set("yarn.resourcemanager.hostname", "linux01");
        // 2 获取一个Job对象
        Job job = Job.getInstance(conf, "wordcount");
        //设置jar包中要执行的类名
        job.setJarByClass(WcDriver2.class);
        //3 设置map和reducetask任务类
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReduce.class);
        // 4 设置maptask和reducetask的输出的key value类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        //5 设置reduce的个数
        job.setNumReduceTasks(2);
        //6 设置处理数据的输入路径 本地测试
        FileInputFormat.setInputPaths(job,new Path("/b.txt"));
        // 7设置结果的输出路径
        FileOutputFormat.setOutputPath(job,new Path("/wc3/"));
        //8提交job
        job.waitForCompletion(true) ;

2)将修改完成启动类之后,需要使用maven工具将项目打成jar包,上传到linux中

3)配置linux机器上的HADOOP_HOME/ect/hadoop/mapred-site.xml文件

<configuration>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
 
</configuration>

4)在linux中输入启动程序命令:

hadoop jar  /demo.jar  com._51doit.mr.day06.yarn.WcDriver2  

标红的这个路径指的是我们要启动类的绝对路径,在idea中使用copy reference 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值