ホームページ よくある問題 システムによって実行される並べ替えのプロセスは何と呼ばれますか?

システムによって実行される並べ替えのプロセスは何と呼ばれますか?

Apr 25, 2021 pm 05:10 PM
hadoop shuffle

MapReduce は、各リデューサーの入力がキーによってソートされていることを保証し、システムはシャッフルと呼ばれるソート プロセスを実行します。シャッフル フェーズには主に、マップ フェーズの結合、グループ、ソート、パーティションと、リデューサー フェーズのマージ ソートが含まれます。

システムによって実行される並べ替えのプロセスは何と呼ばれますか?

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

MapReduce は、各 Reducer の入力がキーによってソートされていることを保証し、システムはシャッフルと呼ばれるソート プロセスを実行します。 これは、map が出力を生成し、入力をダイジェストして削減するプロジェクト全体として理解できます。

マップ側: 各マッパータスクには、マップ タスクの出力を保存するために使用されるリング メモリ バッファがあります。しきい値に達すると、バックグラウンド スレッドがコンテンツを、マップ タスクの指定されたディレクトリにある新しいオーバーフロー書き込みファイルに書き込みます。ディスクに書き込む前に、disk.、パーティション、ソート、コンバイナーを渡す必要があります。最後のレコードが書き込まれた後、オーバーフローで書き込まれたすべてのファイルを 1 つのパーティション化されソートされたファイルにマージします。

Reduce 側: コピー フェーズ、ソート フェーズ、リデュース フェーズに分割できます。

コピー フェーズ: マップ出力ファイルは、マップ タスクを実行しているタスクトラッカーのローカル ディスクに配置され、リデュースします。 http 経由で出力を取得します ファイルのパーティションに対して、tasktracker はパーティション ファイルの Reduce タスクを実行します。マップ タスクが完了している限り、Reduce タスクは出力のコピーを開始します。

ソートフェーズ: ソートはマップ側で実行されるため、マージフェーズという用語がより適切です。このステージでは、マップ出力をマージし、その順序を維持してループします。

最後のステージは、reduce ステージです。reduce 関数は、ソートされた出力のキーごとに呼び出されます。このステージの出力は、出力ファイル システム (通常は HDFS) に直接書き込まれます。 ,

シャッフル フェーズの説明

シャッフル フェーズには主に、マップ フェーズの結合、グループ、並べ替え、分割と、リデューサー フェーズのマージ ソートが含まれます。 Map ステージでシャッフルした後、出力データは Reduce パーティションに従ってファイルに保存され、ファイルの内容は定義された並べ替えに従って並べ替えられます。 Map フェーズが完了すると ApplicationMaster に通知され、AM が Reduce にデータをプルするように通知し、プル処理中に Reduce 側でシャッフル処理を実行します。

