Hadoopが実際に大量のデータを保存および処理する方法を知りたいですか?
この記事では、Hadoopが内部でどのように機能するかを学習します。 Hadoopが大規模なデータセットをどのように保存および処理するかを見ていきます。この記事では、Hadoopの動作について詳しく説明しています。この記事では、最初にHadoopについて簡単に紹介します。
次に、HadoopコアコンポーネントとHadoopクラスターで実行されているデーモンが表示されます。次に、この記事では、HDFS、MapReduce、YARNなどのすべてのコアコンポーネントをカバーするHadoopの動作について説明します。
それでは、最初にHadoopの簡単な紹介を見てみましょう。
Hadoopの概要
ビッグデータの増加に伴い、2008年にApache Software Foundationは、すべてのビッグデータの問題に対するソリューションであるApacheHadoopと呼ばれるオープンソースフレームワークを開発しました。
Apache Hadoopは、テラバイトからペタバイトまでのサイズの膨大な量の非構造化データを保存および処理できるフレームワークです。これは、フォールトトレラント性と可用性の高いシステムです。
Hadoopは、大量のデータをHDFSに分散して保存します。 Hadoop MapReduceは、データを並列処理するHadoopの処理ユニットです。
Hadoop YARNは、Hadoopフレームワークのもう1つのコアコンポーネントであり、クラスターで実行されているアプリケーション間のリソースの管理とタスクのスケジューリングを担当します。
Hadoopが内部でどのように機能するかを学習する前に、まずHadoopの主要なコンポーネントとデーモンを見てみましょう。
Hadoopのコンポーネントとデーモン
Hadoopは、HDFS、MapReduce、YARNの3つの主要コンポーネントで構成されています。
1。 Hadoop HDFS
これはHadoopのストレージレイヤーです。 Hadoop分散ファイルシステムは、クラスター内のさまざまなノードにデータを保存します。データをブロックに分割し、それらを異なるノードに保存します。 ブロックサイズはデフォルトで128MBです 。要件に応じてブロックサイズを構成できます。
2。 Hadoop MapReduce
これはHadoopの処理レイヤーです。 Hadoop MapReduceは、HadoopHDFSに保存されているデータをクラスター内のさまざまなノード間で並行して処理します。ユーザーが送信したタスクを独立したタスクに分割し、コモディティハードウェア全体でサブタスクとして処理します。
3。 Hadoop YARN
これは、Hadoopのリソースおよびプロセス管理レイヤーです。 YARNは、クラスターで実行されているアプリケーション間でリソースを共有し、クラスター内のタスクをスケジュールする責任があります。
これらはHadoopの3つのコアコンポーネントです。
Hadoopクラスターで実行されているデーモン
Hadoopクラスターで実行されるデーモンがいくつかあります。 デーモンは、バックグラウンドで実行される軽量プロセスです。
一部のデーモンはマスターノードで実行され、一部はスレーブノードで実行されます。ここで、Hadoopデーモンについて調べてみましょう。
主なHadoopデーモンは次のとおりです。
1。マスターデーモン
- NameNode: これは、HadoopHDFSのマスターデーモンです。ファイルシステムの名前空間を維持します。ファイルの各ブロックに関するメタデータを保存します。
- ResourceManager: YARNのマスターデーモンです。クラスタで実行されているすべてのアプリケーション間でリソースを調停します。
2。スレーブデーモン
- DataNode: DataNodeは、HadoopHDFSのスレーブデーモンです。スレーブマシンで実行されます。実際のデータまたはブロックを保存します。
- NodeManager: YARNのスレーブデーモンです。クラスタ内のすべての個々のコンピューティングノードを処理します。
Hadoopはどのように機能しますか?
Hadoopは、コモディティハードウェアのクラスター全体に分散してデータを保存および処理します。データを保存して処理するために、クライアントはデータとプログラムをHadoopクラスターに送信します。
Hadoop HDFSはデータを保存し、MapReduceはHDFSに保存されたデータを処理し、YARNはタスクを分割してリソースを割り当てます。
これらのコンポーネントについて詳しく見ていきましょう。
1。 HDFS
Hadoopのデータは、Hadoop分散ファイルシステムに保存されます。 HadoopHDFSで実行されているデーモンはNameNodeとDataNodeの2つです。
a。 NameNode
NameNodeは、HDFSのマスターデーモンです。マスターノードで実行されます。ファイルシステムの名前空間を維持します。 NameNodeは実際のデータを保存しません。ファイルのブロック、ファイルのアクセス許可、ブロックの場所などに関する情報などのメタデータを保存します。
NameNodeはDataNodeを管理し、それらに命令を提供します。 NameNodeは、3秒ごとにDataNodeからハートビートを受信します。これは、DataNodeが動作していることを示します。
b。 DataNode
DataNodeは、HDFSのスレーブデーモンです。 DataNodeは、実際のビジネスデータを格納するスレーブノードです。 NameNodeからの指示に基づいて、クライアントの読み取り/書き込み要求を処理する責任があります。 DataNodeはハートビートメッセージをNameNodeに送信して、それらが生きていることを確認します。
c。セカンダリNameNode
これは、HadoopHDFSの別のデーモンです。これは、プライマリNameNodeのヘルパーノードです。セカンダリNameNodeは、プライマリNameNodeから編集ログとFsimageファイルをダウンロードし、編集ログを Fsimageに定期的に適用します。 。
次に、更新されたFsimageファイルをNameNodeに送り返します。したがって、プライマリNameNodeに障害が発生した場合、セカンダリNameNodeに最後に保存されたFsimageを使用して、ファイルシステムのメタデータが復元されます。
クライアントがHadoopHDFSに対してデータの読み取りまたは書き込みを行う場合は常に、最初にNameNodeと対話します。 NameNodeは最初にクライアント特権をチェックし、クライアントが十分な特権を持っている場合、NameNodeはクライアントがデータを読み書きできるDataNodeのアドレスを提供します。
HDFS内のクライアントのファイルは、ブロックに分割されています。ブロックサイズはデフォルトで128MBです。 DataNodeはファイルのブロックを格納します。フォールトトレランスを提供するために、HDFSはレプリケーションファクターに応じてブロックのレプリカを作成します。
デフォルトのレプリケーション係数は3です。これは、ブロックの3つのコピーがHDFSに保存されることを意味します。 HDFSは、Rack Awarenessアルゴリズムに従って、ブロックのレプリカをさまざまなDataNodeに保存します。
ファイルの読み取り中に、DataNodeがダウンした場合、NameNodeは、クライアントがダウンタイムなしでデータを読み取ることができるブロックのレプリカを含む別のDataNodeのアドレスを提供します。
2。 MapReduce
MapReduceは、Hadoopの処理レイヤーです。クラスター内の複数のマシン間でデータを並行して処理します。タスクを独立したサブタスクに分割し、さまざまなDataNode間で並行して実行することで機能します。
MapReduceは、データを2つのフェーズ、つまりマップフェーズに処理します。 および削減フェーズ 。両方のフェーズの入力と出力は、キーと値のペアです。キーのタイプと値のペアは、プログラマーがInputFormatクラスを介して指定します。 。デフォルトでは、テキスト入力形式が使用されます。
プログラマーは2つの関数、つまりマップ関数を指定します および削減機能 。マップ関数では、プログラマーはデータを処理するためのビジネスロジックを記述します。
Reduce関数では、プログラマーはmap関数の中間出力を要約および集約するためのロジックを記述し、出力を生成します。
HadoopMapReduceの動作
クライアントがHadoopクラスター内のデータに対して処理を実行する場合は常に、最初にデータをHadoop HDFSに保存してから、データを処理するためのMapReduceプログラムを作成します。 HadoopMapReduceは次のように機能します。
1. Hadoopは、ジョブを2つのタイプのタスクに分割します。つまり、タスクのマップとタスクの削減です。 YARNはこれらのタスクをスケジュールしました(これについてはこの記事の後半で説明します)。これらのタスクは異なるDataNodeで実行されます。
2. MapReduceジョブへの入力は、入力分割と呼ばれる固定サイズの部分に分割されます。
3.入力分割のレコードごとにユーザー定義のマップ関数を実行する1つのマップタスクが、入力分割ごとに作成されます。これらのマップタスクは、入力データが存在するDataNodeで実行されます。
4.マップタスクの出力は中間出力であり、ローカルディスクに書き込まれます。
5.マップタスクの中間出力はシャッフルおよびソートされてから、レデューサーに渡されます。
6.単一のreduceタスクの場合、マッパーのソートされた中間出力は、reducerタスクが実行されているノードに渡されます。次に、これらの出力はマージされてから、ユーザー定義のreduce関数に渡されます。
7. reduce関数は、マッパーの出力を要約して出力を生成します。レデューサーの出力はHDFSに保存されます。
8.複数のリデュース機能の場合、ユーザーはレデューサーの数を指定します。複数のreduceタスクがある場合、マップタスクは出力をパーティション化し、reduceタスクごとに1つのパーティションを作成します。
YARN
YARNは、Hadoopのリソース管理レイヤーです。 Hadoopクラスターでタスクをスケジュールし、クラスターで実行されているアプリケーションにリソースを割り当てます。アプリケーションの実行に必要な計算リソースを提供する責任があります。
YARNコアサービスを提供するために、Hadoopクラスターで実行されている2つのYARNデーモンがあります。それらは:
a。 ResourceManager
YARNのマスターデーモンです。クラスタごとにマスターノードで実行され、クラスタ全体のリソースを管理します。 ResourceManagerには、スケジューラーという2つの主要なコンポーネントがあります。 およびApplicationManager。
スケジューラーは、クラスターで実行されているさまざまなアプリケーションにリソースを割り当てます。
ApplicationManagerは、クライアントによって送信されたジョブを引き受け、アプリケーション固有のApplicationMasterを実行するためにコンテナーをネゴシエートし、失敗した場合はApplicationMasterコンテナーを再起動します。
b。 NodeManager
NodeManagerは、YARNのスレーブデーモンです。クラスタ内のすべてのスレーブノードで実行されます。ノード上のコンテナの起動と管理を担当します。コンテナは、メモリ、CPUなどの制約されたリソースのセットを使用してアプリケーション固有のプロセスを実行します。
NodeManagerが起動すると、ResourceManagerに自分自身をアナウンスします。定期的にハートビートをResourceManagerに送信します。クラスターにリソースを提供します。
c。 ApplicationMaster
アプリケーションごとのApplicationMasterは、スケジューラーからコンテナーをネゴシエートし、コンテナーのステータスを追跡し、コンテナーの進行状況を監視します。
クライアントは、ResourceManagerにアプリケーションを送信します。 ResourceManagerは、クラスター内のノードで計算コンテナーを起動および監視するNodeManagerに接続します。コンテナはApplicationMasterを実行します。
MapReduceタスクとApplicationMasterは、ResourceManagerによってスケジュールされ、NodeManagerによって管理されるコンテナーで実行されます。
ここで、Hadoopが内部でどのように機能するかを要約しましょう:
1. HDFSは、クライアント入力データをサイズ128MBのブロックに分割します。レプリケーションファクターに応じて、ブロックのレプリカが作成されます。ブロックとそのレプリカは、異なるDataNodeに保存されます。
2.すべてのブロックがHDFSDataNodeに保存されると、ユーザーはデータを処理できます。
3.データを処理するために、クライアントはMapReduceプログラムをHadoopに送信します。
4.次に、ResourceManagerは、クラスター内の個々のノードでユーザーによって送信されたプログラムをスケジュールしました。
5.すべてのノードの処理が完了すると、出力はHDFSに書き戻されます。
概要
この記事では、Hadoopの動作全体を調査しました。この記事を読んだ後、Hadoopが大量のデータを保存および処理する方法を理解していただければ幸いです。
この記事では、リソース内のアプリケーション間でリソースがどのようにスケジュールされるかも説明しています。この記事では、Hadoopクラスターで実行されている主要なデーモンとHadoopのコアコンポーネントについて説明しています。
Hadoopが内部でどのように機能するかを理解していただければ幸いです。
学び続けてください!!