Main Content

スタンドアロンの MATLAB MapReduce アプリケーションの実行

サポートされるプラットフォーム: Linux® のみ。

この例では、mcc コマンドを使用してスタンドアロン MATLAB® MapReduce アプリケーションを作成し、Hadoop® クラスターで実行する方法を説明します。

目的: 航空路線の最大到着遅延時間を特定のデータセットから計算します。

データセット:airlinesmall.csv
説明:

航空路線の 1987 年から 2008 年までの出発および到着情報。

場所:/usr/local/MATLAB/R2023b/toolbox/matlab/demos

前提条件

  1. MATLAB 検索パスで認識される新しい作業フォルダーを作成して、この例を開始します。

  2. 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')

  3. Hadoop クラスターのすべてのワーカー ノードからアクセスできるフォルダーに、MATLAB Runtime をインストールします。この例では、MATLAB Runtime フォルダーの場所として /usr/local/MATLAB/MATLAB_Runtime/R2023b を使用しています。

    MATLAB Runtime を所有していない場合は、Web サイト https://www.mathworks.com/products/compiler/mcr からダウンロードできます。

    メモ

    MATLAB リリースに対応する MATLAB Runtime のバージョン番号の詳細については、このリストを参照してください。

  4. map 関数 maxArrivalDelayMapper.m/usr/local/MATLAB/R2023b/toolbox/matlab/demos フォルダーから作業フォルダーにコピーします。

     maxArrivalDelayMapper.m

    詳細については、map 関数の作成を参照してください。

  5. reduce 関数 maxArrivalDelayReducer.mmatlabroot/toolbox/matlab/demos フォルダーから作業フォルダーにコピーします。

     maxArrivalDelayReducer.m

    詳細については、reduce 関数の作成を参照してください。

  6. HDFS™ でディレクトリ /user/<username>/datasets を作成し、ファイル airlinesmall.csv をそのディレクトリにコピーします。ここで、<username> は HDFS でのユーザー名を表します。

    $ ./hadoop fs -copyFromLocal airlinesmall.csv hdfs://host:54310/user/<username>/datasets

手順

  1. MATLAB を起動し、環境変数 HADOOP_PREFIX が設定されていることを確認します。コマンド プロンプトで、次を入力します。

    >> getenv('HADOOP_PREFIX')

    ans が空の場合は、前出の「前提条件」の節を見直し、環境変数 HADOOP_PREFIX の設定方法を確認してください。

  2. depMapRedStandAlone.m という名前で新しい MATLAB スクリプトを作成します。以下に示す手順にリストされたコードを、このスクリプト ファイルに追加します。

  3. Hadoop 分散ファイル システム (HDFS) の航空会社データをポイントする datastore を作成します。

    ds = datastore('hdfs:///user/username/datasets/airlinesmall.csv',...
    'TreatAsMissing','NA',...
    'SelectedVariableNames',{'UniqueCarrier','ArrDelay'});

    詳細については、リモート データの操作を参照してください。

  4. 既定の設定で、Hadoop に対してデプロイするようにアプリケーションを設定します。

    config = matlab.mapreduce.DeployHadoopMapReducer;

    matlab.mapreduce.DeployHadoopMapReducer クラスは、そのデプロイ先となる Hadoop 環境に基づいてスタンドアロン アプリケーションを設定するために使用できます。

    たとえば、クラスター上の各ワーカー ノードにおいて MATLAB Runtime の場所を指定する場合は、次のようなコード行を含めます。

    config = matlab.mapreduce.DeployHadoopMapReducer('MCRRoot','/opt/MATLAB/MATLAB_Runtime/R2023b');
    このシナリオでは、MATLAB Runtime がワーカー ノード上の /opt/MATLAB/MATLAB_Runtime など、既定以外の場所にインストールされていると想定しています。

    追加のクラスター固有のプロパティを指定する方法の詳細については、matlab.mapreduce.DeployHadoopMapReducerを参照してください。

    メモ

    MATLAB Runtime の場所を matlab.mapreduce.DeployHadoopMapReducer クラスの一部として指定すると、スタンドアロン アプリケーションの実行中に指定されたすべての MATLAB Runtime の場所がオーバーライドされます。

  5. mapreducer を使用して実行環境を定義します。

    mr = mapreducer(config);
  6. 関数 mapreduce を適用します。

    result = mapreduce(...
        ds,...
        @maxArrivalDelayMapper,@maxArrivalDelayReducer,...
        mr,...
        'OutputType','Binary', ...
        'OutputFolder','hdfs:///user/<username>/results/myresults');

    メモ

    .../myresults などの HDFS ディレクトリは 1 回だけ書き込みできます。Hadoop クラスターに対してスタンドアロン アプリケーションを複数回実行する予定の場合は、各実行の前に、必ず HDFS の .../myresults ディレクトリを削除してください。別の方法として、MATLAB コードで .../myresults ディレクトリの名前を変更し、アプリケーションを再コンパイルすることもできます。

  7. 結果のデータ ストアから結果を読み取ります。

    myAppResult = readall(result)
  8. mcc コマンドに -m フラグを指定して、スタンドアロン アプリケーションを作成します。

    mcc -m depMapRedStandAlone.m

    -m フラグは、コマンド ラインから実行できるスタンドアロン実行可能ファイルを作成します。ただし、mcc コマンドはその結果をインストーラー内にパッケージ化できません。

  9. 次のコマンドを使用して、Linux シェルからスタンドアロン アプリケーションを実行します。

    $ ./run_depMapRedStandAlone.sh /usr/local/MATLAB/MATLAB_Runtime/R2023b

    /usr/local/MATLAB/MATLAB_Runtime/R2023bMATLAB Runtime の場所を示す引数です。

    前出のコマンドを実行する前に、次を入力して、ターミナルに環境変数 HADOOP_PREFIX が設定されていることを確認します。

    $ echo $HADOOP_PREFIX
    echo が空である場合は、前出の「前提条件」の節を参照し、環境変数 HADOOP_PREFIX の設定方法を確認してください。

    環境変数 HADOOP_PREFIX が設定されていない場合、アプリケーションの実行は失敗します。

  10. 次の出力が表示されます。

    myAppResult = 
    
               Key           Value 
        _________________    ______
    
        'MaxArrivalDelay'    [1014]

map 関数と reduce 関数の使用の詳細については、MapReduce 入門を参照してください。

スタンドアロン アプリケーション depMapRedStandAlone の完成したコードは、以下のとおりです。

 depMapRedStandAlone.m

参考

| | | |

関連するトピック