このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
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で実行するときと比べると,出力におけるキーと値のペアの順序が異なります。アプリケーションが出力のデータ配置に依存する場合には,必要に応じてデータを並べ替えなければなりません。