在HADOOP平台上运行MATLAB程序(Centos7系统)

时间:2024-05-18 22:12:51

用mapreduce框架运行matlab示例程序,官网https://ww2.mathworks.cn/help/compiler/hadoop/example-on-running-a-standalone-matlab-mapreduce-application.html

按照官网的步骤,基本上可以成功,但是运行的时候还是碰到了一些问题。

  • 首先要设置一个HADOOP_PREFIX的环境变量值,直接在/etc/profile添加,export HADOOP_PREFIX=/opt/hadoop-2.8.0,红色部分是hadoop的安装路径,按照自己的路径修改。
  • 安装Matlab runtime,https://www.mathworks.com/products/compiler/matlab-runtime.html在官网下载对应的版本,下载到/usr/local/MATLAB/MATLAB_Runtime即可,路径可以照自己的路径
  • unzip安装包,然后./install -mode silent -agreeToLicense yes(忘记截图了,教程http://blog.sina.com.cn/s/blog_619c66670102wiim.html
  • 配置mcr的环境变量
  • 这一步很重要,如果mcr没有安装或者环境变量没有配置好,就会报错

在HADOOP平台上运行MATLAB程序(Centos7系统)

在HADOOP平台上运行MATLAB程序(Centos7系统)

  • 需要注意的是,HADOOP集群中的所有服务器都需要安装mcr并配置环境变量
  • 然后,把需要处理的数据文件上传到HADOOP的文件系统HDFS上,数据文件在matlab安装路径/toolbox/matlab/demos下的airlinesmall.csv,并且把文件夹下的maxArrivalDelayMapper.m和maxArrivalDelayReducer.m文件都拷到matlab的工作台下。
  • 文件上传hdfs的具体教程:https://www.cnblogs.com/qingyunzong/p/8496127.html#_label4
  • 我在HDFS上新建了/testMR/input文件夹./hadoop fs -mkdir /testMR/input,然后把文件put上去./hadoop fs -put /documents/Matlab/toolbox/matlab/demos/airlinesmall.csv /testMR/input,红色部分为matlab安装文件夹,根据自己的安装路径修改,并且新建/testMR/output文件夹,./hadoop fs -mkdir /testMR/output,用于放输出,看一下HDFS上的文档结构./hadoop fs -ls /testMR,大概是这样的

在HADOOP平台上运行MATLAB程序(Centos7系统)

  • 在matlab工作台下新建一个脚本,输入如下代码

在HADOOP平台上运行MATLAB程序(Centos7系统)

  • 在matlab控制台输入mcc -m depMapRedStandAlone.m,生成run_depMapRedStandAlone.sh文件
  • 然后从控制台进入matlab的工作目录,运行生成的文件

./run_depMapRedStandAlone.sh /usr/local/MATLAB/MATLAB_Runtime/v90,红色部分为mcr的安装目录,根据自己的路径修改就可以了。

  • 成功后会输出结果

在HADOOP平台上运行MATLAB程序(Centos7系统)

  • 还有一点需要注意,输出结果需要是新建的,假如第一次运行失败,但是输出文件myresults已经生成了,这时候调试好后,由于HDFS上已经有myresults文件,就会报错,所以每次运行前,要把该文件先删除
  • ./hadoop fs -rm -r /testMR/output
  • ./hadoop fs -mkdir /testMR/output