問題タブ [hadoop-partitioning]
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.
hadoop - hadoopマップリデュースでのグループ化コンパレータの使用は何ですか?
グループ化コンパレータが mapreduce の二次ソートで使用される理由を知りたいです。
二次選別の決定的なガイドの例によると
キーのソート順を年順 (昇順) にしてから温度順 (降順) にします。
キーの年の部分で分割するようにパーティショナーを設定することで、同じ年のレコードが同じリデューサーに送られることを保証できます。ただし、これでも目標を達成するにはまだ十分ではありません。パーティショナーは、1 つのレデューサーだけが 1 年間のすべてのレコードを受け取ることを保証します。レデューサーがパーティション内のキーによってグループ化されるという事実は変わりません。
特定のレデューサーに送られるマップ出力キーを処理する独自のパーティショナーを既に作成しているので、なぜそれをグループ化する必要があるのでしょうか。
前もって感謝します
hadoop - Hadoop MapReduce - 単一のレデューサーの負荷が高い
次のような豚のスクリプトを実行しています
フィールドbucketid
は 200 の異なる値を取るため、各レデューサーが 1 つのグループを処理することを期待して、PARALLEL を 200 に設定しています。ただし、一部のレデューサーは何も実行しませんが、他のレデューサーは複数のグループを処理します。この背後にあるアイデアは何ですか?
私が直面している実際の問題は、1 つのレデューサーがR
他のレデューサーよりも遅れており、タスク ログにmerging 13GB of data
(そしてレデューサーが削減フェーズにある) ということです。ただし、入力データに基づくと、それほどR
大量のデータを処理することは期待できません。終了するとR
、それによって生成された出力パーツ ファイルは350 MB
(gzip 形式の) だけであり、解凍すると、6 GB
. merging 13 GB of data
だから、レデューサーが実行されているときにログに表示されるのはなぜだろうと思っています。この背後にある理由はありますか?何か不足していますか?
java - オーバーラップ計算の mapreduce アルゴリズムを理解する
アルゴリズムを理解するのに役立ちます。最初にアルゴリズムの説明を貼り付け、次に疑問を貼り付けました。
アルゴリズム:( レコードペア間のオーバーラップを計算するため)
ユーザー定義のパラメーター K が与えられると、ファイル DR( *Format: record_id, data*) は、ドキュメントのデータ Di が i/K 番目のチャンクに収まるように、ほぼ同じサイズの K 個のチャンクに分割されます。
マッパーによって発行されたキーをレデューサー インスタンスにマップする Hadoop のパーティショニング関数をオーバーライドしました。すべてのキー (i,j) は、j/K 番目のグループのレデューサーにマップされます。
特別なキー i,* とそれに関連付けられた値、つまりドキュメントのデータは最大 K 回複製されるため、すべてのレデューサーでドキュメントの完全なコンテンツを配信できます。したがって、グループ内の各レデューサーは、DR ファイルの 1 つのチャンクのみを回復してメモリにロードする必要があります。このチャンクのサイズは、K を変更することで任意に小さく設定できます。したがって、オーバーラップを計算できます。これは、MapReduce フレームワークを介して配信されるドキュメントを複製するという犠牲を払って実現されます。
疑問:
私はいくつかの仮定をしました:
ステートメント: すべてのキー (i,j) は、j/K 番目のグループのレデューサーにマップされます。仮定: K 個のリデュース ノードが存在し、キーは j/K 番目のリデュース ノードにマッピングされます。
疑問: 一部の削減ノードはグループ化されていますか? 0、1、2 ノードがグループ 0 としてグループ化されているとしますか?
ステートメント: ドキュメントのデータは最大で K 回複製されるため、すべてのレデューサーでドキュメントの完全なコンテンツを配信できます。
つまり、K は no に等しいということです。レデューサーノードの?そうでない場合は、計算ノードを使用せずに浪費していますよね?
主な疑問: K は Reducer Node の数と同じですか??
回答お待ちしております!
ありがとう!
hadoop - OpenclアプリケーションにhadoopMapReuceフレームワークを使用するにはどうすればよいですか?
私はopenclでアプリケーションを開発しています。その基本的な目的は、GPUプラットフォームにデータマイニングアルゴリズムを実装することです。Hadoop分散ファイルシステムを使用し、複数のノードでアプリケーションを実行したい。私はMapReduceフレームワークを使用しており、基本的なアルゴリズムを「Map」と「Reduce」の2つの部分に分割しました。
私はこれまでHadoopで作業したことがないので、いくつか質問があります。
- HadoopおよびMapeduceフレームワークを使用するためだけにアプリケーションをJavaで記述していますか?
- openclでmapとreduceのカーネル関数を作成しました。Java以外のGPUコンピューティングアプリケーションにHDFSファイルシステムを使用することは可能ですか?(注:JavaCLまたはAparapiは使用しません)
java - 間違ったデータを受信するHadoopレデューサー
たくさんのJobControlsを同時に実行していて、すべて同じセットのControlledJobsを使用しています。各JobControlは、日付範囲ごとに異なる入出力ファイルのセットを処理しますが、それらはすべてタイプです。私が観察している問題は、reduceステップが、異なる日付範囲を処理するreducerによって処理されるように設計されたデータを受信していることです。日付範囲はジョブによって設定され、入力と出力を決定するために使用され、レデューサー内のコンテキストから読み取られます。
JobControlsを順番に送信すると、これは停止しますが、それは良くありません。これは、カスタムパーティショナーで解決する必要があるものですか?現在の日付範囲を処理しているレデューサーがわからない場合、キーの正しいレデューサーをどのように決定すればよいですか?インスタンス化されたレデューサーがJobControlにロックされないのはなぜですか?
私は、Javaでの基本実装に対して、すべてのJobControls、Jobs、Maps、Reduceを記述しています。
糸で2.0.3-alphaを使用しています。それはそれと何か関係がありますか?
コードの共有には少し注意する必要がありますが、ここにサニタイズされたマッパーがあります。
そしてレデューサー:
hadoop - HDFS にアップロードされた cvs ファイルの特定の部分を操作するには?
HDFS にアップロードされた cvs ファイルの特定の部分を操作するには? 私は Hadoop が初めてで、リレーショナル データベースを cvs ファイルにエクスポートしてから HDFS にアップロードした場合に質問があります。そのため、 MapReduce を使用してファイル内の特定の部分 (テーブル) を操作する方法。前もって感謝します 。
java - 同じファイル内の 2 つの異なるキーの値を出力するリデューサー
こんにちは、一般的に XML ファイルを解析する mapreduce ジョブを作成しました。XML ファイルを解析し、適切に生成されたすべてのキーと値のペアを取得できます。6 つの異なるキーとそれに対応する値があります。そのため、6 つの異なるレデューサーを並行して実行しています。
今私が直面している問題は、レデューサーが2つの異なるキーと値のペアを同じファイルに入れ、残りの4つのキーと値を個々のファイルに入れていることです。つまり、リデューサーからの出力の 6 つのファイルのうち、単一のキーと値のペアを含む 4 つのファイルと、2 つのキーと値のペアを含む 1 つのファイルと、何も持たない 1 つのファイルを取得しています。
Google やさまざまなフォーラムで調査を試みましたが、この問題を解決するにはパーティショナーが必要であるという結論に達しました。私は新しいHadoopなので、誰かがこの問題に光を当てて、これを解決するのを手伝ってくれます.
私は疑似ノードクラスターに取り組んでおり、Java をプログラミング言語として使用しています。ここでコードを共有することはできませんが、問題を簡単に説明しようとしています。
より多くの情報が必要であることをお知らせください。事前に感謝します。
hadoop - hadoop はパーティションをレデューサーに分配します
負荷分散の理由から、Hadoop 環境でレデューサーよりも多くのパーティションを作成したいと考えています。パーティションを特定のレデューサーに割り当てる方法はありますか?もしそうなら、どこで定義できますか? 私は個別のパーティショナーを作成しましたが、特定のパーティションを持つ特定のレデューサーに対処したいと考えています。
助けてくれてありがとう!
hadoop - Hadoop の入力サンプラー
InputSampler についての私の理解では、レコード リーダーからデータを取得し、キーをサンプリングしてから、HDFS にパーティション ファイルを作成します。
このサンプラーについていくつか質問があります: 1) このサンプリング タスクはマップ タスクですか? 2) データは HDFS 上にあります (クラスターのノード全体に分散されています)。このサンプラーは、サンプリングするデータを持つノードで実行されますか? 3) これはマップ スロットを消費しますか? 4) サンプルは MR ジョブのマップ タスクと同時に実行されますか? スロットの数を減らすことで、マッパーが消費する時間に影響するかどうかを知りたいですか?