Main Content

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

parallel.cluster.Spark

Spark 集群用于 mapreducer、mapreduce 和 tall 数组

自 R2022b 起

    说明

    parallel.cluster.Spark 对象代表 Spark™ 集群并提供对它的访问。使用 parallel.cluster.Spark 对象作为 mapreducemapreducer 函数的输入,用于将 Spark 集群指定为 tall 数组和 mapreduce 的并行执行环境。

    创建对象

    使用 parcluster 函数从 Spark 集群配置文件创建 parallel.cluster.Spark 集群对象。或者,使用 parallel.cluster.Spark 函数(此处描述)来创建 Spark 集群对象。

    描述

    sparkCluster = parallel.cluster.Spark 创建一个代表 Spark 集群的 parallel.cluster.Spark 对象。

    sparkCluster = parallel.cluster.Spark(Name,Value) 使用 parallel.cluster.Spark 对象上的一个或多个名称-值参量设置可选属性。例如,要更改 Spark 安装文件夹,请使用 SparkInstallFolder="/share/spark/spark-3.3.0"。有关有效属性的列表,请参阅 属性

    示例

    属性

    全部展开

    要添加到工作进程的 MATLAB 搜索路径的文件夹,指定为字符向量、字符串或字符串数组或字符向量单元格数组。

    当您将计算任务卸载到工作进程时,客户端进行计算所需的任何文件也必须在工作进程上可用。默认情况下,客户端会尝试检测并附加这些文件。要关闭自动检测,请将 AutoAttachFiles 属性设置为 false。如果软件无法找到所有文件,或者从客户端向工作进程发送文件的速度很慢,请使用以下选项之一。

    • 如果文件位于工作进程无法访问的文件夹中,请设置 AttachedFiles 属性。集群将您指定的每个文件从客户端复制到工作进程。

    • 如果文件位于工作进程可访问的文件夹中,则可以设置 AdditionalPaths 属性。使用 AdditionalPaths 属性将路径添加到每个工作进程的 MATLAB 搜索路径,并避免不必要地从客户端复制到工作进程。

    mapreduce 调用期间发送给工作进程的文件和文件夹,指定为字符向量、字符串或字符串数组或字符向量单元格数组

    指定是否在客户端上自动检测并附加文件。

    数据类型: logical

    工作进程的 MATLAB 路径,指定为由 'ClusterMatlabRoot' 和字符向量组成的逗号分隔的对。这指向为工作进程安装 MATLAB Parallel Server™,无论是在每台机器本地还是在网络共享上。

    数据类型: string

    与在线许可一起使用的许可证号码。

    自 R2024a 起

    此 属性 为只读。

    如果此集群中的任何属性与集群配置文件相比已被修改,则返回逻辑 true;如果您修改了集群属性,则返回逻辑 true (1),否则返回逻辑 false (0)。

    数据类型: logical

    自 R2024a 起

    工作进程的计算线程数,指定为非负整数。

    自 R2024a 起

    集群工作进程机器的操作系统,指定为以下值之一:

    • "windows"

    • "unix"

    • "mixed"

    自 R2024a 起

    用于创建集群对象的配置文件的名称,指定为字符向量。

    数据类型: char

    指定 Spark 集群是否使用在线许可。

    数据类型: logical

    客户端计算机上 Spark 的安装路径,指定为由 SparkInstallFolder 和字符向量或字符串数组组组成的逗号分隔的对。如果未设置此属性,则默认为环境变量 SPARK_PREFIX 指定的值,如果未设置,则为 SPARK_HOME

    数据类型: char

    要赋予 Spark 集群的 Spark 名称-值属性对的映射。

    SparkProperties 允许您覆盖 Spark 的配置属性。请参阅 Spark 文档中的属性列表。

    自 R2024a 起

    此 属性 为只读。

    此集群的类型,返回为 'Spark'

    自 R2024a 起

    与当前会话中的集群对象相关的数据,指定为任何 MATLAB 数据类型。

    对象函数

    mapreduce用于分析无法载入内存的数据集的编程方法
    mapreducer为 mapreduce 和 tall 数组定义并行执行环境
    saveAsProfile将集群属性保存到指定的配置文件
    saveProfile将修改后的集群属性保存到其当前配置文件中

    示例

    全部折叠

    自 R2024a 起

    从 Spark 集群配置文件创建并使用 parallel.cluster.Spark 对象。

    要了解如何为您的 Spark 集群创建配置文件,请参阅 客户端配置 (MATLAB Parallel Server)

    sparkCluster = parcluster("SparkProfile")
    mr = mapreducer(sparkCluster)
    cluster = 
    
     Spark Cluster
    
        Properties: 
    
                          Type: Spark
                       Profile: SparkProfile
                      Modified: false
                    NumThreads: 1
       RequiresOnlineLicensing: false
             ClusterMatlabRoot: /network/installs/MATLAB/R2024a/matlab
    
            SparkInstallFolder: /network/installs/spark/3.0.2-3.2
               SparkProperties: [1x1 parallel.cluster.SparkProperties]
    

    手动创建并使用 parallel.cluster.Spark 对象。

    通过指定 Spark 安装在您的机器上来创建集群对象,并将 Spark 集群设置为 mapreduce 并行执行环境。

    sparkCluster = parallel.cluster.Spark(SparkInstallFolder="/host/spark-install");
    mr = mapreducer(sparkCluster)

    限制

    • Spark 集群配置文件不支持设置为默认配置文件。

    • Spark 集群不支持并行池和批处理作业。

    提示

    Spark 集群对可用内存量进行限制。您必须调整要收集的数据的大小以支持您的工作流。

    收集到客户端的数据量受到 Spark 属性的限制:

    • spark.driver.memory

    • spark.executor.memory

    从 MATLAB 提交的 Spark 作业的 spark.executor.memory 属性的默认值为 2560 MB。

    从单个 Spark 任务收集的数据量必须符合这些属性。单个 Spark 任务进程来自 HDFS 的一个数据块,默认情况下为 128 MB 数据。如果您收集包含大部分原始数据的 tall 数组,则必须确保这些属性设置为适合。

    如果这些属性设置得太小,您会看到如下错误。

    Error using tall/gather (line 50)
    Out of memory; unable to gather a partition of size 300m from Spark.
    Adjust the values of the Spark properties spark.driver.memory and 
    spark.executor.memory to fit this partition.
    错误消息还指定了您需要的属性设置。

    在集群的默认设置中或直接在 MATLAB 中调整属性。要调整 MATLAB 中的属性,您可以将这些 Spark 属性添加到 Spark 集群配置文件的 SparkProperties 表中。

    名称类型
    spark.driver.memory2048mString
    spark.executor.memory2048mString

    您还可以编辑 Spark 集群对象。

    cluster = parcluster("SparkProfile");
    cluster.SparkProperties('spark.driver.memory') = '2048m';
    cluster.SparkProperties('spark.executor.memory') = '2048m';
    mapreducer(cluster);

    版本历史记录

    在 R2022b 中推出

    全部展开