Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

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

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

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

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

場所:/usr/local/MATLAB/R2021a/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/v910 を使用しています。

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

    メモ

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

  4. map 関数 maxArrivalDelayMapper.m/usr/local/MATLAB/R2021a/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/v910');
    このシナリオでは、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/v910

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

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

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

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

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

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

その他の map 関数および reduce 関数の例は toolbox/matlab/demos フォルダーで使用可能です。他の例を使用して、Hadoop 上で実行する同様のスタンドアロン アプリケーションのプロトタイプを作成することができます。詳細は、MapReduce での効果的なアルゴリズムの構築を参照してください。

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

 depMapRedStandAlone.m

参考

| | | |

関連するトピック