主要内容

将高数组部署到火花启用Hadoop集群

支持平台:Linux®只有。

这个例子展示了如何部署一个MATLAB®包含高数组的应用程序到支持Spark™的Hadoop®集群。

目标:从给定的数据集中计算航空公司的平均到达延误和最大到达延误。

数据集: airlinesmall.csv
描述:

1987-2008年的航班离港和抵达信息。

地点: /usr/local/MATLAB/R2022b/工具箱/ matlab /演示

请注意

您可以按照相同的说明将高阵列Spark应用程序部署到Cloudera®鼎晖。查看示例MATLAB的答案™,点击在这里

要使用Cloudera CDH加密区域,需要添加JAR文件commons-codec-1.9.jar的静态类路径MATLAB运行时.文件的位置:HADOOP_PREFIX / lib / commons-codec-1.9.jar美元,其中$HADOOP_PREFIX是安装Hadoop的位置。

请注意

如果您使用的是Spark 1.6或更高版本,则需要增加Java®堆大小在MATLAB中至少512MB。有关如何在MATLAB中增加Java堆大小的信息,请参见Java堆内存首选项

先决条件

  1. 通过创建一个MATLAB搜索路径可见的新工作文件夹开始这个示例。

  2. 安装MATLAB运行时在Hadoop集群中的每个工作节点都可以访问的文件夹中。这个示例使用/usr/local/MATLAB/MATLAB_Runtime /<版本>作为位置MATLAB运行时文件夹中。

    如果你没有MATLAB运行时,你可从以下网址下载://www.ru-cchi.com/2022世界杯八强谁会赢?products/compiler/mcr

    请注意

    对象的所有引用MATLAB运行时版本<版本>在这个例子中MATLAB运行时与您的MATLAB版本对应的版本号。和有关信息。MATLAB运行时版本号对应的MATLAB版本,见此列表

  3. 复制文件airlinesmall.csv进入Hadoop分布式文件系统(HDFS™)文件夹/ user / <用户名> /数据集.在这里<用户名>是您在HDFS中的用户名。

    ./hadoop fs -copyFromLocal airlinsmalll .csv hdfs://host:54310/user/<用户名>/数据集