注: Map ステージの出力データは、Map ノードを実行しているディスクに保存されます。これは一時ファイルであり、HDFS 上には存在しません。Reduce がデータをプルした後、一時ファイルは削除されます。 HDFS 上に存在する場合は削除されるため、ストレージ領域が無駄に消費されます (コピーが 3 つ生成されます)。

  • ユーザー定義の Combiner

    Combiner を使用すると、Map ステージの中間出力結果の数を減らし、ネットワークのオーバーヘッドを削減できます。デフォルトでは、Combiner はありません。ユーザー定義の Combiner は、Reducer のサブクラスである必要があります。Map の出力 は、Combiner の入力 および出力 として使用されます。つまり、Combiner の入力と出力は同じでなければなりません。

    job.setCombinerClass を通じてコン​​バイナー処理クラスを設定できますが、MapReduce フレームワークは、このクラスのメソッドが呼び出されることを保証しません。

    注:reduce の入力と出力が同じである場合は、reduce クラスを結合器として直接使用できます。

  • ユーザー定義のパーティショナー

    Partitioner が使用される マップによって出力された に対応する処理リデューサーがどのノードであるかを決定します。デフォルトの MapReduce タスクのリデュース数は 1 です。このとき、パーティショナーは実際には影響を及ぼしませんが、リデュース数を複数に変更すると、パーティショナーはキーに対応するリデュースのノード番号を (0 から開始して) 決定します。 )。

    job.setPartitionerClass メソッドを通じて Partitioner クラスを指定できます。デフォルトでは、HashPartitioner が使用されます (キーの hashCode メソッドがデフォルトで呼び出されます)。

  • ユーザー定義グループ

    GroupingComparator は、Map によって出力された > にグループ化するために使用されます。 classは端的に言えば、key1とkey2が同じグループに属しているかどうかを判定するために使用され、同じグループであればマップの出力値を結合します。

    カスタム クラスはセルフ インターフェイス RawComparator を実装する必要があり、比較クラスは job.setGroupingComparatorClass メソッドを通じて指定できます。デフォルトでは WritableComparator が使用されますが、最終的にはキーの CompareTo メソッドが比較のために呼び出されます。

  • ユーザー定義の Sort

    SortComparator は、Map が出力した をキーソートするために使用されるキークラスです。 for key1 がどのグループに属し、key2 がどのグループに属するかが最初でどれが最後になるかを決定します。

    カスタム クラスはセルフ インターフェイス RawComparator を実装する必要があり、比較クラスは job.setSortComparatorClass メソッドを通じて指定できます。デフォルトでは WritableComparator が使用されますが、最終的にはキーの CompareTo メソッドが比較のために呼び出されます。

  • ユーザー定義 Reducer の Shuffle

    Reduce 側がマップの出力データをプルする際にシャッフル (マージソート) が行われ、MapReduce フレームワークが提供されますプラグイン モードの場合 カスタマイズされた方法では、ShuffleConsumerPlugin インターフェイスを実装し、パラメータ mapreduce.job.reduce.shuffle.consumer.plugin.class を指定することで、カスタム シャッフル ルールを指定できますが、一般に、デフォルトのクラス org が直接使用されます。 .apache.hadoop.mapreduce.task.reduce.Shuffle。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上がシステムによって実行される並べ替えのプロセスは何と呼ばれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java エラー: Hadoop エラー、処理方法と回避方法 Java エラー: Hadoop エラー、処理方法と回避方法 Jun 24, 2023 pm 01:06 PM

Java エラー: Hadoop エラー、対処方法と回避方法 Hadoop を使用してビッグ データを処理する場合、タスクの実行に影響を与え、データ処理の失敗を引き起こす可能性のある Java 例外エラーが頻繁に発生します。この記事では、一般的な Hadoop エラーをいくつか紹介し、それらに対処および回避する方法を示します。 Java.lang.OutOfMemoryErrorOutOfMemoryError は、Java 仮想マシンのメモリ不足によって発生するエラーです。 Hadoop の場合

Java は、Collections クラスの shuffle() 関数を使用して、コレクション内の要素の順序を混乱させます。 Java は、Collections クラスの shuffle() 関数を使用して、コレクション内の要素の順序を混乱させます。 Jul 24, 2023 pm 10:25 PM

Java は、Collections クラスの shuffle() 関数を使用して、コレクション内の要素の順序を乱します。Java プログラミング言語において、Collections クラスは、コレクションを操作するためのさまざまな静的メソッドを提供するツール クラスです。その 1 つは shuffle() 関数で、コレクション内の要素の順序をシャッフルするために使用できます。この記事では、この関数の使用方法を示し、対応するコード例を示します。まず、java.util パッケージに Collections クラスをインポートする必要があります。

Beego で Hadoop と HBase を使用してビッグ データ ストレージとクエリを実行する Beego で Hadoop と HBase を使用してビッグ データ ストレージとクエリを実行する Jun 22, 2023 am 10:21 AM

