首页 > 其他分享 >假期第六周总结

假期第六周总结

时间:2023-07-30 21:33:59浏览次数:39  
标签:总结 Mapper IntWritable 假期 MapReduce 第六周 job new class

      本周,主要干的事就是去给初二初三的补课,从三点补到八点,每天上课时间五个小时,再加上两个多小时的备课时间,讲的主要是初二的物理数学,初三的数学物理化学,很认真的讲课和准备,用一周基本把每一科的一章讲完了,有点累,不过还行,主要每一科上50分钟,小孩也还蛮有意思,然后我也有准备课程的记录:分为讲课的内容和练习册,每天上课先把练习册的提讲了,在讲一节的新课,在跳几道题做做,剩下留作作业,然后还挺紧张,不过毕竟是初中的课程,除了数学要简单推一下,剩下就直接原理,哦,还有物理的电很无语,可能我讲的也不太好吧。

记录下备课得内容:

 

 然后也抽空对大数据学习了下,学的是mapreduce,学的怎么样呢,会用吗,只会用他那个案例,还是背下来的,而且,以前觉得程序会用就行,但是我觉得大数据不一样,他是真的在讲源码,我是真的不动,目前就知道了mapreduce是什么,案例照着敲了下,反正最后学成啥算啥吧,至于源码,听不懂,怎么用,就明白了案例,然后我还觉得甚至都不用他给的程序,感觉是一个编程题,主要想表达的不知道学的是啥东西,不知道怎么用。

一、MapReduce概述

1、定义

MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析

应用”的核心框架。

MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的

分布式运算程序,并发运行在一个 Hadoop 集群上。

2、优势劣势

优点:

MapReduce 易于编程:它简单的实现一些接口,就可以完成一个分布式程序

良好的扩展性:当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。

高容错性:如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,

不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由 Hadoop 内部完成的。

适合 PB 级以上海量数据的离线处理:可以实现上千台服务器集群并发工作,提供数据处理能力。

缺点:

不擅长实时计算

不擅长流式计算:流式计算的输入数据是动态的,而 MapReduce 的输入数据集是静态的,不能动态变化。 这是因为 MapReduce 自身的设计特点决定了数据源必须是静态的。

不擅长 DAG(有向无环图)计算:多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下, MapReduce 并不是不能做,而是使用后,每个 MapReduce 作业的输出结果都会写入到磁盘, 会造成大量的磁盘 IO,导致性能非常的低下。

3、WordCount案例

核心思想:

(1)分布式的运算程序往往需要分成至少 2 个阶段。

(2)第一个阶段的 MapTask 并发实例,完全并行运行,互不相干。

(3)第二个阶段的 ReduceTask 并发实例互不相干,但是他们的数据依赖于上一个阶段

的所有 MapTask 并发实例的输出。

(4)MapReduce 编程模型只能包含一个 Map 阶段和一个 Reduce 阶段,如果用户的业

务逻辑非常复杂,那就只能多个 MapReduce 程序,串行运行。

总结:分析 WordCount 数据流走向深入理解 MapReduce 核心思想

二、序列化

常用数据序列化类型

MapReduce 编程规范

Mapper阶段

(1)用户自定义的Mapper要继承自己的父类

(2)Mapper的输入数据是KV对的形式(KV的类型可自定义)

(3)Mapper中的业务逻辑写在map()方法中

(4)Mapper的输出数据是KV对的形式(KV的类型可自定义)

(5)map()方法(MapTask进程)对每一个<K,V>调用一次

Reducer阶段

(1)用户自定义的Reducer要继承自己的父类

(2)Reducer的输入数据类型对应Mapper的输出数据类型,也是KV

(3)Reducer的业务逻辑写在reduce()方法中

(4)ReduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法

Driver阶段

相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是

封装了MapReduce程序相关运行参数的job对象

利用这个案例编写了几个程序:

public class WordCountDriver {
    public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
        //1获取job
        Configuration configuration = new Configuration();
        Job job = Job.getInstance(configuration);
        //2获取jar包路径
        job.setJarByClass(WordCountDriver.class);
        //3关联mapper和reducer
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);
        //4设置map的kv类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        //5设置最终输出的KV类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        //6设置输入路径和输出路径
        FileInputFormat.setInputPaths(job,new Path("D:\\input\\inputword"));
        FileOutputFormat.setOutputPath(job,new Path("D:\\output\\output2"));
        //7提交job
        boolean result = job.waitForCompletion(true);
        System.exit(result?0:1);

    }
}
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private Text outK = new Text();
private IntWritable outV = new IntWritable(1);
@Override
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
//获取一行
String line = value.toString();
//进行切割
String[] words = line.split(" ");
//循环写出
for (String word : words) {
//封装
outK.set(word);
//写出
context.write(outK,outV);
}


}
}
public class WordCountReducer extends Reducer<Text, IntWritable,Text,IntWritable> {
private IntWritable outV = new IntWritable();
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
int sum = 0;
//atguigu,(1,1)
// 累加
for (IntWritable value : values) {
sum += value.get();
}

outV.set(sum);

context.write(key,outV);
}
}
//放一个块里了

