問題タブ [reducers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hadoop でのジョブとタスクのスケジューリング
このスライドで遅延公平スケジューリングについて読んだとき、Hadoop の「ジョブ スケジューリング」と「タスク スケジューリング」という用語について少し混乱しました。
次の仮定が間違っている場合は、修正してください。
デフォルト スケジューラ、キャパシティ スケジューラ、公正スケジューラは、複数のジョブがユーザーによってスケジュールされている場合、ジョブ レベルでのみ有効です。システムに単一のジョブしかない場合、それらは何の役割も果たしません。これらのスケジューリング アルゴリズムは、「ジョブ スケジューリング」の基礎を形成します。
各ジョブには複数の map および reduce タスクを含めることができますが、それらは各マシンにどのように割り当てられますか? 単一のジョブのタスクはどのようにスケジュールされますか? 「タスクスケジューリング」の根拠は?
networking - MapReduce ネットワーク帯域幅
マッパー Mapper_i からレデューサー Reducer_j に転送される各 (key_a,value_a) ペアが消費する時間を測定しようとしています。
つまり、 (key_a,value_a) が Mapper_i を離れてから Reducer_j に到達するまでの時間を知りたいですか?
マッパーからレデューサーへのこの転送時間を取得する方法はありますか?
hadoop - Hadoop の全順序パーティショナー
私は totalorderpartitioner の概念にまったく慣れていません。この概念を適用しましたが、グローバルな並べ替えを作成することに成功していません。これは私の入力レコードです
これは私のマッパーです
これは私の減速機です
これは私の仕事関連のコードです
しかし、レコードはソートされていません.これは私の出力です
どこが間違っているのかわかりません.誰かが問題を解決するのを手伝ってくれますか?そして、入力サンプリングが正確にここでどのように機能するか教えてください.事前に感謝します
hadoop - Hadoop - レデューサー番号を 0 に設定しますが、同じファイルに書き込みますか?
私の仕事は計算量が多いので、実際には Hadoop の分散機能のみを使用しています。すべての出力を 1 つのファイルにまとめたいので、レデューサーの数を 1 に設定しました。私のレデューサーは実際には何もしていません...
レデューサーの数を明示的に 0 に設定することで、すべての出力が同じ 1 つの出力ファイルに強制的に書き込まれるようにマッパーで制御する方法を教えてください。ありがとう。
hadoop - パーティショナーまたは MultipleOutputs
Partitioner と MultipleOutputs についてご意見をお聞かせください。
次のようなキーを含むファイルがあるとします
2 つのファイルが必要です。1 つは で始まるキーを含むファイル0:
で、もう1 つは で始まるキーを含むファイルです1:
。どのアプローチを使用する必要がありますか:
1) キーを解析し、getPartition() に対して 0 または 1 を返すカスタム パーティショナーを使用します。
2)キーを解析し、MultipleOutputs.write のパラメーター に対してorを指定することにより、reduce フェーズでMultipleOutputs.writeを使用します。zero
one
namedOutput
どちらの方がよいですか?私にとっては、レデューサーは単一のファイルを処理するため、1) の方が優れています。
hadoop - Hadoop Reducer: Reducer が多数のノードで均等に実行されるようにする方法
リデュース プロセッサが発生する場所がわからないシナリオがあります。
i) 入力テキスト ファイルがあり、1 ~ 4 のバランスの取れた範囲にある 1000 の整数が含まれています。
ii) 各ノードに 12 個のスロットを持つ 4 ノード クラスターがあり、そのうち 4 個がレデューサーとして割り当てられているとします。合計で 16 個のリデュース スロットが得られます。
iii) ドライバーにレデューサーの数を設定しました。
iii)そして最後に、次のパーティショナーメソッドがあるとします
1) 私。各ノードIEで複数のリデューサーを実行するのではなく、各ノードで1つのリデューサーを使用して(他の3つのローカルリデューサーをアイドル状態のままにして)reduceを処理するように強制するにはどうすればよいですかノード 2、3、4 のアイドル状態で 12 スロットがあります。
ii. Hadoop MR はリソースを管理して、「ノード X が最もアイドル状態です。そこでレデューサーを生成します...」
2) キーにスキューがあり、それをグループ化する場合、そのキーに対して複数のレデューサーを生成できますか。たとえば、ランダムな整数を値「4」のシード値に追加し、パーティショナーを使用して 3 つのレデューサーを追加して処理できますか?レデューサー 4、5、6、および 7 の値「4」?
と
それはスキューに効きますか?
hadoop - Hadoop ジョブがマップ 0% で停止し、0% を削減
「map 0% reduce 0%」でスタックする Hadoop ジョブを実行しています。より具体的には、マッパーはすべて「STARTING」状態にあり、実際に実行を開始しているようには見えません。
ログを調べてみましたが、いくつかの非推奨メッセージ以外には何も表示されませんでした。何を探すべきか正確にはわかりませんが、誰かが推奨事項を持っているかどうか疑問に思っていましたか?
編集1:
stderr ログ:
hadoop - レデューサーとマッパーは同じデータ ノードに配置できますか?
私はビッグ データと Hadoop について読み始めたので、この質問は非常にばかげているように聞こえるかもしれません。
これは私が知っていることです。
各マッパーは少量のデータを処理し、中間出力を生成します。この後、シャッフルとソートのステップがあります。
ここで、Shuffle = 中間出力を、それぞれが特定のキーを扱うそれぞれの Reducer に移動します。
では、1 つのデータ ノードで Mapper と Reducer コードを実行できますか、それともそれぞれに異なる DN を使用できますか?
java - Hadoop MapReduce: 以前の値を Reduce クラスのメモリに格納すると奇妙な結果が生じる (Java)
イテレーターの現在の値を保存して、Reduce メソッドのイテレーターの次の値と比較したい場合、Hadoop では、一時変数への参照を単純に割り当てるのではなく、複製する必要があります。
コードをレデューサーに投稿しようとしています。
次の 2 つの部分が表示されます。
- Eclipse でテストするための主な方法
- Hadoop で実行するための reduce メソッド
次の点を除いて、両方のコード行が同一であることがわかります。
- main メソッドはハード コードした ArrayList から Iterator を取得しますが、reduce メソッドはマッパー メソッドから Iterator を取得します。
- もちろん、main メソッドは context.write を実行しません。
両方がほとんど共有するコードは次のとおりです。
各ループの最後で、使用したばかりの MMI (「currentMMI」) の参照をオブジェクト変数「previousMMI」に設定していることに気付くでしょう。次に、次のループで、next() の参照を currentMMI に設定します。Eclipse でメイン メソッドを実行すると、予想どおり、次のクエリは false と評価されます。
ただし、Hadoop で実行すると、次の 2 つのクエリで currentMMI と previousMMI が常に true と評価されます。
previousMMI = currentMMI
行を変更した場合にのみ、previousMMI = new MMI(currentMMI)
false と評価されます。(受信パラメータを本質的に浅く複製する MMI クラスのコンストラクタを作成しました)。
レデューサーを Hadoop で使用し、メイン メソッドでは使用しない場合、参照を設定する代わりにクローンを作成する必要があるのはなぜですか?
レデューサー クラスをコピーして貼り付けます。これには、Eclipse テスト用のメイン メソッドと、Hadoop で実際に使用するための reduce メソッドの 2 つの部分があります。
これは、静的な値を使用して eclipse でメイン メソッドを実行したときの stdout からの切り捨てられた結果です。
Hadoop jar を実行したときの切り捨てられた結果を次に示します。
Eclipse ではなく Hadoop 用に複製する必要があるのはなぜですか?