主要内容

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

金宝app支持平台:Linux®只有。

这个例子显示了如何部署一个MATLAB®应用程序包含高阵列火花™Hadoop启用®集群。

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

数据集: airlinesmall.csv
描述:

从1987 - 2008年航空出发和到达信息。

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

请注意

你可以遵循相同的指令向CLOUDERA部署高数组火花应用程序®鼎晖。看一个例子MATLAB的答案™,点击在这里

使用CLOUDERA鼎晖加密区,添加JAR文件commons-codec-1.9.jar静态类路径MATLAB运行时。文件位置:HADOOP_PREFIX / lib / commons-codec-1.9.jar美元,美元HADOOP_PREFIX Hadoop的位置安装。

请注意

如果您使用的是火花版本1.6或更高版本,您将需要增加Java®在MATLAB堆大小至少512 mb的磁盘空间。信息如何在MATLAB中增加Java堆大小,明白了Java堆内存的偏好

先决条件

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

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

    如果你没有MATLAB运行时,你可以从网站下载://www.tatmou.com/下载188bet金宝搏products/compiler/mcr

    请注意

    替换所有引用MATLAB运行时版本<版本>在这个例子中MATLAB运行时版本号对应MATLAB版本。和有关信息。MATLAB运行时版本号对应MATLAB版本中,看到这个列表

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

    美元hadoop。/ fs -copyFromLocal airlinesmall。csv hdfs: / /主持人:54310 / user /<用户名>/数据集

过程

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

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

    HADOOP_PREFIX当使用MATLAB环境变量必须设置数据存储功能指HDFS数据。设置环境变量与火花无关。看到火花和Hadoop之间的关系为更多的信息。

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

    请注意

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

  2. 指定引发属性。

    使用一个containers.Map对象指定火花属性。

    sparkProperties = containers.Map ({“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 / <用户名> /日志”});

    在火花属性的更多信息,扩大道具的价值“SparkProperties”名称-值对的输入参数部分的SparkConf类。的SparkConf类是火花MATLAB API的一部分,它提供了另一种方式将MATLAB应用程序部署到火花。有关更多信息,请参见部署应用程序使用MATLAB API的火花

  3. MATLAB应用程序配置包含高与火花参数数组。

    使用的类matlab.mapreduce.DeploySparkMapReducerMATLAB应用程序配置包含高与火花参数键值对数组。

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

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

  4. 定义引发执行环境。

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

    mapreduce(配置)

    有关更多信息,请参见mapreduce

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

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

    %为一组表格创建一个|数据存储|代表航空公司数据文本文件。%选择感兴趣的变量,指定一个分类的数据类型% |起源|和| |变量不在座位上。% ds =数据存储(airlinesmall.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)%删除mapreduce对象删除(设计);
  6. 创建一个火花应用程序。

    使用世纪挑战集团命令-vCW选项来创建一个应用程序使用火花3. x。

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

    创建以下文件。

    文件 描述
    run_myTallApp.sh Shell脚本运行应用程序。脚本调用spark-submit启动集群上的应用程序。
    myTallApp.jar 应用程序JAR。应用程序JAR包含封装MATLAB代码和其他依赖项。
    固定 自述文件包含细节如何运行该应用程序。
    requiredMCR下载188bet金宝搏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 biggestDelays ArrDelay起源Dest = 10 x5表年月_____ ________ ________上1995 11 1014 HNL宽松2007 4 914年肯尼迪DTW 2001 4 887 MCO DTW 2008 7 845而言不啻奥德1988 3 772奥德LEX 2008 4 710英文文宣写作研习营RDU 1998 10 679 MCI DFW 2006 6 603 ABQ PHX 2008 6 586年坑LGA 2007 4 568优化SLC

可选地,如果你想分析或查看您的应用程序所产生的结果在MATLAB中,你需要写在HDFS文件使用的结果数组函数高。然后您可以读取文件使用数据存储函数。

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

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

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

你只能将一个变量保存到一个文件中使用数组函数高。因此,您需要写多个文件,如果你想保存多个变量。

在MATLAB查看结果执行应用程序对火花使集群后,使用数据存储函数如下:

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

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

请注意

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

美元。/ run_ < applicationName >。sh \ < MATLAB_Runtime_Location > \[火花参数]\[应用程序参数)
例如:
美元。/ run_myTallApp。sh \ /usr/local/MATLAB/MATLAB_Runtime / v92 \ yarn-client \ hdfs: / /主机:54310 / user / <用户名> /数据/ airlinesmall。csv \ hdfs: / /主机:54310 / user / <用户名> /结果

代码:

deployTallArrayToSpark.m