处理框架--MapReduce

本文介绍了MapReduce的基本概念,包括其数据并行处理策略、编程模型及实现细节,并通过词频统计实例展示了如何使用MapReduce解决实际问题。此外,还讨论了MapReduce的优点和局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 数据类型与分析工具
     

    结构化

    非结构化

    批处理

    大规模并行仓库

    分布式文件系统

    hadoop/通用NoSQL

    实时

    内存DBs、分析RDBMS

    特殊NoSQL、流处理

     

  2. 数据并行带来的问题

GFS已经解决了数据分块存储的问题,但仍存在:

共享的状态:吞吐量(多个进程同时改变)、同步(同步修改需要锁);

小粒度的通讯让管理变得复杂;

失败的机器;

 

  1. MapReduce

数据并行的分治策略

Map:将数据分割为shards或者splits,将他们分配给工作节点,工作节点计算子问题的解。

Reduce:收集,合并子问题的解

 

基本编程模型:

Map:处理输入的键值对、生成中间结果集

map(in_key,in_value)->list(out_key, intermediate value)

reduce:对于某个键,合并它所有的值,生成结果值集合

reduce(out_key, list(intermediate_value))->list(out_value)

 

例子:词频统计

Distribute:将输入数据分割成M块,每块分布式调用map( )

切分文本数据->shards/splits

每个shard/split->交给map函数

Shuffle:将中间结果分割成R块,对每块分布式调用reduce( )

中间结果根据out_key"洗牌"->交给reduce函数

Collect:

合并结果

 

源代码:

map (String input_key, String input_value):

//input_key: document name

//input_value: document contents

localCount=CountLocally(input_value);

for each count:

emit (word, count); //Produce count of words;

 

reduce (String word, Iterator intermediate_value):

//word: the word in the intermediate_value

//intermediate_value: a list of counts

int result=0;

for each v in intermediate_values:

result+=v;

emit(word, result);

 

M和R的数量由用户指定:

M>>#servers, R>#servers

很大的M值有助于负载均衡,以及快速恢复;

每个Reduce调用,对应一个单独的输出文件,所以R值不应该太大;

 

冗余执行:

整个任务的完成时间由最慢的节点决定的。

解决方案:在接近结束时,生成冗余任务,谁最先完成,谁获胜(幂等操作)。

 

  1. Hadoop Mapreduce

组成:

JobTracker(master)、Tasktracker(Worker)、Task、Client、HDFS(类似GFS)

 

执行过程:

用户拷贝输入文件、提交任务、得到输入文件信息、创建切分、上传作业信息、提交任务、

初始化任务、读取任务文件、创建Maps和Reduces、选取任务、分配任务(心跳)

 

  1. 小结

同样的细粒度的操作(map、reduce)重复作用于大数据

操作必须是确定性的

操作是幂等的

只有shuffle过程中才有通信

操作输出存储在硬盘上

 

优点:

分布式过程完全透明,不需要分布式编程;

自动的容错性;

自动的规模缩放;

自动的负载均衡。

 

缺点:

严格的数据流(map+reduce);

很多常见的操作也必须手写;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值