过程

  1. 设置环境变量,HADOOP_PREFIX指向Hadoop安装文件夹。这些属性是向Hadoop集群提交作业所必需的。

    setenv (“HADOOP_PREFIX”“/ usr / lib / hadoop”

    HADOOP_PREFIX在使用MATLAB时必须设置环境变量数据存储函数指向HDFS上的数据。设置这个环境变量与Spark无关。看到Spark与Hadoop的关系为更多的信息。

    如果您计划使用本地机器上的数据集,而不是HDFS上的数据集,那么可以跳过此步骤。

    请注意

    这个示例使用/usr/lib/hadoop安装Hadoop的目录。您的Hadoop安装目录可能不同。

  2. 指定引发属性。

    使用一个容器。地图对象来指定Spark属性。

    sparkProperties =容器。地图(...“spark.executor.cores”...“spark.executor.memory”...“spark.yarn.executor.memoryOverhead”...“spark.dynamicAllocation.enabled”...“spark.shuffle.service.enabled”...“spark.eventLog.enabled”...“spark.eventLog.dir”},...' 1 '...2 g的...“1024”...“真正的”...“真正的”...“真正的”...hdfs: / /主持人:54310 / user / <用户名> /日志”});

    有关Spark属性的更多信息,请展开道具的价值“SparkProperties”中的名称-值对输入参数部分的SparkConf类。的SparkConf类是用于Spark的MATLAB API的一部分,它提供了一种将MATLAB应用程序部署到Spark的替代方法。有关更多信息,请参见使用Spark的MATLAB API部署应用程序

  3. 配置您的MATLAB应用程序,包含带有Spark参数的高数组。

    使用的类matlab.mapreduce.DeploySparkMapReducer配置您的MATLAB应用程序,该应用程序包含高数组,并将Spark参数作为键-值对。

    参看= matlab.mapreduce.DeploySparkMapReducer (...“浏览器名称”“myTallApp”...“大师”“yarn-client”...“SparkProperties”, sparkProperties);

    有关更多信息,请参见matlab.mapreduce.DeploySparkMapReducer

  4. 定义Spark执行环境。

    使用mapreduce函数定义Spark执行环境。

    mapreduce(配置)

    有关更多信息,请参见mapreduce

  5. 包含包含高数组的MATLAB应用程序代码。

    使用MATLAB函数数据存储创建一个数据存储对象指向文件airlinesmall.csv在HDFS。通过数据存储对象的输入参数函数。这将创建一个高数组。您可以对tall数组执行操作来计算平均到达延迟和最大到达延迟。

    为表示航空公司数据的表格文本文件集合创建一个|数据存储|。选择感兴趣的变量,为对象指定分类数据类型|和|的起源|变量。% ds = datastore(' airlinsmall .csv') %如果使用本地计算机上的数据集ds =数据存储(hdfs: / / / <用户名> /数据/ airlinesmall.csv ');ds。TreatAsMissing =“NA”;ds。SelectedVariableNames = {“年”“月”“ArrDelay”“DepDelay”“起源”“桌子”};ds.SelectedFormats (6) = {“% C”“% C”};%创建高数组高数组就像普通的MATLAB数组,除了它们可以有任何%的行数。当|高|数组由|数据存储|支持时,的底层类高数组基于数据存储的类型。tt =高(ds);删除缺少数据或NaN值的行idx =任何(ismissing (tt), 2);tt (idx:) = [];%计算平均延迟meanArrivalDelay =意味着(tt。DepDelay,“omitnan”);biggestDelays = topkrows (tt 10“ArrDelay”);%收集结果|集合|函数强制计算所有排队操作和%将结果输出返回到内存中。[meanArrivalDelay, biggestDelays] =收集(meanArrivalDelay biggestDelays)删除mapreducer对象删除(设计);
  6. 创建Spark应用。

    使用世纪挑战集团命令-vCW选项,使用Spark 3.x创建应用程序。

    > > mcc -vCW“火花:myTallApp 3”deployTallArrayToSpark.m

    创建以下文件。

    文件 描述
    run_myTallApp.sh 运行应用程序的Shell脚本。脚本调用spark-submit在集群上启动应用程序。
    myTallApp.jar 应用程序JAR。应用程序JAR包含打包的MATLAB代码和其他依赖项。
    固定 自述文件,包含如何运行应用程序的详细信息。
    requiredMCR2022世界杯八强谁会赢?Products.txt
    mccExcludedFiles.log

    有关更多信息,请参见世纪挑战集团

  7. 在Linux shell中使用以下命令运行应用程序:

    美元。/ run_myTallApp.sh /usr/local/MATLAB/MATLAB_Runtime / v# #

    /usr/local/MATLAB/MATLAB_Runtime /<版本>参数是否指示MATLAB运行时

  8. 您将看到以下输出:

    meanArrivalDelay = 7.1201 biggestdelay = 10x5表年月ArrDelay Origin Dest ____ _____ ________ ______ ____ 1995 11 1014 HNL LAX 2007 4 914 JFK DTW 2001 4 887 MCO DTW 2008 7 845 CMH ORD 1988 3 772 ORD LEX 2008 4 710 EWR RDU 1998 10 679 MCI DFW 2006 6 603 ABQ PHX 2008 6 586 PIT LGA 2007 4 568 RNO SLC

或者,如果您想要在MATLAB中分析或查看应用程序生成的结果,您需要使用用于高数组的函数。方法读取该文件数据存储函数。

要将结果写入HDFS上的文件,在MATLAB应用程序之前添加以下代码行删除(配置)语句,然后打包应用程序:

写(hdfs: / / / user / <用户名> /结果”高(biggestDelays));

取代<用户名>用您的用户名。

方法只能将一个变量保存到文件中用于高数组的函数。因此,如果要保存多个变量,就需要写入多个文件。

在针对Spark启用的集群执行应用程序后,要在MATLAB中查看结果,请使用数据存储函数如下:

>> ds =数据存储(hdfs: / / / user / <用户名> /结果”) > > readall (ds)

您可能需要设置环境变量HADOOP_PREFIX使用函数setenv方法无法查看结果数据存储函数。

请注意

如果正在部署的高数组应用程序是一个MATLAB函数,而不是MATLAB脚本,则使用以下执行语法:

$ ./run_.sh \  \ [Spark参数]\[应用程序参数]
例如:
$ ./run_myTallApp.sh \ /usr/local/ matlab_runtime /v92 \ yarn-client \ hdfs://host:54310/user// datassets / airlinsmalll .csv \ hdfs://host:54310/user//result .sh \ /usr/local/ matlab_runtime /v92 \ yarn-client \ hdfs://host:54310/user//result .csv \

代码:

deployTallArrayToSpark.m

Baidu
map