hadoop hdfs hadoop distributed file system
このチュートリアルでは、Hadoop HDFS – Hadoop分散ファイルシステム、コンポーネント、およびクラスターアーキテクチャについて説明します。また、Rack AwarenessAlgorithmについても学習します。
前のチュートリアルで学んだように、ビッグデータの最大の問題はそれを既存のシステムに保存することです。そして、その一部を既存のシステムに保存したとしても、ビッグデータの処理には何年もかかりました。
数分または数か月で必要な結果が得られたため、その結果の価値が失われました。
=> ここでシンプルなビッグデータトレーニングシリーズに注目してください。
学習内容:
Hadoop分散ファイルシステム
この問題を解決するため、またはこの問題に対処するために、HADOOPが用意されています。 Hadoopは、このビッグデータの問題を HadoopHDFS。
Hadoop HDFS ビッグデータのストレージの問題を解決し、 HadoopMapReduce ビッグデータの一部の処理に関連する問題を解決しました。
これで、Hadoopには基本的に分散ファイルシステムがあることがわかりました…しかし、なぜですか?
最高のメールサービスを持っている人
Hadoopが分散ファイルシステムであるのはなぜですか?
分散ファイルシステムとは何かを理解し、分散ファイルシステムの利点を理解してみましょう。
分散ファイルシステム
1TBのデータを読み取る例を見てみましょう。 4つのI / O(入出力)チャネルを備えた優れたハイエンドサーバーであるサーバーがあり、各チャネルの帯域幅は100MB / sです。このマシンを使用すると、この1TBのデータを43で読み取ることができます。分。
さて、このように10台のマシンを持ち込むとどうなるでしょうか。
時間は正確に4.3分に短縮されました。これは、作業全体が10台のマシンに分割されたため、1TBのデータの処理にかかった時間が1/10に短縮されたためです。thつまり、4.3分です。
同様に、BigDataを検討する場合、そのデータは複数のデータチャンクに分割され、実際にはそのデータを個別に処理します。そのため、Hadoopは集中型ファイルシステムではなく分散ファイルシステムを選択しました。
Hadoopのコンポーネント
Hadoop HDFSには、BigDataの問題を解決するための2つの主要なコンポーネントがあります。
- 最初のコンポーネントは、ビッグデータを格納するためのHadoopHDFSです。
- 2番目のコンポーネントは、ビッグデータを処理するためのHadoop MapReduceです。
Hadoopのアーキテクチャ(下の画像)を見ると、左翼が2つある翼があります。 'ストレージ' そして右翼は '処理' 。つまり、左翼はHDFS、つまりHadoop配布ファイルシステムであり、右翼はYARNであり、MapReduceは処理部分です。
Hadoopを使用すると、HDFSを使用してビッグデータを保存できます。YARNとMap Reduceを使用すると、Hadoopを使用すると、HDFSに保存しているのと同じビッグデータを処理できます。
上の画像でわかるように、HDFSには2つの主要なデーモンがあります。または、JAVAプロセス、つまりJVM内で実行されているNameNodeとDataNodeに過ぎないプロセスまたはスレッドとしてそれらを呼び出すことができます。
NameNodeは、マスターマシン、つまり基本的にハイエンドマシンで実行されるマスターデーモンであり、DataNodeはコモディティハードウェアで実行されるスレーブマシンです。スレーブマシンはマスターマシン以上のものであるため、より多くのDataNodeが存在する可能性があります。
したがって、スレーブマシンでは常に1つのNameNodeと複数のDataNodeが実行されます。
同様に、反対側にもYARNがあり、2つのデーモンがあります。1つはマスターマシンで実行されるリソースマネージャーで、もう1つはDataNodeと同じようにスレーブマシンで実行されるノードマネージャーです。したがって、すべてのスレーブマシンには2つのデーモンがあります。1つはDataNodeで、もう1つはノードマネージャーです。
マスターマシンでは、NameNodeが実行され、ResourceManagerが実行されています。 NameNodeは、Hadoop分散ファイルシステム上のデータを管理する責任があり、Resource Managerは、この保存されたデータに対して処理タスクを実行する責任があります。
NameNodeとDataNode
HDFSアーキテクチャについて詳しく説明します。したがって、NameNodeとDataNodeは、実際にHDFSを完全に実行する2つの主要なデーモンであるため、これらを理解することが重要です。
NameNode
- マスターデーモンです。
- DataNodeの管理と保守。
- メタデータを記録します。
- すべてのDataNodeからハートビートとブロックレポートを受信します。
DataNode
- スレーブデーモンです。
- 実際のデータはここに保存されます。
- クライアントからの読み取りおよび書き込み要求を処理します。
ダイアグラムに注目してください。ご覧のとおり、そこにあるさまざまなDataNode、つまりコモディティハードウェアを制御している集中型マシンNameNodeがあります。したがって、Name Nodeは、すべてのDataNodeを維持するマスターデーモンに他なりません。
これらのNameNodeには、DataNodeに格納されているデータに関するすべての情報が含まれています。名前自体が示すように、DataNodeはHadoopクラスターにあるデータを格納します。
NameNodeには、どのデータがどのDataNodeに保存されているかに関する情報のみがあります。つまり、NameNodeは、DataNodeに格納されているデータのメタデータを格納していると言えます。
DataNodeは別のタスクも実行します。つまり、定期的にハートビートをNameNodeに送り返します。ハートビートは実際には、このDataNodeがまだ生きていることをNameNodeに伝えます。
例えば、 DataNodesはハートビートをNameNodeに送り返します。これにより、NameNodeはこれらのDataNodeが生きていることを認識できるため、NameNodeはこれらのDataNodeを使用して、より多くのデータを格納したり、これらのDataNodeからデータを読み取ったりできます。
ここで、DataNodeについて説明します。DataNodeは、Hadoopクラスターに送信されるデータを実際に格納しているスレーブデーモンに他なりません。これらのDataNodeは、クライアントによって行われる読み取りおよび書き込み要求を実際に処理するものです。
誰かがHadoopクラスターからデータを読み取りたい場合、これらのリクエストは実際にはデータが存在するDataNodeによって処理されます。
Hadoopクラスターアーキテクチャ
NameNodeとDataNodeに関連する前のトピックでは、この用語を使用しました 「Hadoopクラスター」。 それが正確に何であるかを簡単に見てみましょう。
上の画像は、Hadoopクラスターアーキテクチャの概要を示しています。 Hadoopクラスターはマスタースレーブトポロジに他なりません。上部に表示されているマスターマシン、つまりHadoopクラスターがあります。このマスターマシンには、NameNodeとリソースマネージャーが実行されています。つまり、マスターデーモンです。
マスターマシンはコアスイッチを使用してすべてのスレーブマシンに接続されています。これは、これらのDataNodeが実際にはさまざまなラックに格納されているため、コンピューター1、コンピューター2、コンピューター3からコンピューターNまでが表示されます。これはスレーブに他なりません。マシンまたはDataNodeとそれらはすべて1つのラックに存在します。
「ラックは実際には、ある特定の場所に物理的に存在し、相互に接続されているマシンのグループです。」
したがって、各マシン間のネットワーク帯域幅は可能な限り最小になります。同様に、より多くのラックがありますが、それらは同じ場所に存在しないため、「n」個のラックを配置でき、これらのラック内に「n」個のDataNode、コンピューター、またはスレーブマシンを配置することもできます。
これは、スレーブマシンが実際にクラスター全体に分散される方法ですが、同時に相互に接続されます。
データはHDFSにどのように保存されますか?
現在、HDFSがどのように機能するかについての詳細にゆっくりと移行しています。ここでは、HDFSのアーキテクチャについて説明します。
ファイルをHDFSに保存すると、データはブロックとしてHDFSに保存されます。ファイル全体がHDFSに保存されるわけではありません。これは、ご存知のとおり、Hadoopが分散ファイルシステムであるためです。
したがって、ファイルサイズがおそらく1 PB(ペタバイト)の場合、Hadoopクラスターはコモディティハードウェアを使用して作成されるため、この種のストレージは単一のマシンには存在しません。 1台のマシンのハードウェアは約1TBまたは2TBになります。
したがって、ファイル全体をHDFSブロックと呼ばれるデータのチャンクに分割する必要があります。
- 各ファイルはブロックとしてHDFSに保存されます。
- 各ブロックのデフォルトサイズは、Apache Hadoop2.xでは約128MB(以前のバージョン、つまりApache Hadoop 1.xでは64 MB)です。
- 構成ファイル、つまりHadoopパッケージに付属のhdfssite.xmlを使用して、ブロックのファイルサイズを増減する機能があります。
このメカニズムを理解し、これらのブロックがどのように作成されるかを確認するために例を見てみましょう。
ここで248MBのファイルを考えてみましょう。このファイルを分割するか、このファイルをHadoopクラスター(2.x)に移動すると、このファイルは1つのブロック(128 MBのブロックAと別のブロックB)に分割されます。 120MBの。
ご覧のとおり、最初のブロックは128 MBです。つまり、最初のスラブがそこで切り詰められます。そのため、他のブロックは128MBではなく120MBです。つまり、残りのファイルサイズが小さければ、スペースを無駄にすることはありません。デフォルトのブロックサイズより。
今、私たちの目の前に別の問題があります。つまり、各ブロックのコピーを1つ持っていても安全ですか?
.binファイルを開く方法
システムが故障する可能性があり、それは私たちが大きな問題を抱えているかもしれないコモディティハードウェアに他ならないので、答えはノーです。この問題を克服するために、HadoopHDFSには優れたソリューションがあります。 「ブロックの複製」。
Hadoopアーキテクチャブロックレプリケーション
Hadoopは、Hadoop分散ファイルシステムに保存されるすべてのブロックのレプリカを作成します。これが、Hadoopがフォールトトレラントシステムである方法です。つまり、システムに障害が発生したり、DataNodeに障害が発生したり、コピーが失われたりしても、他に複数のコピーがあります。他のDataNodeまたは他のサーバーに存在するため、そこからいつでもそれらのコピーを選択できます。
ブロックレプリケーションを表す上記の図に示されているように、ファイルには5つの異なるブロック、つまりブロック1、2、3、4、5があります。最初にブロック1を確認してみましょう。ブロック1のコピーは、ノード1、ノード2、ノード4にあります。
同様に、ブロック2にも3つのコピー、つまりノード2、ノード3、ノード4があり、それぞれのノードのブロック3、4、5でも同じです。
したがって、レプリカが作成されることを除いて、すべてのブロックが3回複製されます。つまり、Hadoopはデフォルトの複製係数3に従います。つまり、Hadoop配布ファイルシステムにコピーするファイルはすべて3回複製されます。
つまり、1GBのファイルをHadoopDistribution File Systemにコピーすると、実際には3GBのファイルがHDFSに保存されます。良い点は、Hadoopの構成ファイルを変更することで、デフォルトのレプリケーション係数を変更できることです。
Hadoopはレプリカを保存する場所をどのように決定しますか?
Hadoopは、実際にはRack Awarenessの概念に従って、ブロックのどのレプリカを格納するかを決定します。
以下に、ラック認識アルゴリズムを示す図を示します。
Rack-1、Rack-2、Rack-3の3つの異なるラックがあります。
Rack-1には4つのDataNodeがあり、Rack-2とRack-3も同様です。したがって、合計でHadoopクラスター全体が3つのラックすべてで構成され、12のDataNodeが存在します。
ラック認識の概念に従って、ブロックAがラック1のDataNode 1にコピーされたとします。ブロックAのレプリカを同じラックに作成することはできず、ラック1以外のラックに作成する必要があります。メインファイルはすでにRack-1に存在します。
同じRack-1にブロックAのレプリカを作成し、Rack-1全体に障害が発生した場合、確実にデータが失われるため、レプリカは他のラックに保存する必要がありますが、Rack-1には保存しないでください。
したがって、レプリカはRack-2のDataNode6および8に作成されます。同様に、ブロックBとブロックCの場合、上の図に示すように、レプリカは異なるラックに作成されます。
結論
このチュートリアルから次のポインタで学びました-
- Hadoop HDFSは、BigDataのストレージの問題を解決します。
- Hadoop Map Reduceは、BigDataの処理に関連する問題を解決します。
- NameNodeはマスターデーモンであり、DataNodeを管理および保守するために使用されます。
- DataNodeはスレーブデーモンであり、実際のデータはここに保存されます。これは、クライアントからの要求の読み取りと書き込みに役立ちます。
- Hadoopクラスターでは、ラックは実際には1つの特定の場所に物理的に存在し、相互に接続されているマシンのグループです。
- 各ファイルはブロックとしてHDFSに保存されます。
- 各ブロックのデフォルトサイズは、Apache Hadoop2.xでは約128MBです(以前のバージョン、つまりApache Hadoop1.xでは64MB)
- 構成ファイル、つまりHadoopパッケージに付属のhdfssite.xmlを使用して、ブロックのファイルサイズを増減する機能があります。
HDFSに関する次のチュートリアルでは、HDFSアーキテクチャと読み取りおよび書き込みメカニズムについて学習します。
=> すべてのビッグデータトレーニングシリーズを見るには、こちらにアクセスしてください。
推奨読書
- Hadoopとは何ですか?初心者向けのApacheHadoopチュートリアル
- Unixでのファイル操作:Unixファイルシステムの概要
- ファイル操作用のUnix特殊文字またはメタ文字
- Unixファイルアクセス許可:Unix Chmod、Chown、Chgrp
- Ranorex Test Suite、テストモジュールの作成、UserCodeファイル、Xpath、およびデータバインディング
- VBScriptファイルオブジェクト:CopyFile、DeleteFile、OpenTextFile、テキストファイルの読み取りと書き込み
- C ++でのファイル入出力操作
- Javaデプロイメント:JavaJARファイルの作成と実行