云计算(5)---MapReduce
什么是MapReduce
例如用MapReduce如何计算12+22+32+42
用MapReduce执行Wordcount
步骤1:Map
map task1 和map task2是独立,并行进行
并行处理能加快速度
Map阶段输出起中间媒介作用的(key,value)值,做为Reduce的输入
步骤2 Reduce
Map的输出是Reduce的输入,最后Reduce输出右边的(key,value)
Reduce阶段不是独立进行的,而是根据key值进行分组,同一个key值的record在一个Reduce进程中运行,这样它们才能sum up.
Reduce具体的工作(partition和merge)
相同的key分到一个Reduce task, 具体分给哪个reduce处理,可以用Hash partitioning来计算,之所以选择Hash是因为它映射的hash number能做到均匀负载
Hadoop code - Map(Hadoop是开源的,而MapReduce不是的,MapReduce是由google发明的)
Wordcount的代码
MapReduce是由Google发明的,但是并没有公开实现代码,只是发表了关于它的论文
Yahhoo的工程师写了开源的MapReduce的实现,所以它变为了Apache Hadoop,现在被广泛应用
MapClass继承了基础的MapReduceBase类,实现了一个接口(一个模板接口)
Main function 是map, key和value(是text类型的数据)作为参数,有一个output,和reporter(以防止你想事后report一些事情)
Hadoop code - Reduce
Main function为reduce
一个key调用一次reduce function,多个key则调用多次reduce function
reduce function将对应同一个key的values相加.
Hadoop code - Driver
conf.setJobName(“mywordcount”); 设置job的名字
conf.setOutputKeyClass("Text.class"); 设置output key的class为words
conf.setOutputValueClass(IntWritable.class); 设置values的class为 ints
conf.setMapperClass();设置map的class
conf.setReducerClass();设置reduce的class
FileInputFormat.addInputPath(); 将data的文件目录加入inputPath
FileOutputFormat.setOutputPath(); 设置output的path目录
JobClient.runJob(conf); run这个job
最新文章
- phpcurl 请求Chunked-Encoded data 遇到的一个问题
- jQuery.my – 实时的复杂的双向数据绑定
- 报表工具如何实现多次导入Excel
- linux 查找文件的命令
- MacDev.Mach-O.Programming-Part-III:MachOView-v2.4.9200.dmg-crash
- objective-c(反射)
- my_strcmp()
- TCP状态转移图学习总结
- How to change drive in cygwin
- Gradle学习系列之八——构建多个Project
- SVN--分支、合并
- [转]15 个顶级 HTML5 游戏引擎
- 【C语言】-循环结构-for语句
- Hibernate + Spring (quartz) 整合懒(延迟)加载问题
- redis权限认证(设置密码)的方法
- HDU4405-Aeroplane chess(可能性DP需求预期)
- TensorLayer官方中文文档1.7.4:API – 强化学习
- [问与答]Python 中 __all__ 的作用 ?
- 12 Django Rest Swagger生成api文档
- [Codeforces757G]Can Bash Save the Day?——动态点分治(可持久化点分树)