主要内容

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

並列プール上でのmapreduceの実行

並列プールの起動

并行计算工具箱™をインストール済みの場合,mapreduceを実行すると,既定のプロファイルで指定したクラスター上の並列プールを開き,実行環境として使用することができます。

並列基本設定を設定し,プールが自動的に開かないようにすることができます。この場合,mapreduceがプールを使用して作業を並列化するようにするには,明示的にプールを起動しなければなりません。並列基本設定の指定を参照してください。

たとえば,次の概念コードはプールを起動した後しばらくしてから開いているそのプールをmapreduce構成のために使用します。

p = parpool (“本地”n);= mapreduce先生(p);outds = mapreduce (tds、@MeanDistMapFun @MeanDistReduceFun,先生)

メモ:

mapreduceは並列プールをサポートする任意のクラスター上で実行できます。このトピックの例ではローカルクラスターを使用していますが,これはすべての并行计算工具箱のインストールで機能します。

並列mapreduceの比較

次の例では,航空路線のデータのデータストアから平均の到着遅延時間を計算しています。まず,mapreduceをMATLABクライアントセッションで実行し,続いてローカルクラスターで並列に実行します。関数mapreduceが明示的に実行環境をコントロールします。

ローカルクラスターで並列プールを起動することから始めます。

p = parpool (“本地”4);
使用“本地”配置文件启动并行池(parpool)…与4名工人相连。

mapreduceに対して異なる実行環境を指定するために,2つのmapreduceオブジェクトを作成します。

inMatlab = mapreduce (0);inPool = mapreduce (p);

データストアを作成し,プレビューします。この例で使用しているデータセットはmatlabroot/工具箱/ matlab /演示にあります。

ds =数据存储(“airlinesmall.csv”“TreatAsMissing”“NA”...“SelectedVariableNames”“ArrDelay”“ReadSize”, 1000);预览(ds)
ArrDelay ________ 8 8 21 13 4 59 3 11

次に,MATLAB®クライアントセッションでmapreduce計算を実行します。地图関数および减少関数はmatlabroot/工具箱/ matlab /演示にあります。

meanDelay = mapreduce (ds, @meanArrivalDelayMapper、@meanArrivalDelayReducer inMatlab);
******************************** * MAPREDUCE的进展  * ******************************** 地图地图10%减少0% 20% 0%减少0%减少0%地图30%减少0% 40%减少0%地图50%减少0% 60%减少0%地图地图80%减少0% 90% 70%减少0%减少0%地图100%减少100%
readall (meanDelay)
键值  __________________ ________ ' MeanArrivalDelay ' [7.1201]

続いて,現在の並列プールで計算を実行します。出力テキストは並列mapreduceを示していることに注意してください。

meanDelay = mapreduce (ds, @meanArrivalDelayMapper、@meanArrivalDelayReducer inPool);
并行执行mapreduce的平行池 : ******************************** * MAPREDUCE的进展  * ******************************** 地图地图100%减少50% 100% 0%减少0%减少100%
readall (meanDelay)
键值  __________________ ________ ' MeanArrivalDelay ' [7.1201]

この比較的小さなデータセットでは,並列プールによるパフォーマンス向上の可能性はあまりありません。この例は,並列プール上でmapreduceを実行するメカニズムを説明するためのものです。データセットの規模が拡大する,または地图関数および减少関数自体の計算量が増えるに伴って,関数mapreduceをMATLABクライアントセッションで実行する場合に比べて,並列プールによるパフォーマンス向上の可能性が期待できます。

メモ:

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

参考

関数

関連する例

詳細