更新時(shí)間:2022-07-27 來(lái)源:黑馬程序員 瀏覽量:
MapReduce程序的運(yùn)行模式主要有如下兩種。
(1)本地運(yùn)行模式:在當(dāng)前的開(kāi)發(fā)環(huán)境模擬MapReduce執(zhí)行環(huán)境,處理的數(shù)據(jù)及輸出結(jié)果在本地操作系統(tǒng)。
(2)集群運(yùn)行模式:把MapReduce程序打成一個(gè)jar包,提交至YARN集群上去運(yùn)行任務(wù)。由于YARN集群負(fù)責(zé)資源管理和任務(wù)調(diào)度,程序會(huì)被框架分發(fā)到集群中的節(jié)點(diǎn)上并發(fā)地執(zhí)行,因此處理的數(shù)據(jù)和輸出結(jié)果都在HDFS中。
集群運(yùn)行模式只需要將MapReduce程序打成jar包上傳至集群即可,比較簡(jiǎn)單,這里不再贅述。下面以詞頻統(tǒng)計(jì)為例,講解如何將MapReduce程序設(shè)置為在本地運(yùn)行模式。
在MapReduce程序中,除了要實(shí)現(xiàn)Mapper(代碼見(jiàn)4.3.2節(jié)的WordCountMapper.java文件)和Reduce(代碼見(jiàn)4.3.3節(jié)的WordCountReducer.java文件)外,還需要一個(gè)Driver類提交程序和具體代碼,如文件4-6所示。
文件4-6 WordCountDriver.java
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;
public class WordCountDriver {
public static void main(String[] args) throws Exception {
//通過(guò)Job來(lái)封裝本次MR的相關(guān)信息
Configuration conf=new Configuration ();
//配置MR運(yùn)行模式,使用local表示本地模式,可以省略
conf.set("mapreduce.framework.name", "local");
Job wcjob=Job.getInstance(conf);
//指定MR Job jar包運(yùn)行主類
wcjob.setJarByClass(WordCountDriver.class);
//指定本次MR所有的Mapper Reducer類
wcjob.setMapperClass(WordCountMapper.class);
wcjob.setReducerClass(WordCountReducer.class);
//設(shè)置業(yè)務(wù)邏輯Mapper類的輸出key和value的數(shù)據(jù)類型
wcjob.setMapOutputKeyClass(Text.class);
wcjob.setMapOutputValueClass(IntWritable.class);
//設(shè)置業(yè)務(wù)邏輯Reducer類的輸出key和value的數(shù)據(jù)類型
wcjob.setOutputKeyClass(Text.class);
wcjob.setOutputValueClass(IntWritable.class);
//使用本地模式指定要處理的數(shù)據(jù)所在的位置
FileOutputFormat.setInputPaths(wcjob, "D:/mr/input");
//使用本地模式指定處理完成之后的結(jié)果所保存的位置
FileOutputFormat.setOutputPath(wcjob,new Path("D:/mr/output"));
//提交程序并且監(jiān)控打印程序執(zhí)行情況
boolean res=wcjob.waitForCompletion(true);
System.exit(res ?0:1);
}
}在文件4-6中,往Configuration對(duì)象中添加“mapreduce.framework.name=local”參數(shù),表示程序?yàn)楸镜剡\(yùn)行模式,實(shí)際上在hadoop-mapreduce-client-core-2.7.4.jar包下面的mapred-default.xml配置文件中,默認(rèn)指定使用本地運(yùn)行模式,因此mapreduce.framework.name=local配置也可以省略;同時(shí),還需要指定本地操作系統(tǒng)源文件目錄路徑和結(jié)果輸出的路徑。當(dāng)程序執(zhí)行完畢后,就可以在本地系統(tǒng)的指定輸出文件目錄查看執(zhí)行結(jié)果了。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19