Hadoop における HDFS のアーキテクチャ

1. switch ステートメント

文法規則:
①ステートメント内の変数の型は byte、short、int、char のいずれかになります; javaSE5 以降、列挙型がサポートされます; javaSE7 以降、switch は String をサポートします。
② ブレークがない場合は、後続の case 文が実行されます。

2. 修飾子

アクセス修飾子

Java では、アクセス制御シンボルを使用して、クラス、変数、メソッド、コンストラクターへのアクセスを保護できます。Java は 4 つの異なるアクセス権をサポートしています。

デフォルト (つまり、デフォルト、何も書かない): 修飾子なしで、同じパッケージ内で表示されます。クラス、インターフェイス、変数、メソッドなどのオブジェクトを使用します。

private : 同じクラス内で表示されます。使用されるオブジェクト: 変数、メソッド。注: クラスは変更できません (外部クラス)

public : すべてのクラスに表示されます。使用されるオブジェクト: クラス、インターフェイス、変数、メソッド

protected : 同じパッケージ内のクラスとすべてのサブクラスに表示されます。使用されるオブジェクト: 変数、メソッド。注: クラス (外部クラス) は変更できません。

非アクセス修飾子

static : classname.variablename と classname.methodname を使用してアクセスできます
Final : Final メソッドはサブクラスによって継承できますが、サブクラスによって書き換えることはできません
abstract : 抽象クラスの唯一の目的は、将来クラスを拡張することです
synchronized :変更されたメソッドは同じです。 時間は 1 つのスレッドによってのみアクセスできます。
transient : シリアル化されたオブジェクトに transient によって変更された変数が含まれている場合、JVM はその特定の変数をスキップします。
(一時的な言葉の意味: つかの間の、短命な; 一時的な、(仕事) 一時的な)

永続性: 永続性は、プログラム データを永続状態と一時状態の間で変換するためのメカニズムです。永続性、つまり、データ (メモリ内のオブジェクトなど) を永続的に保存できるストレージ デバイスに保存します。

したがって、一時的に変更された変数は永続化されません。

volatile : 翻訳 -> 変わりやすい、乱流、気まぐれ; (感情) 変わりやすい、イライラしやすい、突然の発症; (液体または固体) 揮発性、ガス化; (コンピューターのメモリ) 揮発性。

volatile によって変更されたメンバー変数は、スレッドによってアクセスされるたびに共有メモリーからメンバー変数の値を強制的に再読み取りします。さらに、メンバー変数が変更されると、スレッドは変更された値を共有メモリに書き戻すことを強制されます。このようにして、いつでも、2 つの異なるスレッドが常にメンバー変数の同じ値を参照します。

3.HDFS

HDFS (Hadoop 分散ファイル システム) は、分散ファイル管理システムです。ファイルはアップロード後に変更できないため、1 回の書き込みと複数回の読み出しのシナリオに適しています。

1 メリットとデメリット

アドバンテージ

  1. 高い耐障害性: コピーが失われた後、自動的に復元できます。
  2. 大容量データの処理に最適:ファイルサイズが大きくても、ファイル数が多くても処理可能。
  3. 安価なマシン上に構築でき、マルチコピー メカニズムを通じて信頼性を提供します。

欠点がある

  1. 低レイテンシーのデータアクセスには適さない: データをミリ秒単位で保存できない
  2. 多数の小さなファイルを効率的に保存することはできません。ファイル ディレクトリとブロック情報を保存するために大量の NameNode メモリを占有します。小さなファイル ストレージのシーク時間は読み取り時間を超える可能性があり、HDFS の設計目標に違反します。
  3. 同時書き込みとランダムなファイル変更はサポートされていません。データの追加のみがサポートされ、ファイルのランダムな変更はサポートされていません。

2 HDFS アーキテクチャ

①NameNode: マスター、スーパーバイザー、マネージャー
(1) HDFS 名前空間を管理する;
(2) コピー戦略を構成する; (
3) データ ブロック (Block) マッピング情報を管理する;
(4) クライアントの読み取りおよび書き込み要求を処理する
②DataNode:Slaveであり、NameNodeがコマンドを発行し、DataNodeが実際の動作を行います。
(1) 実際のデータ ブロックを保存する;
(2) データ ブロックの読み取り/書き込み操作を実行する;
③クライアント
(1) ファイルの分割: NameNode のファイル サイズに応じて分割、Hadoop2.x/3.x のデフォルトは 128MB、 1.x バージョンは 64M、
(2) NameNode と対話してファイルの場所情報を取得、
(3) DataNode と対話してデータの読み取りまたは書き込み、
(4) クライアントは、HDFS の管理、追加、削除、変更、および関連するチェックを行ういくつかのコマンドを提供します。操作する。

④セカンダリNameNode:NameNodeのホットスタンバイではありません。NameNode がハングアップすると、NameNode をすぐに置き換えてサービスを提供することはできません。
(1) Fsimage と Edits を定期的にマージし、NameNode にプッシュするなど、NameNode のワークロードを共有するのを支援します;
(2) 緊急の場合、NameNode の回復を支援できます。
HDFS アーキテクチャ図

3つのファイルブロック

最良の状態は、アドレス指定時間が送信時間の 1% である場合です。機械式ハードディスクは 128MB、ソリッドステート ハードディスクは 256MB を推奨します。

  • ファイル ブロックが小さすぎるとシーク時間が長くなり、プログラムはブロックの先頭を探します。
  • ファイル ブロックが大きすぎる場合、ディスクからデータを転送する時間が、ブロックの場所を見つけるのに必要な時間よりも大幅に長くなり、その結果、このデータ ブロックの処理が非常に遅くなります。

おすすめ

転載: blog.csdn.net/qq_44273739/article/details/131863988