Study Note: Optimization in MapReduce

本文介绍了云计算的本质及其解决内存限制的方式,并深入探讨了MapReduce的工作原理及优化策略,包括自定义分区器、合理配置Mapper与Reducer数量以及使用本地聚集等方法。

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

云计算本质上是一种scalable的分布式计算。对于之前提到的many cores和multi-cores而言,最大的局限在于内存都是有限的。云计算完美解决了这个问题(用分割数据的方法)。

 

有两种分布式计算的方法:

1)好像openmp和cuda一样,允许共享内存空间,实行workload distribute。在分布式系统实现这种方法需要分清楚processnode和storage node. 但这种方法存在的问题是磁盘的I/O和网络带宽成为了局限,同时,程序猿需要同步、资源分配等问题。

2)只分数据,让各个节点自行计算各自部分的数据,最后再合计。(computeindependent) 这种就是can perform independent shared nothingcomputations on fragments of the dataset. Shared Nothing Architecture: Eachnode is independent and self-sufficient (none of the nodes share memory or diskstorage)。Mapreduce就是这样的一个sharenothing approach

 

 

具有scalable的算法是云计算的主要应用方向,什么是scalable的算法?

 

 

 

下面就来说说MapReduce平台:

 

介绍一些基础的概念:

 

一个实际的计算节点可能有多个map。一个节点对应着是一个task(一个mapper)。因为在mapreduce当中,mapper的分配框架自动决定的,人为无法干预。Mapper是被分配到存储数据的节点进行计算,我们不能指定某个mapper要去计算某一部分的数据。

 

但是我们可以修改中间键的排序算法和partition算法,决定哪个部分的Key会分配到某一个reducer。

 

同时,我们可以preserve state across multipleinput and intermediate key in mappers and reducers

 

优化和最大化mapreduce框架的效率的关键是:

(1)内存的合适利用。当mapper缓存的数据太多了,memory被paging到了disk的话,就是大大地降低MR的效率。所以,当多个map在一个node的时候,注意不要让他们用光内存。

(2)减少datatransfer over network.减少中间KV对的数目和大小。

 

MapReduce的优化方法主要是:

 

(1)平均工作量:

自定义partitioner,使得每个reducer 拥有均等的计算量

(2)调用合适数量的mapper与reducer

mapper的数量是框架自动决定的,我们只能定义有多少个节点以及输入数据的KV结构,但是reducer的数量是我们决定的(通过setreducer),我们需要注意的是不要让reducer的memory超载(从partitioner 和reducer的数量保证)

(3)对于mapreduce算法的实现需要设计模型的考虑



① 本地聚集:

本地聚集包含两种:combiner in map 还有 In-mapper combiner()

首先,我们要分清map和mapper的关系, 一个mapper可以循环执行多次map函数。本地聚集的目的是减少中间的KV对的数目和量。如果不使用关联数组来减少KV对,一个简单KV对就会输出并写入磁盘。有I/O和网络传输的延时。

 

引用的话:

 

举个常见的例子来说:数单词。假设现在有100 篇的文集,要数出每个单词出现的次数。MapRudce 接到这个任务后,首先检测文集数据的正确性。然后进行分割(这里我们采用逻辑上的分割)。比如集群有10 个TaskTracker可用。MapReduce 将100文档进行平均分割,每个TaskTracker会得到10篇文集。若每个TaskTracker运行一个Mapper的话,这10篇文集会一次被Mapper 处理(调用10次map函数)。10篇文集又会被分切成10个RecordReader形式的Key/Value(key=docId,value=docContent)。这样一个Mapper 一次就会处理一片文档。

 

① combiner in map: 只对一个map 函数处理的一片文档进行本地聚集(counts for entiredocument)

② In-mapper combiner 对一个mapper函数的所有map函数的处理文档进行本地聚集

(counts acrossdocuments)

如果需要使用这个,必须打开:mapreduce.job.jvm.numtasks=-1

 

使用本地聚集的话必须注意内存使用,不能溢出。以数单词为例,假设Mapper处理的10篇文档很大设计到很多的单词,这样关联数组势必会非常大,又可能大到一个JVM不能完全存储这个关联数组。当几个map在同一个Node进行的时候,会对内存资源产生竞争,降低效率。

 

另外,使用in-mapper combiner的时候,它破坏了MapReduce 编程模式(functionalprogramming paradigm due to state preservation)的基础,对于一些特定的算法它是不合适使用,比如某些算法要求对Map方法处理的Key/Value的中间结果先后有要求,那么这种In-Mapper Combining 是不适应的。

 

② Pairs and Stripes ——对一些共同出现的频数统计

 

