-1

私は修士論文 Hadoop 1.1.2 のために Hadoop に取り組んでいます。

私は投機的なタスクのための新しいアルゴリズムを研究しているので、この最初のステップでは、コードにいくつかの変更を適用しようとしています。

悲しいことに、これも 2 ノードを使用して、投機的実行を引き起こすことはできません。クラス DefaultTaskSelector (これは投機的タスクのクラスです) に Log としていくつかのコード行を書きましたが、このクラスは初期化後、FairScheduler クラスによって呼び出されることはありません。

設定ファイル (mapred-site...xml) でも「投機的」オプションを有効にしましたが、何もしませんでした。

質問は次のとおりです。どうすれば投機的実行を引き起こす/強制することができますか?

よろしく

4

2 に答える 2

0

投機的実行は通常、複数のマッパーが実行されていて、そのうちの 1 つ以上が他のマッパーよりも遅れている場合に発生します。それを実現するための良い方法:

  • ハイブを設置する
  • 分割テーブルを設定する
  • 多くのマッパーを実行するのに十分な大きさのデータであることを確認してください。つまり、少なくとも数十個の HDFS ブロックに相当するデータ
  • パーティションにデータを入力します。パーティションの 1 つに、他のパーティションよりもはるかに多くの非常に偏ったデータを含めます。
  • テーブルからselect *を実行します

これで、投機的実行が実行されることがあります。

そうでない場合は、遠慮なくここに戻ってください。さらに提案を提供できます (たとえば、SE を誘発する可能性のある適度に複雑なクエリを作成するなど)

編集

ハイブはあなたにとって少し難しいかもしれません。ただし、戦略の「精神」を通常の HDFS ファイルにも適用できます。意図的にゆがめられたカスタム パーティショナーを使用して map/reduce プログラムを作成します。つまり、1 つのマッパーが膨大な量の作業を行うようになります。

タスクトラッカーにかなりの作業量を与えるために、(少なくとも) 数十個の hdfs ブロックを用意することを忘れないでください。

于 2014-05-30T03:29:59.873 に答える
0

MapReduceジョブ構成であるJobを使用して指定できるsetMapSpeculativeExecution (boolean)およびsetReduceSpeculativeExecution(boolean)という 2 つのメソッドを使用して、投機的実行を引き起こすことができるはずです。

于 2015-08-04T13:27:36.607 に答える