分散アルゴリズム

分散アルゴリズム

転送:https://blog.51cto.com/alanwu/1431397

 

分散メモリが直面する重要な問題は、複数のストレージノード間でデータのどのディストリビューションです。GFSに学び、そのような学生は、ファイル・システムは、ストレージノード上にマッピングされたデータ・ブロックを配布することを決めているメタデータサーバ(MS)を使用することができます知っています。メタデータ・サーバを使用すると、コマンド空間マッピング情報は、メタデータサーバ上のファイルから直接得ることができたときに、ファイルシステムにアクセスし、データおよびメタデータを分離するのに良い方法することができます。以下に示すように、MSベースのストレージアーキテクチャを分散。

 

wKioL1OsPT3CtySKAAEjsk0Zj-Y415.jpg

 

メタデータサーバベースのアプローチは明らかに完璧なものの、分散ストレージの古典的なアーキテクチャですが、以下の2つの大きな問題がまだ存在します。

1は、スケーラビリティは、メタデータ・サーバの容量によって制限されています。すべてのメタデータ情報は、上記集中型のメタデータ・サーバであるため、クライアントは、メタデータを取得したいときにサーバーにアクセスする必要があります。したがって、全体的な負荷容量(クライアントの数)は、メタデータサーバへの能力によって制限されます。メタデータサーバは、分散システム全体に潜在的なチョークポイントです。クライアントは、メタデータを大量に生成されます、小さなファイルにアクセスする場合は特に、その後、メタデータサーバは、システム性能のボトルネックになります。

図2に示すように、メタデータサーバは、分散システムにおける単一障害点です。メタデータ・サーバに障害が発生したら、全体の分散ストレージシステムは、そのため、メタデータサーバの信頼性が特に重要であり、機能しません。

、サーバーの拡張性と信頼性をメタデータの分散メモリ・アーキテクチャに基づいて最大の問題を総括するには。そして、コア・ポイントは、これらの問題は、メタデータサーバ上にあることです。この点で、システムの最適化ツールの多くは性欲に影響を与えるメタデータ・サーバ・システムのスケーラビリティの問題は、例えば、そこにある、分散メタデータサーバを容易にするために採用できることを意味し、しかし、さらに分散メタデータサーバの間でデータを紹介します同期と相互に排他的なロックの問題を。故障のメタデータ・サーバの問題の一点に関しては、HA手段は、システムの信頼性を向上させるために使用することができ、多くのメーカーは、Hadoopの分散ファイルシステムのメタデータ・サーバHAの多くを行うようにしてください。

しかし、どんなに最適化、分散格納方式のメタデータ・サーバを使用すると、直線的に拡張の目的を達成することはできません。実質的スケーラビリティLOG曲線は、いくつかの方法のペアを示します。直線的にスケーラブルな能力を達成するために、業界では、中央に、つまり、メタデータ・サーバを削除する方法を検討し始めました。どのアルゴリズムハッシュアルゴリズム、整合性ハッシュアルゴリズム、弾性ハッシュアルゴリズムとCRUSHアルゴリズムを開発しました。ここでは一貫性のハッシュアルゴリズムに焦点を当てました。

それはHASHを一貫して来るとき、私たちは、最初のハッシュアルゴリズムを検討する必要があります。ハッシュアルゴリズムは、以下のように記述することができる分散ストレージ、非常に簡単です。

 

wKioL1OsPVjBJ6ZGAAD1rNlM2vU473.jpg

 

ファイルは、クライアントストレージに書き込まれるとキー値がハッシュ値を計算しているとして使用することができ、ファイルのパスを必要とする、ハッシュアルゴリズムは、良好な分布が必要です。N-1にこのハッシュ値は、その後数Nとストレージノード行うモジュロ演算、0〜結果に到達した、結果は、ストレージノードIDにアクセスする必要があることです。観点からこの方法で、レイアウトファイルとの間のマッピング関係は、メタデータサーバのストレージノードに介入する必要があるファイル、およびHASH関数によって決定ストレージノード、および計算されていません。

ハッシュアルゴリズムは、非常に完璧に見えるが、その問題は、ノードの後、動的に増加すると、このデータマッピング関係があるため、ハッシュアルゴリズムの破壊Nに変更されることがあります。新しいマッピング関係を確立するために、我々は大規模分散ストレージで発生することが許可されていないデータ移行作業を大量に導入する必要がありました。、一貫性のハッシュアルゴリズムの導入をこの問題を解決するには。

核となるアイデアは、これらのタグの値は、このハッシュ値空間に属し、空間領域を作成し、すべてのストレージノードのタグ値を割り当てるために、結果のHASHの一貫性をハッシュすることです。この関係は、一般に、ハッシュリングとして記述することができ、この空間は、ハッシュリングを構成し、すべてのストレージノードのリング上の点です。これは次のように説明することができます。

 

wKioL1OsPXOBhOKMAACQVrK-zOM449.jpg

 

ファイルはクライアントストレージのニーズに書き込まれると、パラメータと同じファイルパスは、ハッシュ関数であっても、その後、ハッシュ値を取得することができます。結果の値は、間違いなくそれは上記対応するHASHリングでポイントを見つけて確実である、HASHハッシュ値空間に属します。例えば、この点は、SN1及びSN2の間に配置されています。合意によれば、データポイントとして記憶されている時計HASH値に最も近いノードから選択することができます。このファイルには、新たに書き込まれたSN2に格納することができます。

一貫性ハッシュアルゴリズムの最大の利点は、ストレージノードを追加した後、データの大規模な移動です。後SN1及びSN2の間には、SN8を追加した場合、例えば、前述の例では、次いで、以前にSN2に格納されたデータの一部がSN8に移行する必要がある、しかし、残りのノードは、任意のデータ移行の操作を必要としません。

 

wKioL1OsPYzjtXotAACekkfmy_A840.jpg

 

明らかに、この方法は、大幅にデータ移行の量を削減するだけでなく、優れたメタデータサーバによって引き起こされる問題を避けるために。したがって、ハッシュアルゴリズムの一貫性が広くCDNシステム、SWIFTオブジェクト・ストレージ・システム、Amazonのダイナモ・ストレージ・システムに適用されています。

おすすめ

転載: www.cnblogs.com/gongxin12/p/11357333.html