Hadoop的MapReduce
来源:互联网 发布:lr监控windows资源 编辑:程序博客网 时间:2024/05/17 08:02
1: 键值对成为hadoop任务的基础
hadoop中的数据包含与相关值关联的值,这些数据的存储方式允许数据集的不同值根据建进行分类和重排。
键是唯一的,但是值不一定唯一,每个值必须与键想关联,但键可能没有值,对建的明确定义很关键。
MapReduce只能处理以键值对形式描述的数据
2: MapReduce作业的多个阶段:{k1,v1} -> {k2,List<v2>}->{k3,v3}
map方法的输入时一系列键值对,称为k1,v1
map方式的输出是一系列键以及关联的值列表,称为k2,v2 ,每个mapper仅仅输出一系列单个键值对,他们是通过shuffle方法组合成建与值得列表
mapReduce作业的最终输出是另一个键值对,称为k3,v3
3: MapReduce Jave API
mapper类提供mapper方法,该类以键/值数据作为输入和输出类型,map方法以输入的键值对作为参数
void map(k1 key,v1 value mapper.Context context) throws IOException,InterruptedException
reducer类提供reduce方法
void reduce(k2 key,Iterable<v2> values,Reducer.Context context) throws IOException,InterruptException
4:综述mapreduce的工作原理
(1)启动时,jobTracker与NameNode通信,并对存储在HDFS上的数据相关的所有交互进行管理
(2)将大的数据块进行分块,并确定将每小数据块分配给一个map任务
(3)任务分配,jobTracker确定map任务数
(4)任务启动,每个TaskTracker开启一个独立的java虚拟机来执行任务
(5)mapper的输入:
有两行文字 This is a test
Yes this is
(6) mapper的执行:拆分,mapper输出由单词本身组成的键和值1 如(This ,1) , (is ,1),(a,1),(test,1),(Yes,1),(it,1),(is,1)
这些从mapper输出的键值对并不会直接传给reducer,还需要一个shuffle过程,与给定键相关的所有值都会被提交到同一reducer。所以需要将键值以key Iterable的方式。
(7)reducer类的输出,最后合并一个文件。
注意:文件被切分为split,split中的数据被送往mapper,数据在文件中如何存储,以及单个键值如何传给mapper
使用InputFormat和OutputFormat的概念将文件作为整体进行处理,并使用RecordReader将数据格式转化为键值对,然后使用RecordWriter将数据格式从建值对转换为所需格式
- hadoop的mapreduce过程
- Hadoop的MapReduce
- Hadoop-简单的MapReduce
- Hadoop-MapReduce的格式
- Hadoop的MapReduce
- 03hadoop的MapReduce
- Hadoop概要-MapReduce的认识
- hadoop,MapReduce的工作机制
- Hadoop中MapReduce的原理
- Hadoop MapReduce作业的生命周期
- 图示Hadoop MapReduce的生命周期
- Hadoop MapReduce的shuffle过程
- hadoop中mapreduce的默认设置
- Hadoop 中MapReduce的数据流
- hadoop的mapreduce原理解析
- Hadoop-简单的MapReduce案例
- Hadoop:MapReduce作业的生命周期
- Hadoop的MapReduce分布式计算
- CF 558E(A Simple Task-计数排序+线段树)
- 基于Cocos2d-x的英雄联盟皮肤选择菜单
- 设计4个线程 其中两个线程每次对j增加1
- C++的逆波兰表达式的求解
- 经常换jsp页面导致页面无法显示
- Hadoop的MapReduce
- TCP三次握手 四次挥手
- leetcode刷题。总结,记录,备忘 122
- Menu 菜单之OptionsMenu
- Xen 的设备
- assert()函数用法总结
- JAVA深入研究——Method的Invoke方法
- Dijkstra — 最短路径算法
- 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行,如何解决