当前位置: 代码迷 >> 综合 >> hadoop笔记-day06
  详细解决方案

hadoop笔记-day06

热度:68   发布时间:2023-11-30 10:48:08.0

1 YARN简介

2 YARN安装

3 将MR程序提交到YARN上

3.1windows上提交MR程序

1 本项目中添加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>

2 启动程序中设置一些参数 

   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");// 设置jar包的位置// 2 获取一个Job对象Job job = Job.getInstance(conf, "wordcount");job.setJar("C:\\Users\\Administrator\\Desktop\\demo.jar");
package com._51doit.mr.day06.yarn;import com._51doit.mr.day03.WordCountMapper;
import com._51doit.mr.day03.WordCountReducer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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;import java.io.IOException;/*** @Classname WcDriver* @Date 2020/9/26 0026 10:48* @Created by 多易教育-DOIT18* @Description: MR程序默认是运行在本地上  通过参数设置将MR程序运行在YARN 上* 1 设置MR程序运行模式  yarn* 2 告诉程序yarn的位置* 3 MR程序处理HDFS系统中的文件数据* 4 设置windows上运行程序的跨平台参数* 5 mt  rm 程序 --> yarn -->调度 --运行在同的节点上  [jar包]*    设置jar包的位置* 6 添加mapred-site.xml  配置了MR程序的运行环境**/
public class WcDriver {public static void main(String[] args) throws Exception {// 设置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");// 设置jar包的位置// 2 获取一个Job对象Job job = Job.getInstance(conf, "wordcount");job.setJar("C:\\Users\\Administrator\\Desktop\\demo.jar");//3 设置map和reducetask任务类job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.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("/word.txt"));// 7设置结果的输出路径FileOutputFormat.setOutputPath(job,new Path("/wc2/"));//8提交jobjob.waitForCompletion(true) ;}
}

 

3.2 linux提交MR程序

启动类中只需要添加程序的运行模式

 // 设置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");// 设置jar包的位置// 2 获取一个Job对象Job job = Job.getInstance(conf, "wordcount");//job.setJar("/demo.jar");/*** java -cp  /demo.jar com._51doit.day06.uarn.WcDriver**/job.setJarByClass(WcDriver2.class);
package com._51doit.mr.day06.yarn;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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;/*** @Classname WcDriver* @Date 2020/9/26 0026 10:48* @Created by 多易教育-DOIT18* @Description: MR程序默认是运行在本地上  通过参数设置将MR程序运行在YARN 上* 1 设置MR程序运行模式  yarn* 2 告诉程序yarn的位置* 3 MR程序处理HDFS系统中的文件数据* 4 设置windows上运行程序的跨平台参数* 5 mt  rm 程序 --> yarn -->调度 --运行在同的节点上  [jar包]*    设置jar包的位置* 6 添加mapred-site.xml  配置了MR程序的运行环境*com._51doit.mr.day06.yarn.WcDriver2*/
public class WcDriver2 {public static void main(String[] args) throws Exception {// 设置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");// 设置jar包的位置// 2 获取一个Job对象Job job = Job.getInstance(conf, "wordcount");//job.setJar("/demo.jar");/*** java -cp  /demo.jar com._51doit.day06.uarn.WcDriver**/job.setJarByClass(WcDriver2.class);//3 设置map和reducetask任务类job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.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("/word.txt"));// 7设置结果的输出路径FileOutputFormat.setOutputPath(job,new Path("/wc3/"));//8提交jobjob.waitForCompletion(true) ;}
}

配置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>

启动程序

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