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提交job
job.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提交job
job.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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137352.html
標籤:python

