Main Content

本页采用了机器翻译。点击此处可查看英文原文。

mapreducer

为 mapreduce 和 tall 数组定义并行执行环境

说明

mapreducer 定义 mapreduce 或 tall 数组的执行环境。使用 mapreducer 函数可以更改执行环境以使用不同的集群或在串行和并行开发之间切换。

默认执行环境使用本地 MATLAB® 会话,或者如果有 Parallel Computing Toolbox™ 则使用并行池。如果您安装了 Parallel Computing Toolbox,当您使用 tallmapreduce 函数时,MATLAB 会自动启动一个并行工作进程池,除非您更改了默认首选项。默认情况下,并行池使用本地工作进程,通常机器的每个核心都有一个工作进程。如果您关闭自动创建并行池选项,则如果您想使用并行资源,就必须明确启动一个池。请参阅指定您的并行首选项

使用 tall 数组时,使用 mapreducer 在创建 tall 数组之前设置执行环境。在构造 tall 数组时,它们会绑定到当前全局执行环境。如果您随后更改了全局执行环境,那么 tall 数组无效,您必须重新创建它。

注意

在 MATLAB 中,您不需要使用 mapreducer 指定配置设置,因为 mapreduce 算法和 tall 数组计算仅在本地 MATLAB 会话中自动运行。如果您还有 Parallel Computing Toolbox,那么您可以使用本页列出的附加 mapreducer 配置选项进行并行运行。如果您有 MATLAB Compiler™,那么您可以使用单独的 mapreducer 配置选项在部署的环境中运行。

参见:MATLAB 文档中的 mapreducer,或 MATLAB Compiler 文档中的 mapreducer (MATLAB Compiler)

没有输入参量的 mapreducer 会创建一个具有所有默认值的新 mapreducer 执行环境,并将其设置为当前 mapreduce 或 tall 数组执行环境。您可以使用 gcmr 来获取当前的 mapreducer 配置。

  • 如果您具有默认首选项(自动创建并行池已启用),并且您尚未打开并行池,则 mapreducer 将使用默认集群配置文件打开一个池,将 gcmr 设置为基于此池的 mapreducer 并返回此 mapreducer。

  • 如果已经开启了并行池,那么 mapreducer 会将 gcmr 设置为基于当前池的 mapreducer 并返回这个 mapreducer。

  • 如果您禁用了自动创建并行池,并且没有开启并行池,那么 mapreducer 会将 gcmr 设置为基于本地 MATLAB 会话的 mapreducer,而 mapreducer 会返回这个 mapreducer。

示例

mapreducer(0) 指定 mapreducetall 数组计算在 MATLAB 客户端会话中运行,而不使用任何并行资源。

示例

mapreducer(poolobj) 指定一个并行池,用于并行执行 mapreduce 或 tall 数组。poolobj 是一个 parallel.Pool 对象。默认池是 gcp 返回或打开的当前池。

mapreducer(hadoopCluster) 指定 Hadoop® 集群,用于并行执行 mapreduce 或 tall 数组。hadoopClusterparallel.cluster.Hadoop 对象。

mapreducer(mr)mapreduce 或 tall 数组设置全局执行环境,使用之前创建的 MapReducer 对象 mr(如果其 ObjectVisibility 属性为 'On')。

mr = mapreducer(___) 返回一个 MapReducer 对象来指定执行环境。您可以定义多个 MapReducer 对象,这样您就可以通过将其中一个对象作为输入参量传递给 mapreducemapreducer 来交换执行环境。

mr = mapreducer(___,'ObjectVisibility','Off') 使用任何前面的语法隐藏 MapReducer 对象 mr 的可见性。使用此语法可以创建新的 MapReducer 对象,而不会影响 mapreduce 的全局执行环境。

示例

串行开发,然后使用本地工作进程或集群

如果您想要串行开发并且不使用本地工作进程或指定的集群,请输入:

mapreducer(0);

如果在创建 tall 数组后使用 mapreducer 更改执行环境,则该 tall 数组无效,必须重新创建它。要再次使用本地工作进程或指定的集群,请输入:

mapreducer(gcp);

mapreducer 已关闭自动创建并行池

如果您关闭了自动创建并行池选项,那么如果您想使用并行资源,就必须明确启动一个池。请参阅 指定您的并行首选项 了解详细信息。

此代码显示如何使用 mapreducer 将执行环境设置为本地 MATLAB 会话,然后指定本地并行池。

>> mapreducer(0)
>> parpool('Processes',1);
Starting parallel pool (parpool) using the 'Processes' profile ... 
Connected to 1 workers.

使用并行池评估一个 tall 表达式。

>> gather(min(tall(rand(1000,1))))
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.63 sec
Evaluation completed in 0.99 sec

ans =

   5.2238e-04

输入参数

全部折叠

并行执行池,指定为 parallel.Pool 对象。

示例: poolobj = gcp

Hadoop 集群用于并行执行,指定为 parallel.cluster.Hadoop 对象。

示例: hadoopCluster = parallel.cluster.Hadoop

输出参量

全部折叠

mapreduce 和 tall 数组的执行环境,作为 MapReducer 对象返回。

如果将 mrObjectVisibility 属性设置为 'On',则 mr 定义所有 mapreduce 算法和 tall 数组计算的默认执行环境。如果 ObjectVisibility 属性是 'Off',则可以将 mr 作为输入参量传递给 mapreduce,以明确指定该特定调用的执行环境。

您可以定义多个 MapReducer 对象,这样您就可以通过将其中一个对象作为输入参量传递给 mapreducemapreducer 来交换执行环境。

提示

使用 tall 数组开发算法的好处之一是您只需编写一次代码。您可以在本地开发代码,然后使用 mapreducer 进行扩展并利用 Parallel Computing Toolbox、MATLAB Parallel Server™ 或 MATLAB Compiler 提供的功能,而无需重写算法。

扩展功能

版本历史记录

在 R2014b 中推出