学的很难受,主要一点成就感都没,不知道干啥,ok,备课去了。

 

标签:总结,Mapper,IntWritable,假期,MapReduce,第六周,job,new,class
From: https://www.cnblogs.com/JIANGzihao0222/p/17592074.html

相关文章

  • 7.30总结
    今天上午突然起来,梦见自己的晚交了博客,起来一看截止时间市7.31,我已经不想在读那后面看的不太懂的文章,就起来抓紧写博客,然后中午写完,我的发小正好要来我家报志愿,他是报的专科批,今天中午十二点以后才开始填报,看了今年本科批第二次征集,上面离谱的学费令我震惊,但我相信即使学费死贵,也......
  • 七月三十日总结
    早上8点起来洗漱吃饭康复训练。中午吃晚饭午休一会写大道至简读后感,学习java晚上吃完晚饭洗漱,准备睡觉。今天读后感完成,明天继续学习java,同时康复训练。保持早睡,养成良好的作息习惯。......
  • Interop.Excel 个人总结二
    常用的有些是工作表操作,有些是excel操作,工作表操作备注为常用的excel命令1,excel操作为2,关闭等操作参考(Interop.Excel 个人总结一)Microsoft.Office.Interop.Excel.Applicationapp =newMicrosoft.Office.Interop.Excel.Application{Visible=true};//visble是是否展示exce......
  • 每日总结(补档7月16日)
    今天发生了些不太愉快的事情,我也不知道那个导游是何居心,居然煽动团里哪些没交钱的游客来攻击我们这些交了钱去深度游的游客,说什么本来可以都去因为你们这些人去不了了。哇,我就没见过这么无语的人,我跟的是一个老年旅行团,本来就是希望慢一点,他给我整这一出,这我能忍?直接在旅行社投诉......
  • 每日总结(补档7月17日)
    在经历了昨天的不愉快事件后,导游就是一副家里人没了的表情,他越是难受我越是开心,谁让你耽误我们一天时间的,活该。今天要去附近的俄罗斯风情村,这一进村子,确实是有俄罗斯的感觉,村民几乎全是俄罗斯族的人,估计很多都是之前从俄罗斯过来的,这也说不准,倒也没什么特别的东西,列巴和巧克力,纯......
  • 每日总结(补档7月14日)
    昨天晚上在名叫星空蒙古包的旅馆住下了,起初我还以为旅馆名字是噱头,今天早上三点我就不这么想了,这屋顶是透明的,天亮的感觉很明显,3点多就被迫起来了,4点多的时候就已经有阳光射向房内,困意全无。早上集合时导游特意问了一句感受到阳光了吗,我心想,这辈子没那么讨厌阳光过,今天的主要目的......
  • 每日总结(补档7月13日)
    今天从通辽向科尔沁旗出发,东北跟草原确实是早晚冷,要不是因为没带羽绒服,指不定就把羽绒服穿上了。越赶路越发现楼房在变少,地面在变绿,傍晚6点左右的时候就彻底是草原了,因为纬度原因,天黑得很晚,晚饭是烤全羊,一人分到嘴里也没剩多少了,没有其他的调味料吃着还是差点意思......
  • 每日总结(补档7月11日)
    今天是我们要去旅游的第一天,从草原到新疆,想想就觉得让人兴奋,除了一些必要的用品外,我还带了大道至简,无他,不带去看不完了,这知识的重量压了我一路,从我们区区政府上车,6个小时的车程属实是难为人。ps:旅游这些天带不了电脑,手机又发不了博,只能回来一块写,望老师见谅。......
  • 《Redis 设计与实现》的总结
    17.集群cluster-enabled#是否开启集群模式的选项CLUSTERMEET<ip><port>#告诉当前节点将ip:port节点加入到集群中三个数据结构:clusterNode:clusterNode结构保存了一个节点的当前状态,比如节点的创建时间、节点的名字、节点当前的配置纪元、节点的IP地址和端口号等等。......
  • 7.30第四周总结
    实现一个聊天服务器来支持网页聊天。我先做好了聊天服务器,用Java中的线程,io,socket,serverSocket就可以实现,而且还可以上传文件,上传文件做了优化,采用多线程,这样就不会影响聊天。从协议,到用户对象设计,数据库设计,客户端的设计用到MVC模式。花了一天半的时间将程序初步写出来,又花了三天......