Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Hadoop クラスター上での mapreduce の実行

クラスターの準備

mapreduce を Hadoop® クラスター上で実行する前に、クラスターおよびクライアント マシンが適切に設定されていることを確認します。システム管理者に相談するか、Hadoop クラスターの構成 (MATLAB Parallel Server)を参照してください。

出力形式と順序

mapreduce を Hadoop クラスター上で実行してバイナリ出力 (既定) を生成する場合、他の環境の mapreduce でバイナリ MAT ファイルが生成されるのとは異なり、結果の KeyValueDatastore は Hadoop シーケンス ファイルを指します。詳細については、mapreduce リファレンス ページにある「'OutputType'」の引数の説明を参照してください。

mapreduce を Hadoop クラスター上で実行する場合、mapreduce をほかの環境で実行するときと比べると、出力におけるキーと値のペアの順序は異なります。アプリケーションが出力のデータ配置に依存する場合には、必要に応じてデータを並べ替えなければなりません。

平均遅延時間の計算

この例では、航空便の平均遅延時間を計算する MATLAB® の例を変更して Hadoop クラスターで実行する方法を説明します。

まず、環境変数とクラスター プロパティを特定の Hadoop 構成に応じて適切に設定しなければなりません。これらの値とクラスターにジョブを投入するために必要なその他のプロパティについては、システム管理者に問い合わせてください。

setenv('HADOOP_HOME', '/path/to/hadoop/install')
cluster = parallel.cluster.Hadoop;

メモ

既に存在する outputFolder を指定しないようにしてください。mapreduce による出力が Hadoop クラスターからの場合、既存のフォルダーを上書きすることはできません。

mapreducer が変更または削除された場合、データは失われます。

MapReducer オブジェクトを作成し、mapreduce がお使いの Hadoop クラスターを使用するように指定します。

mr = mapreducer(cluster);

データ ストアを作成し、プレビューします。データセットは matlabroot/toolbox/matlab/demos にあります。

ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
     'SelectedVariableNames','ArrDelay','ReadSize',1000);
preview(ds)
    ArrDelay
    ________

     8
     8
    21
    13
     4
    59
     3
    11

次に、出力フォルダーと出力 outds を指定し、mapreduce を呼び出して、mr で指定された Hadoop クラスター上で実行します。map 関数および reduce 関数は matlabroot/toolbox/matlab/demos にあります。

outputFolder = 'hdfs:///home/myuser/out1';
outds = mapreduce(ds,@myMapperFcn,@myReducerFcn,'OutputFolder',outputFolder);
meanDelay = mapreduce(ds,@meanArrivalDelayMapper,@meanArrivalDelayReducer,mr,...
            'OutputFolder',outputFolder)
Parallel mapreduce execution on the Hadoop cluster:
********************************
*      MAPREDUCE PROGRESS      *
********************************
Map   0% Reduce   0%
Map  66% Reduce   0%
Map 100% Reduce  66%
Map 100% Reduce 100%

meanDelay =

  KeyValueDatastore with properties:

       Files: {
              ' .../tmp/myuser/tpc00621b1_4eef_4abc_8078_646aa916e7d9/part0.seq'
              }
    ReadSize: 1 key-value pairs
    FileType: 'seq'

結果を読み取ります。

readall(meanDelay)
           Key             Value
    __________________    ________

    'MeanArrivalDelay'    [7.1201]

この例はデモンストレーション用ですが、ローカル データセットを使用します。Hadoop を使用している場合、データセットが HDFS™ ファイル システムに格納される可能性があります。同様に、mapreduce の出力を HDFS に格納しなければならない場合があります。MATLAB での HDFS へのアクセスに関する詳細については、リモート データの操作を参照してください。

参考

関数

関連する例

詳細