MapReduce特点:易于编程、良好扩展性、高容错性、PB级数据离线处理
缺陷:实时计算、流式计算(静态)、DAG计算(依赖关系)
实例:Wordcount
文件——分片——线程——哈希——汇总
Input:一系列key/value对
两个函数:map(k,v)->list(k1,v1), reduce(k1,list(v1))->v2
Output:一系列(k2,v2)对
map(key,value):
//文件名,内容
for each word w in value:
emit(w,1)
reduce(key,values):
//词汇,计数
result = 0
for each count v in values:
result += v
emit(key,result)
作业流程总结:
1.Map阶段: MapTask
输入数据格式解析:InputFormat
输入数据处理:Mapper
数据分组:Partitioner
2.Reduce阶段:Reduce Task
数据远程拷贝
按ket排序
数据处理:Reducer
数据输出格式:OutputFormat