このブログはすべてHDFSイレイジャーコーディングに関するものです。このブログでは、 Hadoopでのイレイジャーコーディングの概念について説明します。 、古いレプリケーションスキームの問題。このブログでは、XORアルゴリズム、リードソロモンアルゴリズムなどのHadoopイレイジャーコーディングの2つのアルゴリズムについても説明しています。
最後に、HadoopHDFSのイレイジャーコーディングのアーキテクチャと利点について説明します。
古いスキームの複製に関する問題
HDFSイレイジャーコーディング は、3倍のレプリケーションと比較してストレージのオーバーヘッドを約50%削減するために導入された新機能です。 Hadoop HDFSは、さまざまな目的で各ブロックを3回複製します。データノードの障害から保護するための冗長性は非常に単純な形式です。
長所に加えて、それは非常に高価であるというさまざまな短所があります。 3 xレプリケーションでは、ストレージスペースおよびその他のリソースに200%のオーバーヘッドがあります。 I / Oアクティビティが少なく、追加のレプリカが通常の操作中にアクセスされることはめったにありませんが、それでも他のリソースを消費するデータセット。
これが、Hadoopイレイジャーコーディングが誕生した理由です。スペースストアが少なく、ストレージオーバーヘッドが50%で、同じレベルのフォールトトレランスを提供します。
異なるストレージスキームを比較する場合、重要な考慮事項は次のとおりです。
- データの耐久性(同時にフォールトトレランスの数)
- ストレージ効率
したがって、Nウェイレプリケーションでは、1/nのストレージ効率でN-1のフォールトトレランスがあります。
HadoopでのHDFSイレイジャーコーディングとは何ですか?
HDFSErasureCodingはRAIDを使用します 。 RAIDはECがストリッピングを使用することを実装します。ストリッピングは、データをブロックの形式で論理的に格納します。次に、これらのブロックを保存します 別のディスクに。各ブロックのパリティを計算して保存します。これはエンコードされています。パリティを介してエラーを回復します。
フォールトトレランスのために、ECは冗長データでメッセージを拡張します。 HDFSイレイジャーコーディングは、均一なサイズのデータセルで動作します。 コーデック 多数のデータセルを入力として受け取ります。そして、出力としてパリティセルを生成します。
このプロセス全体は、エンコーディングと呼ばれます。パリティとデータセルを合わせて、イレイジャーコーディンググループと呼びます。失われたデータセルが残りのセル上で再構築されるプロセスは、デコードと呼ばれます。
HDFSErasureCodingで使用できる2つのアルゴリズムは次のとおりです。
a)XORアルゴリズム
これは、Hadoopイレイジャーコーディングの単純な実装です。
データセルXとYおよびZがデータセルであると仮定すると、パリティセルはこれら3つのデータセルのXORですx⊕y⊕z したがって、XOR演算中は、1つのパリティビットのみが生成され、いずれかのビットが失われた場合、残りのデータセルとパリティビットによって回復できます。
1つのパリティビットを生成するため、非常に制限されているため、XOR演算はnグループサイズで1つの障害のみを許容できます。
「XOR操作のフォールトトレランス1で、グループサイズがn-1 / nの場合、ストレージ効率はn-1/nです。 n。 」
b)リードソロモンアルゴリズム
Reed-Solomonは、XOR操作の制限に対処します。線形代数を使用して、複数のパリティセルを生成します。 RSは2つのパラメータkとmを使用し、kはデータセルの数、mはパリティセルの数です。
RSは、k個のデータセルに生成行列(G)を掛けて、k個のデータセルとm個のパリティセルを持つ拡張コードワードを生成することで機能します。 k + m個のセルのうちk個が使用可能である限り、生成行列の逆行列に拡張コードワードを乗算することで、ストレージ障害を回復できます。
「リード、ソロモンフォールトトレランス 最大m個のセルとストレージ効率k/ k + mここで、kはデータセル、mはパリティセルです。」
設計の決定とアーキテクチャ
ECストライピングにはいくつかの利点があります:
- ストリッピングにより、オンラインEC(EC形式でデータをすぐに書き込む)が可能になり、変換フェーズが回避され、ストレージスペースがすぐに節約されます。
- 小さなファイルを複数のデータノードに配布します。複数のファイルを単一のコーディンググループにバンドルする必要がなくなります。したがって、フェデレーションされた名前空間間の削除や移行などのファイル操作が簡素化されます。
- 小さなファイルをより適切にサポートするために、ECはストリッピングをサポートしています。将来的には、HDFSは連続したECレイアウトもサポートする予定です。
ECが追加した多くの新しいコンポーネントは次のとおりです。
- NameNode拡張機能 (ECManager )– Stripe HDFSファイルは、論理的にブロックグループで構成されています。それぞれに特定の数の内部ブロックが含まれています。これらの追加ブロックによるNamenodeのメモリ消費を削減するために、新しい階層ブロック命名プロトコルが導入されました。 ECは、その内部ブロックのIDからブロックグループのIDを推測します。これにより、ブロックではなくブロックグループのレベルでの管理が可能になります。
- クライアント拡張機能(ECクライアント)– クライアントは、ブロックグループ内の複数の内部ブロックに対して並列に読み取りおよび書き込み操作を実行できます。
- DataNode Extensions(ECWorker)- DataNodeは、失敗したイレイジャーコード化ブロックを回復するために追加のECワーカータスクを実行します。したがって、NameNodeは障害が発生したECブロックを検出し、namenodeはデータノードに回復命令を出します。次に、回復タスクをハートビート応答として渡します。
イレイジャーコーディングのメリット
- 低容量でのデータの可用性: HDFS イレイジャーコードは、より少ない容量でのデータ可用性を可能にします。最初に、3つのレプリカでブロックを複製します。そのため、3つのレプリカのストレージスペースが大きくなります。しかし、現在のイレイジャーコーディングでは、大きなデータをパリティビットとして格納するため、ストレージによってスペースが削減されます。
- パフォーマンス: ECはデータを3つのレプリカではなくパリティとして保存するため、パフォーマンスが向上します。
- 高速リカバリ: HDFSブロックエラーをアクティブ(バックグラウンド)とパッシブ(読み取りパス)の両方で検出して回復します。
結論
結論として、HDFS Erasureコーディングにより、ストレージのオーバーヘッドが50%削減されたと言えます。 ECは、パリティビットのためにオーバーヘッドを削減します。したがって、これらのHDFS機能 ApacheHadoop機能を強化します。
HDFSのErasureCodingに関する質問や提案がある場合は、以下のセクションでコメントしてください。