hadoop起步之mapReduce

来源:互联网 发布:js鞋子是什么牌子 编辑:程序博客网 时间:2024/06/07 21:52

1、map function, input : pairs, output : pairs

气象局的example,最终目的是计算出每年的最高温度。

input:

(0, 0067011990999991950051507004...9999999N9+00001+99999999999...)
(106, 0043011990999991950051512004...9999999N9+00221+99999999999...)

大体结构就是温度记录数据的文件偏移和行数据,map处理的是把年份和温度整理出来

output:

(1950, 0)
(1950, 22)
(1950, −11)
(1949, 111)
(1949, 78)


2、在将数据传递给reduce之前,需要经过一个mapReduce框架的处理,它会以key为单元将数据进行分组

output:

(1949, [111, 78])
(1950, [0, 22, −11])


3、数据发送给reduce function, input pairs, output:pairs

output:

(1949, 111)
(1950, 22)


角色分类:

1、hadoop会将input数据划分为split,也就是一块一块的数据,一般大小不能超过64MB,因为超过了,意味着这块数据无法在HDFS系统中存储在同一块BLOCK上

2、task有两类:map task和reduce task

3、每个split会被分配到一个map task,hadoop的分配原则是:优先考虑数据在某节点的HDFS上并且map task也在该节点上的情况,然后考虑的是在同一rack但不同节点的情况;最后考虑跨rack的节点情况;

4、管理类有两种:jobtracker和tasktracker,jobtracker负责分配task,并跟踪task处理情况;tasktracker负责处理task,并汇报task处理情况


关于map和reduce的输出:

1、map的输出是记录在本地磁盘的,而不是hdfs系统,因为这些output在reduce处理后即可删除,无需保留

2、map的输出是需要给reduce的,所以这里会涉及到数据在网络间的传输消耗

3、reduce的输出会进入hdfs系统,作为可靠数据存储


关于combiner环节

1、它是一个处理环节,处于map之后,可以在reduce之前进行一些不会影响reduce结果的数据预处理,例如数据筛选,目的就是减少map和reduce间的数据传输量

0 0