主要内容

将Tall数组部署到火花启用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属性。

    使用一个容器。地图对象指定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. 配置包含具有Spark参数的tall数组的MATLAB应用程序。

    使用课程matlab.mapreduce.DeploySparkMapReducer以配置包含高数组的MATLAB应用程序,其中Spark参数为键值对。

    conf = 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') %数据存储(hdfs: / / / <用户名> /数据/ airlinesmall.csv ');ds。TreatAsMissing =“NA”;ds。SelectedVariableNames = {“年”“月”“ArrDelay”“DepDelay”“起源”“桌子”};ds.SelectedFormats(5:6) = {“% C”“% C”};%创建高阵列% Tall数组与普通的MATLAB数组类似,只是它们可以有任何%行数。的底层类|高|数组由|数据存储|支持时高数组基于数据存储的类型。Tt =高(ds);删除缺少数据或NaN值的行Idx = any(ismissing(tt),2);Tt (idx,:) = [];计算平均延迟meanArrivalDelay = mean(tt。DepDelay,“omitnan”);biggestdelay = topkrows(tt,10,“ArrDelay”);收集结果|gather|函数强制计算所有排队操作和%将结果输出带回内存。[meanArrivalDelay, biggestdelayed] = gather(meanArrivalDelay, biggestdelayed)删除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 . txt# #

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

  8. 界面显示如下:

    平均到达延迟= 7.1201最大延迟= 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 / <用户名> /结果”) >>读取(ds)

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

请注意

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

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

代码:

deployTallArrayToSpark.m

Baidu
map