Hadoopが信頼性が高くフォールトトレラントな方法で大量のデータを保存する方法を知りたいですか?
このHDFSチュートリアルでは、Hadoopのコアコンポーネントの1つであるHadoop分散ファイルシステム(HDFS)について説明します。
まず、分散ファイルシステムの概要を説明します。次に、Hadoop分散ファイルシステムについて学習します。この記事では、HDFS、HDFSアーキテクチャ、およびHDFSでブロックを使用する理由について説明しています。
この記事には、HadoopHDFSの機能の一部も含まれています。また、HadoopHDFSのハートビートメッセージについても知ることができます。
このHDFSチュートリアルは、最も信頼性の高いストレージHadoopHDFSの完全な入門ガイドを提供します。
まず、分散ファイルシステムの概要から始めましょう。
分散ファイルシステム
データセットが単一のマシンのストレージ容量を超える場合、データセットを複数の別々のマシンに分割することが必須になります。マシンのネットワーク全体でデータを管理するファイルシステムは、分散ファイルシステムと呼ばれます。 。
分散ファイルシステムは、クラスター内の複数のマシンまたはノードにまたがってデータを保存し、複数のユーザーがデータにアクセスできるようにするファイルシステムです。
DFSはネットワークに基づいているため、ネットワークプログラミングのすべての複雑さが発生し、分散ファイルシステムが通常のファイルシステムよりも複雑になります。 DFSの最大の課題の1つは、データを失うことなくノードの障害を許容することです。
Hadoopには、フォールトトレランスと高可用性を提供しながら大量のデータを保存するためのHadoop分散ファイルシステムと呼ばれる分散ファイルシステムが付属しています。
HDFSを知りたいですか?それでは、HDFSチュートリアルから始めましょう。
HDFSチュートリアル–はじめに
Hadoop分散ファイルシステム(HDFS)は、Hadoopで使用されるJavaベースの分散ファイルシステムであり、GigaBytesからPetaBytesまでのサイズの大量の構造化データまたは非構造化データを、商用ハードウェアのクラスター全体に格納します。これは、地球上でこれまでに知られている中で最も信頼性の高いストレージです。
HDFSでは、データは複数の場所に保存されるため、いずれかのマシンに障害が発生した場合、データのコピーを含む他のマシンからデータをフェッチできます。したがって、フォールトトレラント性が高く、ハードウェア障害が発生した場合でもデータが失われることはありません。
これは、MapReduce、YARN、およびその他の一般的なユーティリティとともに、Hadoopの主要なコンポーネントです。
Write-Once-Read-Manyに従います。 データの一貫性を簡素化し、高スループットのアクセスを可能にする哲学。
なぜHDFSなのか
今日のITの世界では、世界のデータのほぼ75%がHadoopHDFSに存在しています。これは次の理由によるものです:
- HDFSはコモディティハードウェア全体にデータを保存するため、ビッグデータを保存するためのハイエンドマシンは必要ありません。したがって、ビッグデータを保存するための経済的なストレージを提供します。
- HDFSは、Write-Once-Read-Many-Timesパターンである最も効率的なデータ処理パターンに従います。さまざまなソースから生成されたデータセットがコピーされ、その後、さまざまな分析がそのデータセットに対して時間の経過とともに実行されます。したがって、バッチ処理に最適です。
- HDFSは、構造化または非構造化のいずれかの形式で、任意のソースから生成された任意のサイズのデータを保存できます。
- Write-one-read-manyモデルは、同時実行制御の要件を緩和します。データの一貫性に関する問題なしに、データに複数回アクセスできます。
- HDFSは、データを計算ユニットに移動するよりも、計算をデータに移動する方がはるかに簡単で高速であるというデータの局所性の仮定に基づいて機能します。 HDFSは、データをアプリケーションスペースに移動するのではなく、データの近くに処理ロジックを配置することを容易にします。したがって、これによりネットワークの混雑と全体的な所要時間が短縮されます。
それでは、このHDFSチュートリアルを進めて、HDFSアーキテクチャにジャンプしましょう。
HDFSアーキテクチャ
HadoopDFSはマスタースレーブに従います 建築。 HDFSは、マスターノードとスレーブノードの2種類のノードで構成されています。マスターノードはファイルシステムの名前空間を管理します。つまり、ファイルのブロックに関するメタデータを保存します。
スレーブノードはユーザーデータを保存し、マスターノードからの指示に基づいてデータを処理します。
HDFSマスター
HDFSのマスターは、HadoopHDFSの目玉です。これらは、HDFSに保存されているすべてのファイルに関連するメタデータを保存するハイエンドマシンです。ファイルシステムの名前空間を管理および維持し、スレーブノードに命令を提供します。
NameNode HadoopHDFSのマスターノードです。
HDFSスレーブ
スレーブノードは、実際のビジネスデータを保存する責任があります。これらは、マスターノードからの指示に応じてデータセットを保存および処理する通常の構成マシン(コモディティハードウェア)です。
DataNodes HadoopHDFSのスレーブノードです。
HDFS NameNode
NameNodeはマスターノードです。これは、ファイルの開閉、ファイルの名前変更、ディレクトリなどのファイルシステムの名前空間操作を管理します。 NameNodeはデータブロックをDataNodeにマップし、ファイルシステムの名前空間に加えられた各変更を記録します。
HDFS DataNode
DataNodeは、HDFSクライアントからの読み取り/書き込み要求を処理するスレーブノードです。 DataNodesは、管理名ノードからの指示に従って、データブロックを作成、削除、および複製します。
データがHDFSにどのように保存されるのか疑問に思っていますか?
HDFSのブロック
HDFSは、ファイルをデータブロックと呼ばれるブロックサイズのチャンクに分割します。これらのブロックは、クラスター内の複数のDataNodeにまたがって格納されます。デフォルトのブロックサイズは128MBです。クラスタ構成に応じて、デフォルトのブロックサイズを構成できます。
ハイエンドマシンを備えたクラスターの場合、ブロックサイズを大きく保つことができます(256 Mb以上など)。 8Gb RAMのような構成のマシンを備えたクラスターの場合、ブロックサイズを小さく保つことができます(64 Mbなど)。
また、HDFSは、レプリケーション係数(ファイルのブロックの合計コピー数を定義する数値)に基づいてブロックのレプリカを作成します。デフォルトでは、レプリケーション係数は3です。これは、各ブロックの3つのコピーが作成され、複数のノードに保存されることを意味します。
DataNodeのいずれかに障害が発生した場合、ブロックは、ブロックのレプリカを含む他のDataNodeからフェッチされます。これにより、HDFSのフォールトトレランスが実現します。
NameNodeがDataNodeの障害を検出する方法を考えましたか?
DataNodeの障害
Hadoop HDFSのすべてのDataNodeは、3秒ごとに「Iam Alive」を通知するために、小さなハートビートメッセージ(シグナル)をNameNodeに継続的に送信します。
NameNodeが特定のDataNodeからハートビートメッセージを10分以上取得しない場合、DataNodeは停止していると見なし、そのDataNodeで使用可能なブロックのレプリカの作成を開始します。
NameNodeは、そのデータのコピーを含むDataNodeに、そのデータを他のDataNodeに複製して、複製のバランスを取るように指示します。このようにして、NameNodeはDataNodeの障害を検出します。
NameNodeがさまざまなDataNodeにレプリカを配置する方法を知りたいですか?上記の質問に対する答えを得るために、HDFSでラックの認識を調べてみましょう。
HDFSのラック認識
Hadoop HDFSは、コモディティハードウェアのクラスター全体にデータを保存します。フォールトトレランスを提供するために、ブロックのレプリカが作成され、さまざまなDataNodeに保存されます。
NameNodeは、Rack Awarenessアルゴリズムに従って、ブロックのレプリカを複数のDataNodeに配置し、DataNodeまたはラック全体がダウンした場合でもデータが失われないようにします。 NameNodeは、最初のレプリカを最も近いDataNodeに配置します。
2番目のレプリカを同じラックの別のDataNodeに保存し、3番目のレプリカを別のラックの別のDataNodeに保存します。
レプリケーションファクターが2の場合、2番目のレプリカを別のラックの別のDataNodeに配置するため、ラック全体がダウンした場合でも、システムの可用性が高くなります。
ラック対応のレプリカ配置ポリシーの主な目的は、フォールトトレランス、データの信頼性、可用性を向上させることです。
次のHDFSチュートリアルでは、HadoopHDFSのいくつかの主要な機能について説明します。
HadoopHDFSの重要な機能
1。高可用性
これは、可用性の高いファイルシステムです。このファイルシステムでは、HDFSクラスターに存在する他のスレーブ上のブロックのレプリカを作成することにより、Hadoopクラスター内のノード間でデータが複製されます。したがって、ユーザーがこのデータにアクセスしたいときはいつでも、そのブロックを含むスレーブから自分のデータにアクセスできます。
2。フォールトトレランス
Hadoop HDFSのフォールトトレランスは、不利な条件でのシステムの動作強度です。フォールトトレラント性が高いです。 Hadoopフレームワークは、データをブロックに分割します。
その後、クラスター内の異なるマシン上にブロックの複数のコピーを作成します。したがって、クラスター内のいずれかのマシンがダウンした場合、クライアントは、データブロックの同じコピーを含む他のマシンからデータに簡単にアクセスできます。
3。高い信頼性
HDFSは信頼性の高いデータストレージを提供します。数百ペタバイトの範囲のデータを保存できます。 HDFSは、データをクラスターに確実に保存します。データをブロックに分割します。次に、Hadoopフレームワークは、これらのブロックをクラスター内に存在するノードに格納します。
HDFSは、クラスター内に存在するすべてのブロックのレプリカを作成することにより、データを確実に保存します。したがって、フォールトトレランス機能を提供します。
4。レプリケーション
データレプリケーションは、HDFSのユニークな機能です。レプリケーションは、ハードウェア障害、ノードのクラッシュなどの好ましくない状態でのデータ損失の問題を解決します。HDFSは、レプリケーションのプロセスを一定の時間間隔で維持します。
また、クラスター内に存在するさまざまなマシンでユーザーデータのレプリカを作成し続けます。したがって、いずれかのノードがダウンした場合、ユーザーは他のマシンからデータにアクセスできます。したがって、ユーザーデータが失われる可能性はありません。
5。スケーラビリティ
クラスタ内の複数のノードにデータを保存します。したがって、要件が増えるたびに、クラスターをスケーリングできます。 HDFSでは、垂直スケーラビリティと水平スケーラビリティの2つのスケーラビリティメカニズムを利用できます。
6。分散ストレージ
HDFS機能は、分散ストレージとレプリケーションを介して実現されます。ノード間で分散してデータを保存します。 Hadoopでは、データはブロックに分割され、クラスター内に存在するノードに保存されます。
その後、すべてのブロックのレプリカを作成し、他のノードに保存します。クラスタ内の1台のマシンがクラッシュした場合、そのレプリカを含む他のノードからデータに簡単にアクセスできます。
次のHDFSチュートリアルでは、いくつかの便利なHDFS操作について説明します。
HDFS操作
Hadoop HDFSは、Linuxファイルシステムと多くの類似点があります。ディレクトリの作成、ファイルのコピー、権限の変更など、ローカルファイルシステムで実行できるほとんどすべての操作を実行できます。
また、ユーザー、グループなどに読み取り、書き込み、実行などのさまざまなアクセス権を提供します。
1。操作を読む
HDFSクライアントがHDFSからファイルを読み取りたい場合、クライアントは最初にNameNodeと対話します。 NameNodeは、メタデータを格納する唯一の場所です。 NameNodeは、データが格納されているスレーブのアドレスを指定します。次に、クライアントは指定されたDataNodeと対話し、そこからデータを読み取ります。
HDFSクライアントは分散ファイルシステムAPIと対話します。次に、ブロックの場所を送信するようにNameNodeに要求を送信します。 NameNodeは最初に、クライアントがデータにアクセスするのに十分な特権を持っているかどうかをチェックしますか?その後、NameNodeはデータがDataNodeに保存されているアドレスを共有します。
NameNodeはクライアントにトークンを提供し、セキュリティ目的でファイルを読み取るためにDataNodeに表示します。クライアントがファイルを読み取るためにDataNodeにアクセスすると、トークンを確認した後、DataNodeはクライアントがその特定のブロックを読み取ることを許可します。
その後、クライアントは入力ストリームを開き、指定されたDataNodeからデータの読み取りを開始します。したがって、この方法で、クライアントはDataNodeから直接データを読み取ります。
2。書き込み操作
ファイルを書き込むために、クライアントは最初にNameNodeと対話します。 HDFS NameNodeは、クライアントがデータを書き込む必要があるDataNodeのアドレスを提供します。
クライアントがブロックの書き込みを終了すると、DataNodeはブロックを別のDataNodeに複製し始めます。次に、ブロックを3番目のDataNodeにコピーします。必要なレプリケーションを作成すると、最終的な確認応答をクライアントに送信します。認証は読み取り操作と同じです。
クライアントは、レプリケーションファクターに関係なく、データの1つのコピーを送信するだけですが、DataNodesはブロックをレプリケートします。複数のブロックを複数のDataNodeに並行して複数のブロックに書き込むため、ファイルの書き込みにコストはかかりません。
概要
HDFSチュートリアルの結論では、HadoopHDFSはコモディティハードウェアのクラスター全体に分散してデータを保存していると言えます。
Hadoop HDFSは、信頼性が高く、フォールトトレラントで、可用性の高いストレージシステムです。これは、NameNodeがマスターノードであり、DataNodeがスレーブノードであるマスタースレーブアーキテクチャに従います。
また、HDFSは、クライアントの入力ファイルをサイズ128 MBのブロックに分割します。これは、要件に応じて構成できます。また、フォールトトレランスを提供するためにブロックのレプリカを保存します。
NameNodeは、DataNodeにレプリカを配置するためのラック認識ポリシーに従って、マシン障害またはハードウェア障害中にデータが失われないようにします。さらに、DataNodeはハートビートメッセージをNameNodeに送信して、それらが生きていることを確認します。
ファイルの読み取りまたは書き込み中に、クライアントは最初にNameNodeと対話します。
Hadoop HDFSは、ビッグデータを保存するための、スケーラブルで信頼性が高く、分散型で、フォールトトレラントで、可用性の高いストレージシステムです。