一、学习目标 理解MapReduce设计思想
熟练掌握MapReduce分布式计算的基本原理
掌握使用java进行MapReduce编程
掌握在Hadoop集群中提交MapReduce任务
HDFS读文件
HDFS写文件
HDFS文件格式
二、MapReduce的设计思想 分而治之:简化并行计算的编程模型
构建抽象模型 :开发人员专注于实现Mapper和Reducer函数
隐藏系统层细节:开发人员专注于业务逻辑实现
三、MapReduce特点 优点:易于编程,可扩展性,高容错性,高吞吐量
不适用领域:难以实时计算(迅速做出反应),不适合流式计算,不适合DGA(有向图)计算
四、MapReduce编程规范
五、编写mapper 1.导入依赖 2.编写mapper类 (1)继承
org.apache.hadoop.mapreduce.Mapper (2)分割 map方法的重写
package com.njbdqn.mywz.wcserver;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*LongWritable, Text, Text, IntWritable前两个是进来的参数,后面两个是出来的参数进出都是键值对 */public class wcMapper extends Mapper 3.编写Reduce类 (1)继承
org.apache.hadoop.mapreduce.Reducer (2)聚合 reduce方法的重写
package com.njbdqn.mywz.wcserver;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;/*Text, IntWritable,Text,IntWritable前两个是进来的参数,后面两个是出来的参数这边前两个的进相当于mapper里面的出的两个参数进出都是键值对 */public class WcReduce extends Reducer {/*** 聚合* @param key* @param values* @param context* @throws IOException* @throws InterruptedException*/@Overrideprotected void reduce(Text key, Iterable 4.编写启动类APP 一定要注意自己导入的包!!!!!
package com.njbdqn.mywz.wcserver;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 WcApp {public static void main(String[] args) throws Exception {//产生1个job任务 注意导入的包是 mapreduce下的Job job = Job.getInstance(new Configuration(), "wc");//设置当前类未Jar包的引导主类job.setJarByClass(WcApp.class);//设置你读取文件的位置 注意导入的包是 mapreduce下的FileInputFormat.setInputPaths(job,new Path("d:/English.txt"));//设置结果存放路劲文件夹 一定要是空的 否则输出不了FileOutputFormat.setOutputPath(job,new Path("d:/hahaha"));//把自己的mapper嵌入到MapMapper中job.setMapperClass(WcMapper.class);//把自己的mapper类的输出类型通知框架job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);//把自己的reduce嵌入到MapReduce中job.setReducerClass(WcReduce.class);//吧自己的reduce的输出类型通知框架job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);//启动框架运行job.waitForCompletion(true);}} 5.查看你的文档
【分布式计算模型MapReduce】
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
