スタンドアロンの MATLAB MapReduce アプリケーションの実行
サポートされるプラットフォーム: Linux® のみ。
この例では、mcc
コマンドを使用してスタンドアロン MATLAB® MapReduce アプリケーションを作成し、Hadoop® クラスターで実行する方法を説明します。
目的: 航空路線の最大到着遅延時間を特定のデータセットから計算します。
データセット: | airlinesmall.csv |
説明: | 航空路線の 1987 年から 2008 年までの出発および到着情報。 |
場所: | /usr/local/MATLAB/R2023b/toolbox/matlab/demos |
前提条件
MATLAB 検索パスで認識される新しい作業フォルダーを作成して、この例を開始します。
MATLAB を起動する前に、ターミナルで、環境変数
HADOOP_PREFIX
が Hadoop インストール フォルダーをポイントするように設定します。以下に例を示します。シェル コマンド csh / tcsh % setenv HADOOP_PREFIX /usr/lib/hadoop
bash $ export HADOOP_PREFIX=/usr/lib/hadoop
メモ
この例は、
/usr/lib/hadoop
を Hadoop がインストールされたディレクトリとして使用しています。使用している Hadoop インストール ディレクトリが異なる場合があります。環境変数
HADOOP_PREFIX
を設定せずに MATLAB を起動した場合は、MATLAB の起動後すぐに、MATLAB コマンド プロンプトで MATLAB 関数setenv
を使用して、これを設定します。以下に例を示します。setenv('HADOOP_PREFIX','/usr/lib/hadoop')
Hadoop クラスターのすべてのワーカー ノードからアクセスできるフォルダーに、MATLAB Runtime をインストールします。この例では、MATLAB Runtime フォルダーの場所として
/usr/local/MATLAB/MATLAB_Runtime/R2023b
を使用しています。MATLAB Runtime を所有していない場合は、Web サイト
https://www.mathworks.com/products/compiler/mcr
からダウンロードできます。メモ
MATLAB リリースに対応する MATLAB Runtime のバージョン番号の詳細については、このリストを参照してください。
map 関数
maxArrivalDelayMapper.m
を/usr/local/MATLAB/R2023b/toolbox/matlab/demos
フォルダーから作業フォルダーにコピーします。詳細については、map 関数の作成を参照してください。
reduce 関数
maxArrivalDelayReducer.m
を
フォルダーから作業フォルダーにコピーします。matlabroot
/toolbox/matlab/demos詳細については、reduce 関数の作成を参照してください。
HDFS™ でディレクトリ
/user/
を作成し、ファイル<username>
/datasetsairlinesmall.csv
をそのディレクトリにコピーします。ここで、
は HDFS でのユーザー名を表します。<username>
$ ./hadoop fs -copyFromLocal airlinesmall.csv hdfs://host:54310/user/
<username>
/datasets
手順
MATLAB を起動し、環境変数
HADOOP_PREFIX
が設定されていることを確認します。コマンド プロンプトで、次を入力します。>> getenv('HADOOP_PREFIX')
ans
が空の場合は、前出の「前提条件」の節を見直し、環境変数HADOOP_PREFIX
の設定方法を確認してください。depMapRedStandAlone.m
という名前で新しい MATLAB スクリプトを作成します。以下に示す手順にリストされたコードを、このスクリプト ファイルに追加します。Hadoop 分散ファイル システム (HDFS) の航空会社データをポイントする
datastore
を作成します。ds = datastore('hdfs:///user/username/datasets/airlinesmall.csv',... 'TreatAsMissing','NA',... 'SelectedVariableNames',{'UniqueCarrier','ArrDelay'});
詳細については、リモート データの操作を参照してください。
既定の設定で、Hadoop に対してデプロイするようにアプリケーションを設定します。
config = matlab.mapreduce.DeployHadoopMapReducer;
matlab.mapreduce.DeployHadoopMapReducer
クラスは、そのデプロイ先となる Hadoop 環境に基づいてスタンドアロン アプリケーションを設定するために使用できます。たとえば、クラスター上の各ワーカー ノードにおいて MATLAB Runtime の場所を指定する場合は、次のようなコード行を含めます。
このシナリオでは、MATLAB Runtime がワーカー ノード上のconfig = matlab.mapreduce.DeployHadoopMapReducer('MCRRoot','/opt/MATLAB/MATLAB_Runtime/R2023b');
/opt/MATLAB/MATLAB_Runtime
など、既定以外の場所にインストールされていると想定しています。追加のクラスター固有のプロパティを指定する方法の詳細については、
matlab.mapreduce.DeployHadoopMapReducer
を参照してください。メモ
MATLAB Runtime の場所を
matlab.mapreduce.DeployHadoopMapReducer
クラスの一部として指定すると、スタンドアロン アプリケーションの実行中に指定されたすべての MATLAB Runtime の場所がオーバーライドされます。mapreducer
を使用して実行環境を定義します。mr = mapreducer(config);
関数
mapreduce
を適用します。result = mapreduce(... ds,... @maxArrivalDelayMapper,@maxArrivalDelayReducer,... mr,... 'OutputType','Binary', ... 'OutputFolder','hdfs:///user/<username>/results/myresults');
メモ
.../myresults
などの HDFS ディレクトリは 1 回だけ書き込みできます。Hadoop クラスターに対してスタンドアロン アプリケーションを複数回実行する予定の場合は、各実行の前に、必ず HDFS の.../myresults
ディレクトリを削除してください。別の方法として、MATLAB コードで.../myresults
ディレクトリの名前を変更し、アプリケーションを再コンパイルすることもできます。結果のデータ ストアから結果を読み取ります。
myAppResult = readall(result)
mcc
コマンドに-m
フラグを指定して、スタンドアロン アプリケーションを作成します。mcc -m depMapRedStandAlone.m
-m
フラグは、コマンド ラインから実行できるスタンドアロン実行可能ファイルを作成します。ただし、mcc
コマンドはその結果をインストーラー内にパッケージ化できません。次のコマンドを使用して、Linux シェルからスタンドアロン アプリケーションを実行します。
$ ./run_depMapRedStandAlone.sh /usr/local/MATLAB/MATLAB_Runtime/R2023b
/usr/local/MATLAB/MATLAB_Runtime/R2023b
は MATLAB Runtime の場所を示す引数です。前出のコマンドを実行する前に、次を入力して、ターミナルに環境変数
HADOOP_PREFIX
が設定されていることを確認します。$ echo $HADOOP_PREFIX
echo
が空である場合は、前出の「前提条件」の節を参照し、環境変数HADOOP_PREFIX
の設定方法を確認してください。環境変数
HADOOP_PREFIX
が設定されていない場合、アプリケーションの実行は失敗します。次の出力が表示されます。
myAppResult = Key Value _________________ ______ 'MaxArrivalDelay' [1014]
map
関数と reduce
関数の使用の詳細については、MapReduce 入門を参照してください。
スタンドアロン アプリケーション depMapRedStandAlone
の完成したコードは、以下のとおりです。
参考
datastore
| TabularTextDatastore
| KeyValueDatastore
| matlab.mapreduce.DeployHadoopMapReducer
| mcc