2016-05-17 10 views

答えて

1

btraceを正確に測定する必要がある場合は、mapreduce.{map,reduce}.java.optsでタスクにjavaagentとして追加してから、好きなように測定するスクリプトを作成してください。 btraceスクリプトのサンプルはhereです。

また、HTraceもあります。これも参考になるかもしれません。

+0

私はHTraceを手に入れました。あなたはそれを使いましたか?どのように私が必要とする情報を区切るのだろうか。 – AlexandruC

1

大まかに、カスタムカウンタを作成している可能性があります。マッパーとレデューサーの両方で、マッパー(またはレデューサー)が処理を開始し、終了するときにタイムスタンプを収集することができます。開始時刻と終了時刻のタイムスタンプから計算してカスタムカウンターに追加します。つまり、マッパーはMAPPER_RUNNING_TIMEに追加され、レデューサーはREDUCER_RUNNING_TIME(または名前を付けたい名前)に追加されます。実行が終了したら、カウンターの集計値をそれぞれMILLIS_MAPSMILLIS_REDUCESから引きます。しかし、ステージ時間がMILLIS_MAPSMILLIS_REDUCESに含まれているかどうかを確認するために、Hadoopのソースコードを調べる必要があります。この見積もりでは、タスクが同時に実行されていることを考慮する必要があるため、時間はむしろ合計(またはすべてのマッパーとレデューサーに対して集計)されます。

私はこれを個人的に行っていませんが、あなたがより良いものを見つけない限り、この解決法が機能すると思います。

+0

あなたの提案された解決策は良いと思います。 MILLIS_MAPS =すべてのマップが費やした合計時間(ミリ秒)を発見しました。これにはキュー待ち時間も含まれているのだろうかと思います。このステージングは​​何を意味しますか? @AlexandruC。 – AlexandruC

+0

残念ながら、私はあなたがソースコードを辿って計算方法を調べる必要があるため、もっと説明することができません。時間がかかることがあります。 – Serhiy

+0

これを行う必要はありません。私はそれをやる。 – AlexandruC

関連する問題