このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 へのアクセスに関する詳細については、リモート データの操作を参照してください。