Mapeduce编程八大步骤

简介: Mapreduce编程八大步 1.1:指定读取的文件位于哪里 FileInputFormat.setInputPaths() 指定如何对输入文件进行格式化,把输入文本每一行解析为键值对 job.

Mapreduce编程八大步

1.1:指定读取的文件位于哪里

FileInputFormat.setInputPaths()
指定如何对输入文件进行格式化,把输入文本每一行解析为键值对
job.setInputFormatClass()


1.2:指定自定义的Map类
job.setMapperClass()
//map输出的<k,v>类型,如果<k3,v3>的类型与<k2,v2>类型一致,则可以省略
//job.setMapOutputKeyClass()
//job.setMapOutputValueClass()


1.3:分区
job.setPartitionerClass()
//设置reduce任务个数
//job.setNumReducetasks(1)


1.4:TODO 排序  分组


1.5:规约

job.setCombinerClass()


2.1:指定自定义的Reduce类
job.setReduceClass()
//指定reduce的输出类型
//job.setOutputKeyClass()
//job.setOutputValueClass()


2.2:指定写出的文件位置
FileOutputFormat.setOutputPath()
指定如何对输出文件格式化类型
job.setoutputFormatClass()


2.3:把job提交给JobTracker运行

System.exit(status)


MapReduce程序的执行步骤:

1.Map任务处理

1.1  读取输入文件内容,解析成key,value对,对输入文件的每一行,解析成key,value对。每一个键值对调用一次map

函数

1.2  写自己的逻辑,对输入的key,value处理,转换成新的key,value输出

1.3  对输出的key,value进行分区

1.4  对不同分区的数据,按照key进行排序,分组相同key的value放到一个集合中

1.5  (可选)分组后的数据进行规约

2. reduce任务处理

2.1  对多个Map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点

2.2  对多个map任务的输出进行合并,排序,写reduce函数自己的逻辑,对输入的key,value处理,转换成新的key,value输出

2.3  把reduce的输出保存到文件中

相关文章
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
256 1
|
SQL 缓存 分布式计算
map-reduce执行过程
map-reduce执行过程
516 0
|
JavaScript 调度
【源码&库】 Vue3 的依赖收集,这里的依赖指代的是什么?
【源码&库】 Vue3 的依赖收集,这里的依赖指代的是什么?
204 0
【源码&库】 Vue3 的依赖收集,这里的依赖指代的是什么?
|
分布式计算 Hadoop 大数据
|
机器学习/深度学习 存储 NoSQL
X-SIMD高性能跨平台向量化加速库
X-SIMD是平头哥基于开源SIMDe开发的一个header-only C程序库,提供了一种简单易用的跨平台SIMD程序优化方案,旨在为不支持SIMD指令集的平台提供SIMD支持。X-SIMD可以帮助开发者快速完成应用软件迁移arm平台,减少用户重新编写SIMD算法工作量。
|
自然语言处理 Linux 编译器
Linux开发工具之【gcc/g++】
本文包括Linux开发工具gcc/g++的讲解和使用,动静态库的基本介绍,自动化构建工具make/Makefile的讲解和使用,以及sudo提权的讲解和配置,干货满满!
411 0
Linux开发工具之【gcc/g++】
Leetcode——485. 最大连续 1 的个数
文章目录 1、题目 2、滑动窗口 3、一次遍历(官方题解)
Leetcode——485. 最大连续 1 的个数
|
JavaScript 数据安全/隐私保护
vue局部加水印指令
vue局部加水印指令
361 0
|
安全 关系型数据库 MySQL
万里数据库加入龙蜥社区,打造基于“龙蜥+GreatSQL”的开源技术底座
欢迎万里数据库和GreatSQL社区加入,将继续发挥数据库厂商的优势,推动数据库与龙蜥操作系统的兼容适配工作。
万里数据库加入龙蜥社区,打造基于“龙蜥+GreatSQL”的开源技术底座