MapReduce简介
什么是MapReduce
- 源于Google的MapReduce论文(2004年12月)
- Hadoop的MapReduce是Google论文的开源实现
- MapReduce优点:海量数据离线处理&易开发
- MapRedecu缺点:实时流式计算
MapReduce编程模型
MapReduce分而治之的思想:就是数据在那台计算机上,这台计算机上的数据就归这台计算机处理,处理完成后进行汇总
MapReduce编程分Map和Reduce阶段
- 将作业拆分成Map和Reduce阶段
- Map阶段:将复杂问题分解成若干个简单的任务
- Reduce阶段:对Map阶段返回的数据进行汇总处理
- Word Count词频统计案例:
MapReduce实例
mrjob简介
- 使用python开发在Hadoop上运行的程序,mrjob是最简单的方式
- mejob程序可以在本地测试运行也可以部署在Hadoop集群上运行
- 使用pip安装:pip install mejob
mrjob实现词频统计
1 | from mrjob.job import MRJob |
1 | python mr_word_count.py 文档路径 |
运行MRJOB的不同方式
内嵌(-r inline)方式
- 特点是调试方便,启动单一进程模拟任务执行状态和结果,默认(-r inline)可以省略,输出文件使用 > output-file 或-o output-file,比如下面两种运行方式是等价的
- python word_count.py -r inline input.txt > output.txt python word_count.py input.txt > output.txt
本地(-r local)方式
- 用于本地模拟Hadoop调试,与内嵌(inline)方式的区别是启动了多进程执行每一个任务。如:
- python word_count.py -r local input.txt > output1.txt
Hadoop(-r hadoop)方式
- 用于hadoop环境,支持Hadoop运行调度控制参数,如:
指定Hadoop任务调度优先级(VERY_HIGH|HIGH),如:–jobconf mapreduce.job.priority=VERY_HIGH。
Map及Reduce任务个数限制,如:–jobconf mapreduce.map.tasks=2 –jobconf mapreduce.reduce.tasks=5
- python word_count.py -r hadoop hdfs:///test.txt -o hdfs:///output
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zoubinbf@163.com