第二章 关于MapReduce
来源:互联网 发布:sqlserver基础知识 编辑:程序博客网 时间:2024/05/02 09:22
Unix传统处理按行存储数据工具是awk
MapReduce任务分为两个处理阶段:Map阶段和Reduce阶段。每个阶段都以键值对作为输入和输出,其类型有程序员来选择。程序员还需要些两个函数:map函数和reduce函数
map阶段为数据的准备阶段,此处我们比较合适去除去已损记录的地方,比如筛选缺失,可疑,错误的数据
防止覆盖的一个思路:
reduce写入目录。在运行作业前该目录是如果存在则跑异常,报错拒绝运行作业,预防数据丢失(长时间跑的数被覆盖一定非常恼人)
写好的Java打成jar包使用hadoop命令运行作业比直接使用Java命令来运行方便,hadoop会把文件和依赖以及路径和环境变量加进去
虚类:抽象类默认接口的实现类
注意:将Mapper和Reducer类转换为新API时,记住将map()和reduce()的签名转换为新形势
hadoop将作业分成若干个小任务(task)来执行,其中包含两类任务map任务和reduce任务
两类节点控制着的作业执行过程:一个jobtracker及一系列tasktracker。jobtracker通过调度tasktracker上运行的任务来协调所有运行在系统上的作业。tasktracker在运行任务的同时将运行进度报告发送给jobtracker,jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker可以在另外一个tasktracker上重新调度该任务。
一个合理的分片大小趋向于HDFS的一个块的大小,默认是64MB
map任务将其输出写入本地硬盘,而非HDFS
combiner函数
没用combiner函数前 key=>[value1,value2,value2...]
用之后向reduce输入的变为key=>maxvalue
有些情况不能用combiner,求最大值可以,但 平均气温这种就不能
他能有效的减少mappper和reduce之间的数据传输量,早MapReduce作业使用combiner函数需要慎重考虑
使用方法在运行的时候
job.setCombinerClass(我们的mapper类和MapClass为同一个类.class)
hadoop使用Unix标准流作为Hadoop和应用程序的接口,所以我们可以使用任何编程语言通过标准的输入/输出来写MapReduce
java,Ruby,Python..
- 第二章 关于mapreduce
- 第二章 关于MapReduce
- 第二章 关于MapReduce
- 第二章Mapreduce
- hadoop基础:第二部分 关于MapReduce
- 关于MapReduce
- 关于mapreduce
- 关于MapReduce
- 关于MapReduce
- MapReduce(第二部分)
- 第二章mapreduce(翻译粗略,优化中)
- 第二部分 应用篇 第七章 MongoDB MapReduce
- 关于MapReduce join操作
- 关于MapReduce传参数
- 关于mapreduce的切割
- Hadoop关于MapReduce
- 关于MapReduce的理解
- 关于mapreduce运行错误
- Java程序员最不爽项目经理的十大行为
- 写不来的算法代码
- 5、速度PID控制
- 网页设计报价
- BeCoolCmsx下表单里日期选择器的使用
- 第二章 关于MapReduce
- iOS内置购买之提交指南-协议、税务和银行业务
- qt 学习
- JavaScript 模块化开发一瞥
- bzoj 1036
- 洛谷 P1282 多米诺骨牌 (背包dp)
- java 线程实时监控硬盘文件目录的文件操作状态
- java反射机制在代理模式中的使用
- C语言中换行符和回车符的区别