Pairs: ((w1, w2), count)坏处:a large number ofintermediate kv, limited benefits of combiners 好处:no memory pagingproblem

Strips: (w1,[count(w1,w2),count(w1,w3)…]) 把对应的频数放在关联数组里

好处:fewer intermediate keys, benefits from combiners 坏处:values complex,overhead of read/write, memory paging problem.

Pairs:

 

 

 

Strips:

 


 

③ Order Inversion 求相对频率的分母——在mapper的输出利用combiner 去求

 



The denominator iscalled the marginal.

 

1、对于strip的KV,直接在reducer的时候求和就好

2、对于pairs 的KV,可以利用Mapreduce的特点,对于multiple keys,利用memory buffer(缓存) 一些中间KV。Buffer in memory all the words that co-occur with wi and their counts.

 


<think>好的,我现在需要处理用户关于MATLAB Optimization App将在未来版本中被移除的询问。首先,用户提到参考了引用[1]和[2],但这两个引用看起来与LBM方法和Hi-C实验优化有关,可能和Optimization App关系不大。不过用户的问题是关于Optimization App的移除,所以可能需要先查找官方资料。 用户提到了“Optimization app removal future release MATLAB optimtool line 181 release notes”。我需要确定MATLAB哪个版本的发布说明提到了这一点。optimtool是Optimization Toolbox的图形界面,可能在较新的版本中,MathWorks宣布将其移除。 首先,我应该回忆一下MathWorks近年来的发布说明。例如,在R2021a或之后的版本中,可能开始有关于optimtool的弃用通知。通常,MathWorks会在几个版本前发出警告,然后在后续版本中移除功能。用户提到的“line 181 release notes”可能是指某个具体版本的发布说明中的某一行,但需要核实。 接下来,我需要确认官方文档。例如,查看MATLAB R2023a或R2024a的Release Notes,寻找关于Optimization App(optimtool)的移除通知。根据MathWorks的惯例,他们可能推荐使用替代方法,比如基于脚本的函数调用,如fmincon、fminunc等,或者新的App替代品。 另外,用户可能需要知道如何迁移现有的optimtool工作流程到新的方法。例如,使用optimoptions来设置优化选项,或者使用Problem-Based Optimization Workflow。这部分信息需要准确,避免用户困惑。 还需要检查是否有已知的问题或替代方案,比如是否有新的App或工具取代了optimtool。例如,是否在MATLAB Live Editor中集成了优化任务,或者是否有其他图形界面工具推荐。 此外,用户可能关心现有代码或脚本是否会受到影响。如果之前使用optimtool生成的代码,是否需要修改?通常,MathWorks会尽量保持向后兼容,但被移除的功能可能需要替换为新的函数或界面。 最后,生成相关问题时要考虑用户可能进一步想知道的内容,比如替代工具的使用方法、迁移步骤、移除原因等。确保问题覆盖用户可能遇到的后续疑问。</think>关于MATLAB中Optimization App(`optimtool`)的移除计划,MathWorks在多个版本的发布说明中已明确提及。以下是详细信息整理: 1. **移除背景** Optimization App(`optimtool`)是MATLAB Optimization Toolbox的图形界面工具,用于交互式配置优化问题。自**R2021a版本**起,MathWorks开始推荐使用**基于脚本的优化工作流**(如`fmincon`、`fminunc`等函数)和**基于问题的优化工作流**(Problem-Based Approach),并逐步弃用`optimtool`[^1]。 2. **具体移除计划** - 在**R2023a版本**的发布说明中,MathWorks正式宣布`optimtool`将在未来版本中移除,并提示用户迁移至替代方法[^1]。 - 移除的直接原因是图形界面工具的使用率下降,且基于脚本/问题的工作流更灵活、易维护。 3. **替代方案** - **基于脚本的优化**:直接调用优化函数,例如: ```matlab options = optimoptions('fmincon', 'Algorithm', 'sqp'); [x, fval] = fmincon(@objective, x0, [], [], [], [], lb, ub, @constraints, options); ``` - **基于问题的优化**(推荐): ```matlab prob = optimproblem; x = optimvar('x', 2); prob.Objective = x(1)^2 + 10*x(2)^2; prob.Constraints.cons1 = x(1) + x(2) >= 1; [sol, fval] = solve(prob); ``` - **实时编辑器任务**:在MATLAB实时编辑器中,可通过“任务”菜单快速生成优化代码。 4. **迁移建议** - 若已保存`optimtool`的`.mat`文件,可使用`load`加载后手动转换为脚本。 - 使用`optimoptions`替代图形界面中的参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值