ビッグデータ時代の到来に伴い、データの処理と保存の重要性がますます高まっており、大量のデータをいかに効率的に管理、分析するかが企業にとっての課題となっています。 Apache Foundation の 2 つのプロジェクトである Hadoop と HBase は、ビッグ データのストレージと分析のためのソリューションを提供します。この記事では、ビッグデータのストレージとクエリのために Beego で Hadoop と HBase を使用する方法を紹介します。 1. Hadoop と HBase の概要 Hadoop は、オープンソースの分散ストレージおよびコンピューティング システムです。

ビッグデータ処理に PHP と Hadoop を使用する方法 ビッグデータ処理に PHP と Hadoop を使用する方法 Jun 19, 2023 pm 02:24 PM

データ量が増加し続けるにつれて、従来のデータ処理方法ではビッグデータ時代がもたらす課題に対処できなくなります。 Hadoop は、ビッグ データ処理において単一ノード サーバーによって引き起こされるパフォーマンスのボトルネック問題を、分散ストレージと大量のデータの処理を通じて解決する、オープン ソースの分散コンピューティング フレームワークです。 PHP は、Web 開発で広く使用されているスクリプト言語であり、迅速な開発と容易なメンテナンスという利点があります。この記事では、ビッグデータ処理に PHP と Hadoop を使用する方法を紹介します。 HadoopとはHadoopとは

ビッグデータの分野での Java の応用を探る: Hadoop、Spark、Kafka、その他のテクノロジー スタックについて理解する ビッグデータの分野での Java の応用を探る: Hadoop、Spark、Kafka、その他のテクノロジー スタックについて理解する Dec 26, 2023 pm 02:57 PM

Java ビッグ データ テクノロジ スタック: Hadoop、Spark、Kafka などのビッグ データ分野における Java のアプリケーションを理解します。データ量が増加し続けるにつれて、今日のインターネット時代ではビッグ データ テクノロジが注目のトピックになっています。ビッグデータの分野では、Hadoop、Spark、Kafka などのテクノロジーの名前をよく耳にします。これらのテクノロジーは重要な役割を果たしており、広く使用されているプログラミング言語である Java もビッグデータの分野で大きな役割を果たしています。この記事では、Java のアプリケーション全般に​​焦点を当てます。

PHP では配列をランダムにシャッフルするためにどのような関数が使用されますか? PHP では配列をランダムにシャッフルするためにどのような関数が使用されますか? May 01, 2024 pm 10:15 PM

PHP には、配列をランダムにシャッフルできる次の関数があります。 shuffle() は、配列要素の順序を直接変更します。 array_rand() はランダムなキーを返します。これにより、キーに基づいて配列の順序を並べ替えることができます。

iPhoneの壁紙を自動で変更する方法 iPhoneの壁紙を自動で変更する方法 May 04, 2023 am 11:55 AM

PhotoShuffleを使ってiPhoneの壁紙を自動で変更する方法 iOS 16アップデートでは、フォトシャッフル機能を使って、好きな間隔で自動的に切り替わる壁紙を適用できるようになりました。機能は同じですが、この機能は 2 つの異なる方法で使用できます。1 つは注目の写真を使用する方法、もう 1 つはギャラリーから手動で選択した写真を使用する方法です。どちらのオプションも、ロック画面から直接壁紙を適用する場合、または設定アプリを使用する場合にアクセスできます。新しい壁紙を適用する最も簡単な方法は、ロック画面から行うことです。まず、FaceID を使用して携帯電話のロックを解除しますが、まだホーム画面には移動しないでください。これを行うには、サイドボタンを押して iPhone に向かい、ロック画面のロックを解除するだけです。

Linux に Hadoop をインストールする方法 Linux に Hadoop をインストールする方法 May 18, 2023 pm 08:19 PM

1: JDK1のインストール 以下のコマンドを実行して、JDK1.8のインストールパッケージをダウンロードします。 wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2. 次のコマンドを実行して、ダウンロードした JDK1.8 インストール パッケージを解凍します。 。 tar-zxvfjdk-8u151-linux-x64.tar.gz3. JDK パッケージを移動して名前を変更します。 mvjdk1.8.0_151//usr/java84. Java 環境変数を設定します。エコー'