JP2017519258A - ワイド・エリア・ネットワーク上で同等の名前空間レプリカを用いる地理的に分散したファイルシステム - Google Patents

ワイド・エリア・ネットワーク上で同等の名前空間レプリカを用いる地理的に分散したファイルシステム Download PDF

Info

Publication number
JP2017519258A
JP2017519258A JP2016553377A JP2016553377A JP2017519258A JP 2017519258 A JP2017519258 A JP 2017519258A JP 2016553377 A JP2016553377 A JP 2016553377A JP 2016553377 A JP2016553377 A JP 2016553377A JP 2017519258 A JP2017519258 A JP 2017519258A
Authority
JP
Japan
Prior art keywords
data
nodes
node
name
namespace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016553377A
Other languages
English (en)
Other versions
JP6628730B2 (ja
Inventor
コンスタンチン ブイ シュヴァチェコ
コンスタンチン ブイ シュヴァチェコ
イエツール アーラット
イエツール アーラット
ジェーガネ サンダー
ジェーガネ サンダー
プラメン ジュリアスコフ ジュリアスコフ
プラメン ジュリアスコフ ジュリアスコフ
Original Assignee
ワンディスコ,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/231,311 external-priority patent/US9495381B2/en
Application filed by ワンディスコ,インク. filed Critical ワンディスコ,インク.
Priority claimed from PCT/US2015/018680 external-priority patent/WO2015153045A1/en
Publication of JP2017519258A publication Critical patent/JP2017519258A/ja
Application granted granted Critical
Publication of JP6628730B2 publication Critical patent/JP6628730B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems

Abstract

ノードのクラスターは、少なくとも第1及び第2のデータセンター及び調整エンジンプロセスを含む単一の分散ファイルシステムを実行する。第1のデータセンターは、クライアントファイルのデータブロックを格納するように構成される第1のデータノードと、クラスターの名前空間の状態を更新するように構成される第1の名前ノードとを含み得る。第2のデータセンターは、第1のデータセンターと地理的に離れており、ワイド・エリア・ネットワークによって第1のデータセンターと結合され、クライアントファイルのデータブロックを格納するように構成される第2のデータノードと、名前空間の状態を更新するように構成される第2の名前ノードとを含み得る。第1及び第2の名前ノードは、複数のデータノードにデータブロックが書き込まれたことに応答して、前記名前空間の前記状態を更新するように構成される。調整エンジンプロセスは、第1及び第2の名前ノードに広がり、名前空間の状態が第1及び第2のデータセンターにわたって首尾一貫した状態に保たれるよう、該名前空間に対する更新を調整する。【選択図】図2

Description

本願は、主題において、本願と同一出願人によるものであり、かつ本願と同時に係属中である2013年8月29日出願の米国特許出願14/013,948及び2013年9月30日出願の米国特許出願14/041,894に関連する。本願はまた、主題において、本願と同一出願人によるものであり、かつ本願と同時に係属中である2008年2月13日出願の米国特許出願12/069,986に関連する。この米国特許出願12/069,986は、既に米国特許8,364,633として登録されている2006年1月11日出願の米国特許出願11/329,996の分割出願である。米国特許8,364,633は、2005年1月12日出願の米国仮出願60/643,257、2005年1月12日出願の米国仮出願60/643,258、2005年1月12日出願の米国仮出願60/643,269の利益を主張している。この出願はまた、主題において、本願と同一出願人によるものであり、かつ本願と同時に係属中であり、さらに2012年12月28日出願の米国仮出願61/746,867の利益を主張する2013年3月15日出願の米国特許出願12/835,888に関連し、また、主題において、本願と同一出願人によるものであり、かつ本願と同時に係属中であり、さらに2012年12月28日出願の米国仮出願61/746,940の利益を主張する2013年3月15日出願の米国特許出願13/837,366に関連する。これらそれぞれの開示は、その全体において、参照することにより本書に組み込まれる。
本書に開示される実施の形態の分野は、分散ファイルシステムを含む。特に、実施の形態は、例えばインターネットを含むワイド・エリア・ネットワーク(WAN)上で地理的に分散した名前ノード及びデータノードを用いる分散ファイルシステム(及び、それによって可能とされる機能)に関連する。
Lamport,L.、「The Part Time Padiament,ACM Transactions on Computer Systems 16,2」、1998年5月、p.133−169 Bernstein等、「Concurrency Control & Recovery in Database Systems」、Addison Wesley、1987年、6,7,8章
従来のHDFS実装を示す図である。
分散ファイルシステムについて、一実施の形態によるコンセンサス名前ノードを更新することの側面を示す図である。
一実施の形態による、分散ファイルシステム内におけるブロックの複製と生成の方法の側面を説明する図である。
一実施の形態による、ブロックの複製のさらなる側面を説明する図である。
一実施の形態による、ブロックの複製のさらなる側面を説明する図である。
一実施の形態による、複数のコンセンサス名前ノードにわたってユニークとなるようにブロック識別子が生成され得る1つの方法を説明する図である。
一実施の形態による、クライアントファイルのデータブロックを格納するように構成された複数のデータノードを含む分散ファイルシステムを実行するコンピュータに実装された方法を示すフローチャートである。
一実施の形態による、WANに広がる分散ファイルシステムの構成要素を示すブロック図である。
一実施の形態による方法を示すフローチャートである。
ハドゥープ分散ファイルシステム(HDFS)名前空間は、ファイルとディレクトリの階層である。ファイル及びディレクトリは、アイノード(アイノード)によって、名前ノード上に表現される。アイノードは、許可、修正及びアクセスの時刻、名前空間、及びディスク空間の割当量などの属性を記録する。ファイルの内容は、大きなデータブロック(典型的には128MB)に分割され、ファイルの各データブロックは、複数(典型的には3つ)のデータノードで独立して複製される。名前ノードは、HDFSのメタデータサービスであり、名前空間の操作に対して責任を負っている。名前ノードは、名前空間ツリーと、データブロックへのブロックのマッピングとを維持する。すなわち、名前ノードは、ハドゥープクラスタ内でデータの位置を追跡し、それらにクライアントアクセスを適合させる。従来、各クラスタは単一の名前ノードを有する。各データノードは複数のアプリケーションタスクを同時に実行することができるので、クラスタは、クラスタごとに、数千のデータノードと、数万のHDFSクライアントとを持つことができる。アイノードと、名前システムのメタデータを定義するデータブロックのリストとは、イメージと呼ばれる。名前ノードは、RAM内に名前空間の全体を保持する。イメージの永続的な記録は、チェックポイント、及び、そのチェックポイントが生成されてから実行された名前空間に対する更新を表すジャーナルとして、名前ノードのローカルなネイティブファイルシステム内に格納される。
分散システムは、ノードと呼ばれる様々な構成要素からなる。システムを無矛盾に保つために、ノード間に分散された様々なイベントを調整することが必要になり得る。すべてのノードにより無矛盾で学ばれなければならない特定のイベントを調整するための最も簡単な方法は、指定された単一のマスターを選び、他のノードがそのマスターからイベントを学べるよう、そのマスターにそのイベントを記録することである。簡単ではあるけれども、単一のマスターの障害がシステム全体の前進を麻痺させることから、このアプローチは信頼性に欠ける。この認識の下、図1に示すように、従来のHDFS実装は、通常動作時にアクセスされるアクティブ名前ノード102と、アクティブ名前ノード102が障害となった場合にフェイルオーバーとして使用されるスタンバイ名前ノード104と呼ばれるバックアップとを使用する。
図1に示すように、従来のHDFSクラスタは、次のように動作する。HDFSクライアントが、例えばファイル又はディレクトリを生成するためにリモート・プロシージャ・コール(RPC)を発行したときのように、名前空間に対する更新が要求されたとき、アクティブ名前ノード102は、図1に示すように、
1.クライアントから要求(例えば、RPC)を受信し、
2.そのメモリ状態に直ちに更新を適用し、
3.共有の永続的記憶装置106(1つ以上のハード・ドライブを含むネットワーク接続ストレージ(NAS)のようなもの)にジャーナルとして更新を書き込み、成功の通知をクライアントに返す。
スタンバイ名前ノード104は、今や、自身の状態を更新することによりアクティブ名前ノード102との首尾一貫性を維持しなければならない。その目的のためにスタンバイ名前ノード104は、
4.トランザクション・ジャーナル106からジャーナル・トランザクションを読み出し、
5.自身の状態を更新する。
しかしながら、この方法は最適ではない解決法であると信じられている。例えば、このスキームでは、トランザクション・ジャーナル106自身が単一障害点となる。実際、トランザクション・ジャーナル106が破損すると、スタンバイ名前ノード104がアクティブ名前ノード102と同じ状態であることは仮定できなくなり、アクティブからスタンバイへのフェイルオーバーはもはや不可能となる。
さらに、クラスタごとにただ1つのアクティブ名前ノードをサポートするハドゥープ・ソリューションでは、スタンバイ・サーバは典型的には、上記したように、ネットワーク接続ストレージ(NAS)装置を介して同期状態に維持される。もしアクティブ名前ノードが障害を起こし、スタンバイが引き継がなければならなくなったとして、もしアクティブ名前ノードに書き込まれた変更がまだNASに書き込まれていなかったとしたら、データ損失の可能性がある。フェイルオーバーの管理者エラーは、さらなるデータ損失を引き起こし得る。さらに、もしアクティブサーバがスタンバイサーバと通信できないけれども、クラスタ内の他のマシンとは通信できるようなネットワーク障害が起きたとしたら、そして、スタンバイサーバが誤ってアクティブサーバが死んだと思い込み、アクティブの役割を引き継ぐとしたら、2つのノードがそれぞれアクティブ名前ノードであると信じる「分離脳」として知られる病的なネットワーク状態が発生する。この状態は、データの破損を引き起こし得る。
例えば、ランポート.Lによって書かれ、全体として本書に取り込まれる「The Part-Time Parliament, ACM Transactions on Computer Systems 16, 2 (May 1998), 133-169」には、プロポーザ(メンバーシップに対する提案を行う処理)、アクセプタ(メンバーシップにより同意されるべきか否かを投票する処理)、及びラーナー(作成済みの同意を学ぶメンバーシップ内の処理)の役割が定義されている。一実施の形態によれば、上記役割のそれぞれに複数のノードが構成され得る。(図2の208で示されるような)調整エンジンは、高い可用性を実現するため、複数のアクセプタの助けを借りた複数のプロポーザによってエンジンに提出されたイベントの順序について、複数のラーナーが同意することを許可することができる。一実施の形態によれば、信頼性、可用性、及び拡張性を達成するため、複数のノードにおいて名前空間の状態を複製することによって、複数の同時にアクティブな名前ノードが、名前空間が複製されるノードの状態がそれらのノード間で首尾一貫した状態を維持することの要求とともに提供され得る。
名前ノード間のこの一貫性は、提案を受け付けて名前空間を更新し、提案をグローバルな更新の配列に整備し、その後にのみ、各名前ノードが更新を学び、同意された順序で個々の状態に適用することを許可する調整エンジンによって保証され得る。ここで、「一貫性」は、1987年にアディソン・ウェスリーによって発行され、全体として本書に取り込まれるバーンスタインらの「Concurrency Control & Recovery in Database Systems」の第6章、第7章、第8章に詳述されているように、ワンコピー・エクイバレンス(One-Copy Equivalence)を意味する。各名前ノードは、同じ状態からスタートし、同じ決定論的な更新を同じ決定論的な順序で適用するものであるから、それぞれの状態は一貫した状態に保たれる。
一実施の形態によれば、名前空間はそれゆえ、以下の点を条件として複数の名前ノード上で複製され得る。
a)各ノードがその名前空間のレプリカを修正することについて許可されている。
b)ある名前空間のレプリカに対する更新は、名前レプリカが複数のノードにわたって互いに一貫性を保つよう、他のノード上の名前空間のレプリカに伝搬されなければならない。
I.ローカル・エリア・ネットワーク(LAN)上の分散ファイルシステム
一実施の形態はそれゆえ、最も問題となる可用性にインパクトを与える単一障害点、すなわち1つの名前ノードを取り除く。慣習的には、もし1つの名前ノードが利用できなくなると、ハドゥープクラスタはダウンし、アクセスを復活させるために複雑なフェイルオーバーの手続き(以前のアクティブ名前ノードからスタンバイ名前ノードへ切り替えることなど)が必要となる。この潜在的な単一障害点を扱うため、一実施の形態は、複数のアクティブ名前ノードサーバ(以下では、コンセンサス・ノード又はCノードなど様々な呼び方をする)に対し、それぞれが連続的に同期され、かつ、MapReduceを用いるバッチ・アプリケーションやHBaseを用いるリアルタイム・アプリケーションのためのアクセスを含むクライアントアクセスを同時に提供する仲間として振る舞うことを許可する。一実施の形態によれば、名前ノードが障害状態となったり、メンテナンス又はユーザによる他の理由のためにオフラインとなるとき、他の仲間のアクティブ生江ノードサーバは常に利用可能であり、このことは、HDFSメタデータに対する読み出し又は書き込みのアクセスに中断がないことを意味する。このサーバがオンラインに戻るとすぐに、その名前ノードは、自動的に回復し、合間に発生した可能性のある名前空間に対するすべての新たな変更を通告され、クラスタ上の他のすべての名前ノードの名前空間を一致させるべくその名前空間を同期させる。この名前ノードは、他のノードが変化を学んだときと同じ決定論的な順序で変化を学ぶので、他のレプリカと調和した状態になるであろう。
図2は、分散ファイルシステムについて、LAN環境における特定の実用性を見い出す一実施の形態によるコンセンサス・ノードを更新することの側面を示す図である。一実施の形態によれば、クラスタは、単一のアクティブ名前ノード及びスタンバイ名前ノードではなく、調整エンジン208によって調整される複数(好ましくは奇数。例えば、3,5,7・・・)の名前ノードを含み得る。上述したように、本明細書では、調整された名前ノードはコンセンサス・ノードと呼ばれ、以下ではCノードと称する。図2に示すように、一実施の形態は、それぞれ調整エンジン208とつながれた3つのCノード202,204,206を含み得る。一実施の形態によれば、調整エンジン208は、ネットワーク上で互いの連携を取るエージェントを有する各ノードにおけるエージェントとして構成され得る。しかしながら、参照及び描画の簡単のため、調整エンジン208は、図2及び図4においては、分離した単一の実体であるとして示されている。一実施の形態によれば、名前空間に対する更新は、名前ノード202,204,206のうちの1つのインスタンス上で発議され、調整エンジン208により首尾一貫した方法で、他のインスタンスに伝えられる。この方法では、クライアントは、名前ノードのすべてのインスタンスにわたって首尾一貫した名前空間にアクセスする。ここに開示される複製方法は、HDFSのような分散ファイルシステムのための高い可用性を有するアクティブ−アクティブモデルを提供するものであり、その中においては、メタデータ要求(読み出し又は書き込み)は、複数の名前ノードのインスタンスの間で、負荷分散され得る。
調整エンジン208は、名前空間の更新のグローバルな順序を決定するように構成され得る。名前空間のすべてのインスタンスが同じ状態から開始し、すべてのノードが同じ決定論的な順序で更新を適用するように制御される(ただし、実施の形態によれば、同時である必要はない)ので、名前空間の複数のインスタンスの状態は、ノード間で首尾一貫した状態に維持される(又は、首尾一貫した状態とされる)。
一実施の形態によれば、図2に示すように、複数のCノードレプリカ202,204,206に対する首尾一貫した更新は、次のように実行され得る。(1)に示すように、複数のCノードのうちの1つ(この場合、Cノード202)が、名前空間を更新することについての要求をクライアントから受信する。そのような名前空間の更新は、図2ではRPC3として識別されるRPCを含むことができる。同様に、この例では、Cノード204はRPC1を受信し、Cノード206はRPC2を受信する。これらのRPCは、例えば、ファイルにデータブロックを追加すること、ファイルを生成すること、ディレクトリを生成することについての要求を含み得る。一実施の形態によれば、Cノード202がRPC3内に含まれるイベント(例えば、読み出し、書き出し、削除など)により自身の状態を直ちに更新し、Cノード204が受信されたRPC1内に含まれるイベントにより自身の状態を直ちに更新し、Cノード206が受信されたRPC2内に含まれるイベントにより自身の状態を直ちに更新し、その後、Cノード202,204,206のうちの他のものに対して更新された名前空間を伝えるのではなく、代わりに、各Cノードの名前空間レプリカに対するこれらの独立した更新は調整エンジン208に対して提案として伝えられ、調整エンジン208はその後、Cノード202,204,206に対して対応する同意を発行する。実際、一実施の形態によれば、Cノード202,204,206によって格納される名前空間レプリカを首尾一貫した状態に保つメカニズムは、調整エンジン208に対して提案を発行し、調整エンジン208から同意を受信することによるものである。すなわち、図2に示すように、Cノード202は、RPC3の受信に応じて、(2)で示されるように、提案Prop3を調整エンジン208に対して発行することができる。同様に、Cノード204は、RPC1の受信に応じて、(2)で示されるように、提案Prop1を調整エンジン208に対して発行することができ、Cノード206は、RPC2の受信に応じて、(2)で示されるように、提案Prop2を調整エンジン208に対して発行することができる。調整エンジン208は、一実施の形態によれば、その後、(3)で示されるように、受信した提案を順序付け、(4)で示されるように、順序付けられた同意(この場合、ARG3,AGR1,AGR2のように順序付けられる)をCノード202,204,206にフィードバックする。Cノード202,204,206は、順序付けられた一連の同意ARG3,AGR1,AGR2を受け取ると、その決定論的な順序でそれぞれのメモリ状態にこれらの同意を適用し、それによって、名前空間のレプリカがCノード202,204,206にわたって首尾一貫した状態に保たれ得る。この方法では、Cノード202,204,206の状態は、一貫性を失うことなく、(5)に示すように非同期で更新され得る。これらの更新はその後、Cノード202,204,206に結合され又はアクセス可能とされる(しかし、210,212,214における破線によって示唆されるように必須ではない)それぞれのローカルな永続的記憶装置210,212,214内に、ジャーナルトランザクションとして保存されてもよい(必須ではない)。その後、Cノード202,204,206のクライアントに対し、更新の成功を知らせる通知が戻され得る。
したがって、一実施の形態によれば、Cノード202,204,206は、クライアントの要求をそれぞれの状態に直接的に適用するのではなく、順序付けのために、それらを提案として、調整エンジン208に向けてリダイレクトする。Cノードの更新はその後、順序付けられた同意のセットとして、調整エンジン208から発行される。このことは、クライアントがCノード202,204,206のうちの1つを介して変化を要求したときにすべてのCノード202,204,206が更新されること、及び、その更新がクラスタ内のすべてのCノードに対して透明かつ矛盾なく適用されるであろうことを保証する。
例えば、もしクライアントがCノード202を介してディレクトリを生成し、その後、Cノード204を介して生成したばかりのディレクトリの一覧表を作ろうとするならば、Cノード204は、「ファイルが見つからない」という例外を返すかもしれない。同様に、クライアントは、図3に関連して以下で詳述するように、あるデータノードから他のデータノードにデータが移行しつつある間、様々なデータノード上で同じブロックのレプリカが異なる長さを有するために、作成中であるファイルの最新のデータブロックを異なるバイト数で読み出すかもしれない。これは、「陳腐な読み出し」問題として知られる。
したがって、一実施の形態によれば、調整エンジン208の重要な役割は、すべてのCノードからの名前空間の状態の修正提案を処理し、それらをグローバルに順序付けられた同意のシーケンスに変形することである。Cノードはその後、それらの状態に対する更新として、その順序付けられたシーケンスからの同意を適用し得る。一実施の形態によれば、同意は、ユニークな単調に増加する数として構成され得るグローバルシーケンス番号(GSN)に従って順序付けられ得る。GSNは、さもなければ、当該技術分野における当業者が理解できるように構成されればよい。GSNはその後、名前空間の状態を更新し、複数のCノードにわたってその名前空間の状態を首尾一貫した状態に保つことに関して、色々なCノードの進歩を比較するために使用され得る。例えば、もしCノード202が、Cノード204によってちょうど処理されたGSN2より小さいGSN1が付与された同意をちょうど処理したところであれば、Cノード202は、Cノード204より早い時期の名前空間の状態を持っている。
一実施の形態によれば、クライアントは、それぞれ操作とともに、クライアントが現在接続されているCノード上で処理されている最新のGSNについて学ぶ。その後、もしクライアントが他のCノードに切り替わるとすれば、クライアントは、一実施の形態によれば、データアクセスコマンドを含むRPCを発行する前に、初めに(必要であれば)Cノードがクライアントの知っている最新のGSN(すなわち、クライアントが以前にアクセスしていたCノードから受信したGSN)に追いつくまで待機する。これにより、陳腐な読み出しの問題を回避することが可能になる。
一実施の形態によれば、名前空間の状態を更新する操作だけが調整エンジン208によって調整される必要がある。すなわち、ほとんど(以下で詳細を説明する一実施の形態によれば、すべてではない)の読み出し要求は、名前空間の状態を変えるものでないことから、クライアントが接続されている任意のCノードによって直接的に提供される。一実施の形態によれば、調整エンジン208は、すべての与えられた瞬間においてCノード202,204,206が同じ状態を有していることを保証するものではない。むしろ調整エンジン208は、すべてのCノード202,204,206が、すべての更新について、すべての他のCノード及びクライアントがこの情報を見ることができるよう、同じ順序で矛盾なく学習することを保証するものである。この方法では、調整エンジン208は、すべてのCノード202,204,206に対して等しく供給されるグローバルに順序付けられた一連のイベントを生成するように構成される。
一実施の形態によれば、ローカルな永続記憶装置210,212,214に対するジャーナルの更新が実行され得る。しかしながら、Cノード202,204,206の一貫性はそのようなジャーナルの更新に依存するものではなく、かつ、それぞれの永続的記憶装置(もしあれば)は、一実施の形態によれば、Cノードに対してローカルであり、複数のCノードにわたって共有されるものではない。同様に、Cノード202,204,206にわたって名前空間の状態の一貫性を維持することは、メモリやプロセッサリソースのような他のリソースを共有することに依存するものではない。
実施の形態によれば、好ましい(マスターである、又は、他の方法で区別される)Cノードは存在しない。実際、1以上のCノードが故障した場合、又は、メンテナンス(又は他の任意の理由)のためにオフラインとなった場合、他のアクティブなCノードサーバが、アクセスの中断なくクライアントにサービスを提供するために、いつも利用可能である。一実施の形態によれば、サーバがオンラインに復帰するとすぐに、以下で説明するように、そのサーバは自動的に他のCノードサーバと再同期する。そのような再同期は、そのCノードがダウンし又はオフラインとされて以来調整エンジン208によって発行されたすべての同意を学習することを含み得る。すべてのCノードがアクティブであり、常に同期状態に維持され又は同期状態とされるとき、分離脳状態及びデータ損失はともに除去され、それによって、デフォルトで継続的なホットバックアップが提供される。フェイルオーバー及びリカバリが即座かつ自動的に実行され、手動の介在の必要性及び管理者エラーのリスクを除去する。さらに、Cノード202,204,206のいずれもが、受動的なスタンバイ名前ノードとして構成されることはない。実際、一実施の形態によれば、クラスタ内のすべてのCノードサーバは、クライアント要求を同時にサポートするように構成される。したがってこのことは、クラスタが、付加の増加によって性能を犠牲にすることなく、追加的なCノードサーバをサポートするために拡張されることを可能にする。一実施の形態によれば、受動的なスタンバイサーバは存在せず、アクティブな名前サーバが単一であることによる脆弱性及びボトルネックは完全に除去される。さらに、複数のCノード202,204,206にわたってクライアント要求を分配することは、本質的に、すべての利用可能なCノードに処理負荷及びトラフィックを分配する。すべてのクライアント要求が単一の名前ノードによってサービスされるアクティブ/スタンバイ名前ノードのパラダイムに比べ、Cノード202,204,206にわたるアクティブな負荷平衡を実行することも可能である。
図3は、一実施の形態による、分散ファイルシステム内におけるブロックの複製と生成の方法の側面を説明する図である。350において、図3は、HDFS内に格納されるファイルを示している。一実施の形態によれば、ストレージの単位はブロックと称されることができ、ブロックのサイズはかなり大きいものであり得る。例えば、ブロックサイズは、128MBの物理ストレージであってもよい。他のブロックサイズも容易に実行され得る。ファイル350は、複数の128MBのデータブロックを含むものとして、図3に示されている。ブロックサイズは、128MBである必要はない。一実施の形態によれば、1ファイル内の各データブロックは、複数のデータノード上で複製され得る(すなわち、全く同じように格納され得る)。302,304,及び306にはそのようなデータノードが示されており、これらはCノード202のような1以上のCノードと結合するように構成される。一実施の形態によれば、各データノードは、クラスタ上の複数のCノードのそれぞれと通信するように構成され得る。ファイルのデータブロックは、5つ又は7つのデータノードのような、より多くの数のデータノード上に格納され得る。複数のデータノード上に各データブロックを格納することは、冗長性を通じてデータの信頼性を提供する。
図2に示すように、クライアントはCノード202に対してメッセージ(例えば、RPC)を送り、それによって、ファイルを生成し、ファイルに対して1ブロックのデータを書き込むというクライアントの意図を示す。一実施の形態によれば、Cノード202はその後、この新たに生成されたファイルのデータブロックが複製されるであろう複数のデータノード302,304,及び306(この例示の実装では3つ)を選択することができ、そのことをクライアントに通知する。クライアントはその後、一実施の形態によれば、3つのデータノード302,304,及び306のうちの選択された1つに対し、データのストリーミング(若しくは送信)を開始することができる。そのようなストリーミングは、選択されたデータノード(例えばデータノード302)に対して、各データブロックの小さなチャンクを順番に送ることによって実行され得る。例えばクライアントは、ファイルの1つ目のデータブロックがデータノード302に対して成功裏に伝送されるまでの間、そのファイルの1つ目のデータブロックの64KBのチャンクのシリアルなストリームを、データノード302に対して送信することとしてもよい。クライアントと選択されたデータノード302との間のハンドシェイクは、各データブロックが、選択されたデータノード302によって成功裏に受信され、格納されることを確実にし得る。1つ目のデータノード302に対して送信されたデータチャンクはまた、クライアントのデータブロックが送信されるべき2つ目のデータノード304の指示を含み得る。一実施の形態によれば、ファイルのデータブロックのレプリカを受信すべきとしてCノード202によって選択された3つ(又は、それ以上)のデータノードに対してクライアントが直接ファイルのデータブロックを送信することよりも、データブロックのチャンクを受信した1つ目のデータノード302がその後、ファイルのデータブロックのレプリカを受信すべき3つのデータノードのうちの次のもの(例えばデータノード304)に対して、自分自身で受信したデータチャンクを送信することとしてもよい。同様に、データノード304は、データノード302によって自身に対して送信されたデータチャンクを成功裏に受信した後、クライアントファイルの構成要素であるデータブロックのレプリカを受信すべきとしてノード202によって選択された3つのデータノードのうちの最後のものに対してデータチャンクを送信することとしてもよい。この方法では、Cノードによって選択された1つ目のデータノードがCノードによって選択された2つ目のデータノードに対してデータチャンクを転送し、2つ目のデータノードが、そのファイルのデータブロックを受信すべきとしてCノードによって選択された2つ目のデータノードに対して、受信したデータチャンクを転送する、というデータの経路が生成される(もし3つ以上のデータノードがそのファイルのブロックを受信すべきである場合、同様に続く)。
一実施の形態によれば、Cノードは、クライアントファイルの構成要素であるデータブロックの受信者であるとして自身が選択したデータノードが、実際に、そのデータブロックを受信し格納したことを当然のこととは思わない。その代わりに、一実施の形態によれば、データノード302,304,306は、クライアントファイルの1以上のデータブロックを一旦所有した場合、それがクライアントによって直接、又は、他のデータノードによって、のいずれであるとしても、図3に示すように、自身に送信されたデータデータブロックを今や格納していることをCノード202に対して報告する。少なくともいくつか(一実施の形態によれば、それぞれ)のデータノードは、周期的に、「鼓動」メッセージをCノードに対して発行し得る。この鼓動メッセージは、発行しているデータノードがまだアクティブであってよい健康状態にある(すなわち、クライアントからのデータアクセス要求に対してサービスを提供できる)ことを、Cノードに対して通知するように構成され得る。データノードは、一実施の形態によれば、Cノードに対する他のメッセージとして、クライアントファイルの一以上のデータブロックの成功した受信及び格納を報告してもよい。図3に図示した例示の状況では、データノード302,304,306はCノード202に対し、クライアントファイルの1以上のデータブロックを自身が成功裏に受信し格納したことをCノード202に対して報告してもよい。
データノードは、故障し得る。その障害が、データノードとCノードの間の通信チャネルにおける中断、ファイルサーバの障害、下層の物理ストレージの障害(又は、他の任意の故障)のいずれによるものであるかを問わず、そのような障害は、データブロックが少なくとも故障したデータノードからは利用できないかもしれない、ということを意味する。図4に示した例では、データノード306が故障している。一実施の形態によれば、Cノード202,204,206は、データノード306のこの変化した状態を直ぐには知らされないかもしれない。代わりに、上述した鼓動メッセージの機構は、各データノードの現在に近い(最新の鼓動の時点)状態を知らされる状態にCノードを維持するためのよい利点として使用され得る。すなわち、一実施の形態によれば、所定時限内に鼓動メッセージを受信すべきCノードの障害は、Cノードによって、鼓動無送信データノードの障害として解釈される。所定時限は、例えば、任意の単一のデータノードからの鼓動メッセージの期待される間隔よりも大きな期間に設定され得る。
図4の例では、データノード306は、その最後の鼓動から所定時限内に鼓動メッセージ(図3の「HB」)を送信することに失敗しており、それ故、故障しており、その中に格納されるデータブロックは、少なくとも現時点でアクセス不能である、と看做され得る。同様に、これは、データノード302及び304のみが色々なファイルのデータブロックを格納していることを意味する。一実施の形態によれば、Cノードは、現時点でアクティブ、かつ、一実施の形態によれば、新たなデータブロックを受け入れ、及び/又は、データアクセス要求に対してサービスを提供する準備ができているデータノードのリスクを保持し得る。そのようなリストは、「アクティブ」リストと称され得る。図4のデータノード306のようにデータノードからの期待される鼓動メッセージの受信に障害が発生すると、そのデータノードは故障したものと看做され、Cノードは、アクティブリストからその故障したデータノードを削除し得る。一実施の形態によれば、アクティブリストは、クライアントからブロックを生成することについての要求を受信したCノードが、生成されるファイルのデータブロックが格納されるであろう(例えば)3つのデータノードをそこから選択できるリストであり得る。データノード306が故障したとき、データノード306はアクティブリストから削除され得、それによって、少なくともCノードの観点からは、すべての目的のために、そのデータノードは事実上存在しておらずかつ利用不能なものとされる。
クライアントファイルのデータブロックが、データノード306の障害に起因して複製不足となっているとき(例えば、所定数のデータノードより少ないデータノードに記憶されているとき)、Cノード202は、一実施の形態によれば、3つのデータノードのすべてがファイルの構成要素であるデータブロックのレプリカを格納することを確実にするため、クライアントファイルのデータブロックが複製され得る新たなデータノードを選択することができる。一実施の形態によれば、Cノード202は、アクティブリストを調べ、そのリストからクライアントファイルのデータブロックが複製されるであろう新たなデータノードを選択し、それによって、クライアントファイルのデータブロックのレプリカを格納している複数のデータノードの数を3つ(又は4、5など。ファイルに割り当てられた複製因子による)にまで引き上げる。図4に示す例では、Cノード202は、データブロックのレプリカもまた格納されるであろうデータノードとしてデータノード402を選択し、それによって、データブロックの複製不足を矯正する。一実施の形態によれば、Cノード202はまた、選択されたデータノード402に対して所有しているレプリカを送信するであろうデータノード304を選択することができる。図4の406に示すように、選択されたデータノード304はその後、新たに選択されたデータノード402に対し、ブロックのレプリカのデータのチャンクのストリーミングを開始し、又は、さもなければブロックレプリカの送信を開始する。新たに選択されたデータノード402は、ブロックレプリカを受信し、データノード406がCノードに対して報告する時間が来ると、新たに受信したブロックのレプリカを今や格納しているということを報告し得る。Cノードは、この変化を反映させるために、名前空間を変更することができる。一実施の形態によれば、受信するデータノードは、Cノードによってランダムに選択され得る。他の実施の形態によれば、そのような選択は、所定の選択基準に従ってなされ得る。
一実施の形態によれば、Cノード202,204,206のそれぞれは、データノード302,304,306,402及び自身が周期的に鼓動を受信している他のすべての(潜在的には何千もの)データノードのそれぞれに「気づく」。データノードの障害が発生すると、1以上のCノードは、送信データノードとして1つのデータノードを選択し、ブロックのレプリカの受信者として他のデータノードを選択することができ、それによって、ブロックが複製不足とならないことを確実にする。このことは、複数のCノードが、故障したデータノードに以前まで格納されていたデータブロックを格納すべき複数の補充データノードを選択する結果となり得る。すると、そのような並行アクションは、ブロックが複製過剰となる結果となり得る(例えば、意図した3つ,4つ,5つ・・・以上のそのブロックのインスタンスが複製される)。そのような複製過剰はまた、図5に示すように、以前に故障した、又は、さもなければアクセス不能となったデータノードがオンラインに復帰するときにもまた、発生し得る。図5は、以前に故障した、又は、アクセス不能となったデータノード306が今や、もう一度動作可能となり、Cノード202,204,206に対してアクセス可能となったと仮定したものである。この状態では、クライアントファイルのブロックは今や、4つのデータノード、すなわち、元のノード302,304、新たに追加されたデータノード402、及び、動作しておらずかつアクセス可能なデータノード306、に存在している。クライアントファイルのデータブロックはそれ故、複製過剰となっている。データノード3のオンライン復帰状態は今や、すべてのCノード202,204,206によって知られている(なぜならば、それらが生き返ったデータノード306から鼓動を受信したから)ことから、Cノード202,204,206のうちの1以上が独立してクライアントファイルのデータブロックのレプリカを削除するデータノードを選択するかもしれない、ということが考えられる。この独立した選択は、クライアントファイルのブロックレプリカが複製過剰状態から複製不足状態となり、最悪のケースでは、すべてのデータノードから削除されてしまう原因となり得る。
そのような事件を防ぐため、一実施の形態によれば、ブロック複製任務は、任意の所与の時点で選択された又は選抜された単一のCノード、すなわちブロック複製器Cノードのために予約され得る。そのようなブロック複製任務は、一実施の形態によれば、ブロック複製を調整すること(すなわち、データノード間で複製されるべきブロックを指示すること)及びブロック削除を調整することを含み得る。ブロック生成の機能は、一実施の形態によれば、そのようなデータ損失又は複製過剰の固有リスクを持ち出さないので、クラスタの各Cノードに与えられ得る。したがって、すべてのCノードは、一実施の形態によれば、ブロック管理任務を実行するように構成され得る。しかしながら、そのようなブロック管理任務は、一実施の形態によれば、単一の選択されたCノードのために予約されたブロック複製及び削除任務と、クラスタの複数のCノードのそれぞれに与えられ得るブロック生成任務とに分割され得る。図5にはこのことが示されており、図5では、Cノード202がブロック複製器機能410を有して構成されるただ1つのCノードとして選択されており、それによって、Cノード202のみがデータブロックの複製及び/又はデータノードからの削除を実行可能とされる。対照的に、図5に示されるように、Cノード202,204,206のそれぞれは、それぞれブロック生成器機能408,412,及び414を実行するように構成されることができ、これによりCノード202,204,206のいずれもが、それらに報告をしている選択したデータノード上に格納されるべき新たなブロックを生成し又は利用可能とすることが可能になる。
一実施の形態によれば、各データノードは、クラスタ内のすべてのCノードに対して、すべての通信を送るように構成され得る。すなわち、アクティブであり作動しているデータノードのそれぞれは、独立して、クラスタの各Cノードに対し、鼓動、ブロック報告、及び受信された又は削除されたレプリカについてのメッセージを送信するように構成され得る。
HDFSの現在の実装では、データノードは単一のアクティブな名前ノードを理解するのみである。このことは、データノードが、アクティブでない名前ノードから来る任意のデータノードコマンドを無視するであろうことを意味する。従来は、もしアクティブでない名前ノードが今やアクティブであると主張し、より高いtxIDでその状態を確認するならば、データノードは、フェイルオーバー手続きを実行し、新たなアクティブ名前ノードに切り替え、その新たなアクティブ名前ノードからのデータノードコマンドを受け付けるのみとなるであろう。
実施の形態によるCノードクラスタにおけるこの動作方法に適応するため、ブロック複製任務を有するCノード(すなわち、現在のブロック複製器)のみが、データノードに対し、その状態がアクティブであるとして報告をする。このことは、ブロック複製器のみがデータノードに対してブロックのレプリカを複製し、又は、削除することを命令する能力を有することを保証する。
アプリケーションは、HDFSクライアントを介して、HDFSにアクセスする。従来、HDFSクライアントは、ファイルのメタデータを求めて単一のアクティブな名前ノードに接触し、その後、データノードからのデータに直接アクセスしていた。実際、HDFSの現在の実装では、クライアントは常に、単一のアクティブな名前ノードと会話する。もし、高い可用性(HA)が可能であれば、アクティブな名前ノードは、スタンバイノードにフェイルオーバーし得る。これが発生するとき、HDFSクライアントは、他のフェイルオーバーが発生するまで、新たにアクティブとなった(以前はスタンバイノードであった)名前ノードと通信を行う。フェイルオーバーは、色々な実装を有し得るプラグ接続可能なインターフェイス(例えば、フェイルオーバー・プロキシ・プロバイダ)によって取り扱われ得る。
しかしながら、実施の形態によれば、Cノードはいつでもすべてアクティブであり、クライアントに対して名前空間の情報を提供するために等しく使用され得る。一実施の形態によれば、HDFSクライアントは、例えばCノード・プロキシと呼ばれるプロキシ・インターフェイスを介してCノードと通信するように構成され得る。一実施の形態によれば、Cノード・プロキシは、ランダムにCノードを選択し、このランダムに選択されたCノードに対してクライアントのRPC要求を送るための通信ソケットを開くよう構成され得る。クライアントはその後、通信タイムアウト又は障害が発生するまで、このCノードのみに対してRPC要求を送る。通信タイムアウトは、設定可能であり得る。通信タイムアウトが発生するとき、クライアントは、(例えば、Cノード・プロキシによってランダムに選択された)他のCノードに切り替え、この新たなCノードに対する通信ソケットを開き、この新たにランダムに選択されたCノードに対してのみRPC要求を送ることができる。負荷平衡の目的のため、例えば、この通信タイムアウトは、低い値に設定され得る。実際、もしクライアントがそのRPC要求を送るCノードがビジーであれば、応答における遅延は通信タイムアウトの低い値より大きくなり得、それにより、クライアントがCノード・プロキシを介して通信相手のCノードを切り替えることのきっかけとなる。
実際、HDFSクライアントによるCノードのランダムな選択は、複製されたCノードと通信する複数のクライアントの負荷平衡を可能にする。Cノード・プロキシがクライアントの通信相手となるCノードをランダムに一旦選択したら、クライアントは、一実施の形態によれば、そのランダムに選択されたCノードがタイムアウトし、又は、故障するまで、そのCノードに「貼り付く」ことができる。この同じCノードに対する「貼り付き」は、上で議論した陳腐な読み出しの機会を、フェイルオーバーのケースのみに減らす。Cノード・プロキシは、例えばCノードが再起動しており、サービスのための準備が完全にはできていない(例えば、ダウンしている間に取り損なった同意を学習している)ときに発生するセーフモードにあるCノードを選択しないように構成されることができる。
上で議論した陳腐な読み出しの問題が、1つの例を通じてさらに説明される。例えば、もしクライアントがCノード1を介してディレクトリを作成し、その後、同じ又は他のクライアントがその生成されたばかりのディレクトリをCノード2を介して列挙しようとし、Cノード2は、その学習プロセスが遅れており、そのディレクトリを生成するための同意をまだ受信又は処理していないために、ファイルが見つからないという例外を返すかもしれない。同様に、クライアントは、データが転送中である間、同じブロックのレプリカが異なるデータノード上で異なる長さを有するために構築中であるファイルの最後のブロックの色々な数バイトを読み出すかもしれない。
陳腐な読み出しの問題は、それ自身、以下の2つのケースで明らかになる。
1.同一のクライアントが(例えば障害、意図的な中断により、又は、負荷平衡の目的のために)、より古い名前空間状態を有する新たなCノードに切り替わる。
2.あるクライアントが、他のクライアントによって見られる必要のある名前空間を修正する。
一実施の形態によれば、1つ目のケースは、プロキシ・インターフェイスであるCノード・プロキシに、接続されているCノードのGSNに気付かせることによって回避され得る。それぞれの動作により、HDFSクライアントは、Cノード上のGSNについて学習する。クライアントが(例えば、Cノードの障害、タイムアウト、理由は何であれそのCノードの故意のシャットダウンのために)他のCノードに切り替わるとき、そのクライアントは、Cノード・プロキシを介して、自身が既に見ていたものより小さくないGSNを有するCノードを選ぶか、又は、その新たなCノードが、クライアントが以前のCノードから受信した最新のGSNに追いつくまで待機するべきである。
2つ目のケースは、マップ・リデュースのジョブが開始するときに起きる。このケースでは、マップ・リデュースのクライアントはjob.xmlのようなジョブ構成ファイルをHDFS内に起き、それがその後、クラスタ上で実行されるすべてのタスクによって読み出される。もし、いくつかのタスクがそのジョブ構成ファイルについて学習していないCノードに接続されるとしたら、そのタスクは失敗するであろう。従来、そのような束縛は、クライアント間の外部調整を必要とする。しかしながら、一実施の形態によれば、クライアント間の調整は、調整された読み出しによって置き換えられる。
一実施の形態によれば、調整された読み出しは、修正操作であるのと同じ態様で実施され得る。すなわち、Cノードは、ファイルを読み出すための提案を提出し、調整エンジン208から対応する同意が受信されたときにそれを実際に読み出す。したがって、一実施の形態によれば、読み出しの同意は、名前空間の修正の同意と同じグローバルなシーケンス内で実行されることができ、それにより、調整された読み出しが決して陳腐にならないことが保証される。一実施の形態によれば、調整された読み出しは、そうすることが調整エンジン208上の計算負荷を不必要に増大させ、クラスタの読み出し性能を低下させ得ることから、すべての読み出しのために使用される必要はない。したがって、一実施の形態によれば、job.xmlのような選択されたファイルのみが、調整された読み出しにさらされることとしてよい。したがって、一実施の形態によれば、例えば設定パラメータとして、ファイル名のパターンのセットが定義されることができる。そのようなパターンは、クラスタのCノードによって評価され得る。そのようなファイル名のパターンが定義されるとき、Cノードは、読み出されるべきファイル名をファイル名のパターンと照合し、もしその結果が肯定であれば、Cノードは、そのファイルに対して調整された読み出しを実行する。
もし、特定のCノード上において、あるクライアントによってあるオブジェクトが一旦アクセスされたとすると、そのオブジェクトは、続くクライアントのために調整された読み出しを通じてアクセスされる必要はない。一実施の形態によれば、ファイルは、特定のRPC呼び出しを通じてアクセスされるものとして識別され得る。この方法では、もしそのような呼び出しを実行しているCノードが、そのファイルがそう識別されていないと理解したら、そのCノードは、調整エンジン208に対して提案を提出し、調整された読み出しを実行するために対応する同意が受信されるのを待機するかもしれない。この読み出しの同意は、そのようにアクセスされたものとしてそれらのファイルのレプリカを識別することのできるすべてのCノードに到着する。識別されたファイルにアクセスすることについてのすべての後続のクライアントの呼び出しは、一実施の形態によれば、調整して読み出される必要はない。それ故、クラスタ内に3つのCノードを有する場合の最悪のケースでは、ファイルごとに3つ以下の調整された読み出しがあり得、それによって、高い読み出し性能が維持される。
Cノードもまた、故障したり、メンテナンスのためにダウンさせられたりする。もし故障したCノードがブロック複製器任務を授けられた(すなわち、ブロック複製器として選ばれた)唯一のCノードであるとすると、クラスタは、データブロックを複製又は削除する能力なしで残され得る。一実施の形態によれば、それゆえ、410に示すようにブロック複製器機能を有するCノードは、416に示すように、調整エンジン208に対して周期的なブロック複製器鼓動(BR HB)を送るように構成され得る。調整エンジン208がブロック複製器任務410を含むように選択されたCノードから周期的なBR HB416を受信する限り、そのCノードは、そのようなブロック複製器任務を実行し続けることができる。しかしながら、ブロック複製器410として選択されたCノードから1以上のBR HBをタイムリーに受信することに調整エンジン208が失敗すると、ブロック複製器任務は、クラスタ内の複数のCノードのうちの他の1つに割り当てられるであろう。すると、そのように選択されたCノードはその後、調整エンジン208に対して周期的なBR HB(データノードによって発行される鼓動HBとは区別されるもの)を発行することができ、調整エンジン208が1以上のBR HBを受信することに失敗し、それに応じてCノード選択プロセスが繰り返されるまで、その役割であり続けることができる。
一実施の形態によれば、クラスタ内のブロック複製器410がただ1つであることを保証するため、ブロック複製器410を含むCノードは、調整エンジン208に対してブロック複製器提案を周期的に提出するように構成され得る。すると、調整エンジン208は、ブロック複製器提案の受領に応じて、そのCノードをブロック複製器任務を実行するために選択又は選抜されたものとして確認することができ、そのことは、クラスタ内のすべてのCノードに対するそのブロック複製器ミッションを確認する。もし、BR HBが設定可能な期間内にCノードによって聞かれなければ、他のCノードは、調整エンジン208によって、新たなブロック複製器Cノードを選抜するプロセスを始めることができる。
実際に、一実施の形態によれば、ブロック複製器提案は、ブロック複製器任務を有するCノードが、ブロック複製器としてのそのミッションを、周期的なBR HBを介して他のCノードに確認させるための方法であり、BR HBが満了するときに新たなブロック複製器の選抜を実施するための方法である。一実施の形態によれば、ブロック複製器提案は、以下を含み得る。
・brID・・・ブロック複製器であると思われるCノードのid
・brAge・・・提案するCノードのGSN
各Cノードは、自身が受信した最新のブロック複製器同意と、その同意が受信された時刻とを格納する<lastBRA,lastRecieved>。
例えば、3つのCノードcn1,cn2,cn3があり、cn1が現在のブロック複製器Cノードであると考える。Cノードcn1は、周期的に、BR HBとしてブロック複製器提案を提案する。この提案は、自身のノードidであるcn1と、提案の時点でcn1によって観測された最新のGSNに等しいブロック複製器の新たな年齢とからなる。調整エンジン208は、ブロック複製器提案を受信し、対応する同意を生成して、その同意をすべてのCノードcn1,cn2,cn3に配送する。現在のブロック複製器であるノードcn1は、その同意を学習し、ブロック複製作業を開始する。Cノードcn2及びcn3は、現在のブロック複製器ではなく、<lastBRA,lastRecieved>をただ記憶し、通常の(複製でない)動作を継続する。lastRecievedが設定された閾値を超えたとき、一実施の形態によれば、cn2及び/又はcn3は、候補として自身を提案することによって、新たなブロック複製器の選抜を開始することができる。
一実施の形態によれば、一旦Cノードがブロック複製器鼓動BR HBが満了したことを検出すると、選抜プロセスは任意のCノードによって開始され得る。開始するCノードは、一実施の形態によれば、新たなブロック複製器として自身を提案することによって、選抜プロセスを開始することができる。その提案は、ノードIdと、その開始するCノードがその時点で見た最新のGSNとを含み得る。その提案は調整エンジン208に対して提出され、対応する同意が他のCノードに到着すると、それらは、それに応じてブロック複製器任務に対するそれらのミッションを更新する。これが、選抜プロセスを開始したCノードが新たなブロック複製器になる方法である。一実施の形態によれば、いくつかのCノードが選抜を同時に開始するケースでは、最も高いGSNで同意を提案したCノードがブロック複製器となる。したがって、ブロック複製器任務を有するCノードは、選抜プロセス中に何度か変更になり得る。しかし、最終的には、ただ1つのブロック複製器cmのアクリル板ノードが存在し、すべてのCノードは、そのCノードがブロック複製器任務を持つことに同意するであろう。一実施の形態によれば、故障したCノードは、もしそれが障害の後にオンラインに戻り、自身がブロック複製器であると未だに思い込んでいるとしても、決してブロックの複製又は削除の決定をしないように保証される。これは、ブロックを複製又は削除することの決定は、BR HBを処理する結果としての看做されるからである。すなわち、サービス状態に戻った後、Cノードは、複製の設定をするために次のブロック複製器鼓動BR HBを待機する。しかし、その鼓動同意は新たなブロック複製器の割り当てについての情報を含んでおり、新たにアクティブとなったCノードは、その受領に応じて、それがもはやブロック複製器任務を有しないこと知るであろう。
任意のCノードがブロックを生成することができ、又は、ブロックの生成を可能にされていることは、複数のデータノードに格納されているデータブロックのそれぞれが、全クラスタにわたってユニークに識別可能であることを必要とする。長いデータのブロック識別子(ID)をランダムに生成すること、及び、その後そうして生成されたデータブロックIDが真にユニークか否かをチェックすることは、HDFSにおけるブロックID生成の現在の方法である。このアプローチは、新たなブロックIDが、調整エンジン208に対して提出されるブロックを生成することについての提案の前に生成されなければならず、しかし、そのIDが生成時点ではフリーであったとしても、対応する同意がCノードに到着するときまでにそのIDが他のブロックに既に割り当てられていることがあり得ることから、複製されたCノードにとって問題を含む。同意事典でのそのような衝突の調整は、可能ではあるけれども、処理に不必要な複雑さ、トラフィック、及び遅延を付加し、成功裏に行われたデータブロックの生成の結果としてのクライアントに対する応答を遅延させる。代わりに、一実施の形態によれば、図6に示すように、最小のブロックID番号(MINLONG)から最大のブロックID番号(MAXLONG)までの範囲にわたる大きな範囲が定義され得る。この大きな範囲は、各データブロックIDが全クラスタにわたって、かつ、一実施の形態によればそれらの予想される寿命を過ぎてもユニークであることを確実にするために必要な程度に大きいものであり得る。例えば、MINLONGからMAXLONGまでの範囲は、例えば、1024ビット以上を含む数であり得る。その後は、CノードがユニークなデータブロックID番号を生成することを確実にするために、MINLONGからMAXLONGまでの範囲は、図6に602,604,及び606で示すように、論理的に3つのCノードブロックIDの範囲に分割され得る。例えば、データブロックID範囲602は、MINLONGからMINLONG+Xビットまでの範囲にわたり、ブロックID範囲604は、MINLONG+XからMINLONG+2Xまでの範囲にわたり、ブロックID範囲606は、MINLONG+2XからMAXLONGまでの範囲にわたる。
<連続的なブロックID生成器>
一実施の形態によれば、ブロックIDの生成は連続的である。この場合、ブロック割り当てを始めるCノードは、提案が調整エンジンに提出される前に予めブロックIDを生成しておく必要はない。代わりに、一実施の形態によれば、Cノードは、ブロック割り当てが到着するときに、独立して、自身のブロックIDカウンターを次の値にインクリメントすることができる。このプロセスは、すべてのCノードがカウンターの同じ値からスタートし、すべての同意を同じ順序で適用することから決定論的であり、そのことは、任意の所与のGSNにおいて、ブロックIDカウンターの次の値がすべてのCノード上で同じになることを保証する。
新たなブロックを割り当てるアルゴリズムaddBlock()は、一実施の形態によれば、次のようなものである。
1.ChooseTargets()が、複製ポリシーに従い、利用可能な生存中のデータノードの中において、ブロックレプリカのための見込み位置を適切に選択する。
2.まだブロックIDが定義されていない新たに割り当てられたブロック(位置)と、生成スタンプとが調整エンジンに提案として提出される。同意が到着すると、各Cノードは、そのブロックに次のブロックID及び次の生成スタンプを割り当て、その後、名前空間に対してそれを引き渡す。
位置は、それでもなお、予め選ばれるべきである。色々なCノードが同意を独立に処理するとき、同じターゲットを決定論的に選ぶことはできないからである。
図7は、一実施の形態による、ファイルのデータブロックを格納するように構成された複数のデータノードを含む分散ファイルシステムを実行するコンピュータに実装された方法を示すフローチャートである。ブロックB71に示されるように、この方法は、少なくとも3つ(又は、いくつかのより大きな奇数)の名前ノードを、複数のデータノードに結合させるステップを含む。複数の名前ノードのそれぞれは、一実施の形態によれば、クラスタの名前空間の状態を格納するように構成され得る。その後、ブロックB72に示されるように、(例えば調整エンジン208が)(図2において202,204,206で示されるような)名前ノードから、ファイル及びディレクトリを生成又は削除すること、及び、(図3において302,304,及び306で示されるような)複数のデータノードの中の1以上に格納されるデータブロックを追加することにより名前空間の状態を変更することについての提案を受信するステップが実行され得る。本開示において「変更する」とは、該当する場合、新たなデータブロックを追加すること、データブロックを複製すること、クライアントファイルのデータブロックを削除することを含む。B73に示されるように、コンピュータに実装された本方法はさらに、提案の受信に応答して、名前ノードが名前空間の状態を変更しようとする順序を特定する同意の順序付けられたセットを生成することを含む。一実施の形態によれば、それゆえ、名前ノードは、その名前ノードが(例えば調整エンジン208から)同意の順序付けられたセットを受信するまで、名前空間の状態に対する(例えばクライアントによって要求された)変更を行うことを遅延させる。
一実施の形態によれば、(例えば、既存のCノードが故障したか、又は、さもなければシャットダウンされたケースのように)新たなCノードがオンラインになったとき、その新たなCノードは、上述したようにセーフモードで起動されることができる。セーフモードにあるその新たなCノードはその後、データノードから登録と初めのデータブロックの報告とを受信し、その新たなCノードが結合される複数のデータノードのそれぞれに格納されているデータブロックを識別する。一実施の形態によれば、Cノードがセーフモードにあるとき、それは名前空果の状態の修正についてのクライアントからの要求を受け付けない。すなわち、提案を提出する前に、その新たなCノードは、自身がセーフモードにあるか否かをチェックし、もしその新たなCノードが現在セーフモードで動作中であると決定した場合、セーフモード例外を投げる。十分な数のブロック報告が受信されるとき、一実施の形態によれば、その新たなCノードは、セーフモードを離れ、クライアントからのデータ修正要求の受け付けを開始する。一実施の形態によれば、複数のCノードは起動の際に自動的にセーフモードに入り、一旦それらが十分な数のブロックレプリカの報告を受信すると、自動的かつ非同期的にセーフモードを離れる。自動的なセーフモードからの離脱は、一実施の形態によれば、調整エンジン208を通じて調整されるものでない。なぜなら、(図2のCノード202,204,及び206のような)複数のCノードは、ブロック報告を異なるレートで処理し、それゆえ、異なる時刻にそれらがセーフモードから離脱する閾値に達し得るからである。対照的に、クラスタの管理者がセーフモードに入れとのコマンドを発行すると、すべてのCノードが従う。この理由により、管理者が発行したセーフモードコマンドは、一実施の形態によれば、調整エンジン208を通じて調整される。
上述したように、Cノードは故障したり、メンテナンスのために意図的にダウンさせられたりする。一実施の形態によれば、残りの複製されたCノードは、それらが調整エンジン208に対して、同意を生成するために十分なクォーラムを形成する限り、動作を継続するであろう。もしクォーラムが失われると、一実施の形態によれば、クラスタはフリーズし、クォーラムがリストアされるまで、名前空間に対する変更の要求を処理することを停止するであろう。
先に故障したCノード、又は、故意にオフラインとされたCノードがオンラインに戻るとき、それは自動的にその状態を他のCノードに追いつかせる。一実施の形態によれば、調整エンジン208は、オンラインに戻ったCノードに対して、オフラインであった間にそれが取り損ねたすべての同意を供給することができる。この期間の間、オンラインに戻ったCノードは、そのRPCサーバを介しさせない。したがって、クライアント及びデータノードは、(RPCは、それらが通信し得るモードであるため)それに接続できず、そのことは、戻ったCノードが、要求するクライアントに対して潜在的に陳腐なデータを供給してしまうことを回避する。このプロセスは、データノードがオンラインに戻ったCノードに接続する前に起こる。データノードの登録及び初期のブロック報告は、その報告がCノードがまだ学習しておらず、もし報告されたとしたら捨てられてしまうブロックを含むことから、遅延させられなければならない。
もしCノードが長期間にわたってオフラインであり、著しい数(設定可能な閾値であり得る)の同意を取り損ねていたとしたら、Cノードにとって、それがオフラインである間に取り損ねた同意の受信を待機し、取り損ねた同意のすべてのヒストリーを再生することは、実際的でなく、非現実的であり得る。このケースかつ一実施の形態によれば、CノードにアクティブなCノードの1つからチェックポイントをダウンロードさせ、それを初期の名前空間としてロードさせ、そのチェックポイントから始まる同意を調整エンジン208から受信させ、そのチェックポイントが生成されたときからその提供された同意のヒストリーを再生させることがより効率的である。そうするために、オンラインに戻ったCノードは、チェックポイントを回収するためのソースとしてアクティブなノードのうちの1つ(「ヘルパー」と呼ばれる)を選び、その選ばれたヘルパーCノードに対してRPC呼び出し(例えばstartCheckpoint())を送ることができる。ヘルパーCノードはその後、調整エンジン208に対してスタートチェックポイント提案を発行し、他のすべてのCノードがそれらのローカルなチェックポイントを同じGSNに同期することを確実にする。スタートチェックポイント同意が到着するとき、ヘルパーCノードは、その同意のGSNを、特定のGSN(例えばcheckpointGSN)に至るまでの現行である特別に識別されたチェックポイントとして記憶するであろう。このcheckpointGSNはその後、現れてくるCノードがそのチェックポイントを一旦消費した後、その後を追って学習プロセスを開始する同意を決定する。
オンラインに戻ったCノードによるチェックポイントの消費は、HDFSの標準にあるように、イメージ及びジャーナルファイルをアップロードすることによって実行され得る。追いついた後には、Cノードはデータノードからブロック報告の受信を開始することができる。一旦セーフモードがオフになると、新たにオンラインに戻ったCノードは、完全にクラスタに参加し、その標準の任務を回復させる。
一実施の形態によれば、新たなCノードの起動又は既存のCノードの再起動は、以下の主たる段階を含むことができる。
1.オンラインに戻ったCノードが起動し、プロポーザとしてクラスタに参加する。ただし、段階3まで、ラーナー能力はミュートされた状態となる。
a.他のノードと関連するグローバルなヒストリーの中での自身の状態を検査する。
2.もしその状態が実質的に他のノードから遅れていたら、これは設定可能な閾値により決定されることであるが、それは、アクティブなヘルパーノードのうちの選択された1つからより最近のチェックポイントをダウンロードするであろう。選択されたヘルパーノードは、チェックポイントの生成の時点におけるヒストリーの状態に対応するcheckpointGSNを提供する。
3.そのチェックポイントがダウンロードされるとき、(必要であれば)オンラインに戻ったCノードは、同意リカバリ提案(ARP)と呼ばれるその最初の提案を調整エンジン208に対して提出し、ラーナーの役割を引き受ける。
a.オンラインに戻ったCノードは、オフラインとなったときにそれが取り損ねた同意の学習を、checkpointGSN+1から開始することができる。
4.オンラインに戻ったCノードが自身の最初のARP同意に達するとき、追いつきプロセスは完了したと看做される。新たにオンラインに戻ったCノードは今や、アクセプタの役割を引き受けることができ、完全に機能するクラスタの参加者となり、調整エンジン208からさらなる同意を受信し、調整エンジン208に対して提案を提出する。
5.そうするために、新たにオンラインに戻ったCノードは、そのRPCサーバを初期化し、データノードに対して自身を登録及びブロック報告のために利用可能とする。報告を処理し、セーフモードを離れた後、Cノードは、クラスタの他のCノードと対等の立場でクライアントの要求の受け付けを開始できる。
上述したように、一実施の形態によれば、各Cノードは名前空間のイメージを格納し、そのCノードに結合しているローカルかつ永続的(不揮発性)な記憶装置内においてそれらを更新する。ローカル記憶装置(もしあれば)は、Cノード間で共有されるようには構成されないことに注意が必要である。一実施の形態によれば、各Cノードは、そのローカルな永続的記憶装置内に、最新の名前空間のイメージのチェックポイントを含むそれ自身のローカルなイメージファイルと、その最新のチェックポイント以降に名前空間に対して適用されたトランザクションのジャーナルを構成するファイルを編集するローカルな編集ファイルとを保持することができる。一実施の形態によれば、クラスタをシャットダウンすることは、名前空間の進化の異なる瞬間においてCノードをダウンさせる。すなわち、いくつかのCノードは、調整エンジン208から受信された同意によって特定されるすべてのトランザクションを適用済みであるかもしれないが、いくつかの遅れているCノードは、まだ、そのようなトランザクションのすべては適用していないかもしれない。したがって、シャットダウンの後、色々なCノードの編集ファイルは等しいものとはならないかもしれない。それゆえ、クラスタが再起動するとき、遅れているCノードは、現在の状態よりも古い状態で起動するかもしれない。しかしながら、調整エンジン208は、遅れているCノードを、グローバルなシーケンスからそれが取りこぼしたイベントを供給することによって、強制的に現在の状態とするように構成され得る。
これは、いくつかのCノードが調整エンジン208から受信される同意の処理を通じて名前空間の状態を更新するにあたり他より遅れているときの名目上のクラスタ操作と異なるものではないことに注意が必要である。そのような遅れているCノードは、それでもなおクライアントから修正要求を受け入れ、調整エンジン208に対して提案を作成するかもしれない。結果としての提案は順序付けられ、グローバルなシーケンスの中の、そのCノードが未だ処理しておらず、当然そうあるべき順番で名前空間の状態を更新するために適用されるであろうイベントの後ろに配置される。この方法では、遅れているCノードは、新しい要求が処理される前に、「周知された状態」(すなわち、最も現在のGSNまで)とされ、それによって、クラスタの複数のCノードにわたる名前空間の状態の一貫性が維持される。一実施の形態によれば、起動の間における複数のCノードの持続的な状態の不一致は、「綺麗な」シャットダウン手続きを実行することによって回避され得る。
一実施の形態によれば、綺麗なシャットダウン手続きは、クラスタがシャットダウンされる前にすべてのCノードを強制的に共通の状態とするように提供される。綺麗なシャットダウンを実行することの結果として、複数のCノードのそれぞれに結合された永続的なローカルメモリに格納される名前空間のローカルなイメージのすべてが同一となるであろう。そして、それに対する更新は、トランザクションの空のシーケンスによって表され得る。一実施の形態によれば、綺麗にシャットダウンし、名前空間のすべてのローカルなイメージを強制的に同一にするために、各Cノードは、調整エンジン208によって送られた残りの同意が今まで通りに処理される一方で名前空間を修正するためのクライアント要求を処理することを停止するセーフモードの動作に入るよう命令され得る。その後、名前空間を保存する動作が実行されることができ、それによって、名前空間のローカルなチェックポイントを生成し、ジャーナルを空にする。Cノードのプロセスをキルする前に、すべてのCノードが(今や複数のCノードにわたって同一である)名前空間の保存を完了し、その名前空間のそれぞれのローカルなチェックポイントを生成したことが保証され、それによって、すべてのCノードが同じ名前空間を有して再起動させられる。その後、Cノードのプロセスがキルされ得る。綺麗なシャットダウンの後には、任意の後続の起動プロセスが、Cノードが綺麗にシャットダウンされなかったケースに比べて速く進められるであろう。複数のCノードのいずれもが、(それらのすべてがシャットダウンに先立って同一状態に置かれたために)調整エンジン208からの編集及び取り損ねた更新を適用する必要がないからである。
II ワイド・エリア・ネットワーク(WAN)上の分散ファイルシステム
図8は、一実施の形態による、WAN環境内に特有の効用を見出す分散ファイルシステムを示す図である。図8はまた、複製状態マシンモデルに基づく、分散された名前ノードベースのファイルシステム(例えば、HDFSのようなもの)のためにWAN上で利用可能な複製方法の側面を説明している。一実施の形態によれば、名前ノードは、地理的に異なる場所に分散されたデータセンターに位置している。そのようなデータセンターは、例えば、異なる大陸に配置され得る。以下では、そのような名前ノードは、名前ノードがLANを介して互いに結合されるケースにおけるコンセンサス・ノード(又はCノード)と区別するため、ジオノードと呼ばれる。
一実施の形態によれば、ジオノードは、上で詳細に説明したCノードの特別なケースであると看做され得る。実際、ジオノードは、単一のデータセンター内でCノードが動作するケースであり得るような、LANを通じて動作を実行するように構成されたCノードに関して本書で説明した特徴、コンセプト、方法、及びアルゴリズムのいくつか又はすべてを取り入れることができる。以下で説明するのは、例えばインターネット及び/又はプライベート又は専有のWANを含むWAN上におけるHDFSクラスタにわたる分散ファイルシステムに対して利用可能な実施の形態である。
<アーキテクチャの概要>
図8は、一実施の形態による、WANに広がる分散ファイルシステムの構成要素を示すブロック図である。その中に示されるように、一実施の形態による分散ファイルシステム802を実行している(例えば単一の)クラスタは、2つ以上のデータセンターを含み得る。すなわち、データセンターA(DCA)804と、データセンターB(DCB)806である。DCA804及びDCB806は、互いに地理的に遠隔であり得る。例えば、DCA804及びDCB806は、同一の国の異なる部分に位置してもよいし、異なる大陸、異なるタイムゾーンに分散されてもよいし、完全に独立した電力系統から電力を得ることとしてもよい。DCA804及びDCB806は、例えばインターネット及び/又は他のプライベート及び/又は専有のネットワークを含み得るWAN808を介して互いにゆるく結合されていてもよい。DCA804及びDCB806はまた、他の専用の高速接続を介して、結合されてもよい。図8には2つのデータセンター804,806のみが示されているけれども、実施の形態はより多くの数のデータセンターを含み得ること、及び、分散ファイルシステム802がすべてのそのようなデータセンターにわたって延在することが理解される。
示されるように、DCA804は、複数のアクティブ(その反対としては、例えばスタンバイ又はフェイルオーバー)な名前ノードを含み得る。現在の文脈では、この名前ノードはジオノードとして表示され、図面では「GN」として参照される。この態様では、DCA804は、参照番号810,812,及び814によって示されるジオノードを含み、DCB806は、参照番号816,818,及び820によって示されるジオノードを含む。ジオノード810,812,814,816,818,及び820は、分散ファイルシステムの名前空間の状態を格納し、かつ、複数のジオノード及び複数のデータセンターにわたって首尾一貫した態様で、単一の名前空間を維持するように構成され得る。ジオノード間の調整と、複数のジオノードにわたる単一の名前空間の維持との側面は、分散調整エンジン(CE)プロセス822によって提供され得る。図8では、CEプロセス822は、DCA804、DCB806、及びWAN808に広がる分離した論理的な実体であるような態様で示されている。一実施の形態によれば、しかしながら、上述した及び以下で述べるCE822の機能性は、ジオノード810,812,814,816,818,及び820のそれぞれによって解放され得る。すなわち、ジオノード810,812,814,816,818,及び820のそれぞれは、それぞれの他の機能の中で、CE822の任務を実行するように構成され得る。
DCA802は、図8では「DN」として参照される複数のデータノード824,826,828,830を有し得る。同様に、DCB804は、図8では「DN」として参照される複数のデータノード832,834,836,838を有し得る。示されるように、データノード824,826,828,830のそれぞれは、ジオノード810,812,及び814のそれぞれと結合し、通信するように構成され得る。また、示されるように、データノード832,834,836,838のそれぞれは、DCB806のジオノード810,812,及び814のそれぞれと結合し、通信するように構成され得る。一実施の形態によれば、ジオノードはデータノードと直接的には通信しない。実際、一実施の形態によれば、データノードは、ジオノードが受信した要求に対するデータノードの応答に対するコマンドを発行するとすぐに、ジオノードに対して要求を送信するように構成され得る。したがって、ジオノードはデータノードを制御するように言われ得るけれども、データノードは、一実施の形態によれば、そこからコマンドを受信するためにジオノードに対して要求を送らなければならない。DCA804には、4つのデータノード824,826,828,830が示されている。同様に、DCB806には、4つのデータノード832,834,836,838が示されている。しかしながら、データセンター804及び806は、それぞれが図8に示されるより多くの(例えば数千の)データノードを含み得ることが理解される。
3つのジオノード810,812,814がDCA802内に提供されるように示されるけれども、DCA802内には、より多くの数のジオノードが提供され得る。同様に、3つのジオノード816,818,820がDCB806内に提供されるように示されるけれども、DCA806内には、より多くの数のジオノードが提供され得る。一実施の形態によれば、データセンター内のジオノードの数は、奇数であるように選択され得る。
一実施の形態によれば、図8は、地理的に異なる位置に分離して配置されたデータセンターに広がる単一の分散ファイルシステムを実行するクラスタを示している。分散ファイルシステムは、例えば、HDFSの側面を取り込むものである。一実施の形態によれば、同じデータセンター内のジオノード間における名前空間の調整は、LANを用いるケースに関して上述した構造、方法、手続きを使用して実行され得る。例えば、複数のデータノードのそれぞれは、それら自身のデータセンター内のジオノードとのみ(データノード−名前ノード間のRPCプロトコルを通じて)通信するように構成され得る。反対に、あるデータセンター内のジオノードは、それら自身のデータセンター内のデータノードのみを制御するように構成され得る。すなわち、一実施の形態によれば、データセンター804のデータノードはそれら自身のデータセンター804のジオノードと通信するのみであり、データセンター806のデータノードはそれら自身のデータセンター806のジオノードと通信するのみであり得る。両データセンター802,806のジオノードは、名前空間の状態を一貫した状態に保つように、調整エンジンプロセス822を通じて互いに調整を行う。以下で記述するようにかつ一実施の形態によれば、あるデータセンターのデータノードは、他の1つのデータセンター又は複数のデータセンターのデータノードと通信し得る。
一実施の形態によれば、CEプロセス822は、名前空間の状態に対する同じ決定論的な更新が、すべてのジオノード上で同じ決定論的な順序で適用されることを保証するように構成され得る。この順序は、グローバルシーケンス番号(GSN)によって定義される。したがって、一実施の形態によるCEプロセス822の重要な役割は、すべてのジオノードからの名前空間の状態に対する修正又はさもなければ更新についての提案を処理し、それらをグローバルに順序付けられた同意のシーケンスに変形することにある。ジオノードはその後、その順序付けられたシーケンスからの同意を、それらが格納している状態に対する更新として適用し得る。一実施の形態によれば、GSNは、ユニークかつ単調に増加する数として構成され得る。しかしながら、GSNは、当業者が理解できるような別の方法でも構成され得る。GSNはその後、名前空間の状態を更新し、かつ、複数のジオノードにわたって名前空間の状態を一貫した状態に保つこと(又は、順序付けられた同意のシーケンスの連続的な適用を通じて、複数のジオノードのそれぞれに格納される名前空間の状態を時間を超えて首尾一貫した状態とすること)における色々なジオノードの進行を比較するように構成される。例えば、もしジオノード810が、ジオノード812によってちょうど処理されたGSN2よりも小さいGSN1とナンバリングされた同意をちょうど処理したところであれば、ジオノード810は、ジオノード812が有するものよりも早い時期の名前空間の状態を有する。ジオノード810に格納される名前空間の状態は、ジオノード810がGSN2を処理するや否や、ジオノード812がその合間により高い番号の同意を処理していないことを条件として、ジオノード812によって格納されるものと一致するであろう。この方法では、CEプロセス822によって生成された順序付けられた同意のセットの連続的な実行を通じて、各データセンターの各ジオノードに格納されている名前空間の状態が首尾一貫した状態とされ、その状態で維持される。
一実施の形態によれば、クライアントは、それぞれの操作の際、現在接続中のジオノードで処理された最新のGSNについて学習する。その後、もしクライアントが他のジオノードに切り替えたとすると、一実施の形態によればそれは、書き込みのようなデータアクセスコマンドを含むRPCを発行する前にまず、(必要であれば)新しいジオノードがクライアントの知っている最新のGSN(すなわち、クライアントが以前にアクセスしていたジオノードから受信したGSN)に追いつくまで待機するべきである。このことは、陳腐な読み出しの問題を回避するであろう。各ジオノードは同じ状態から開始しているので、この更新の順序付けられた適用は、同じGSNで同意を処理した異なるノードで撮られたそれらのスナップショットが各データセンター内でも複数のデータセンターにわたっても同一であるという点で、レプリカの一貫性を暗示する。ジオノード810,812,814,816,818,820の間のすべてのメタデータは、CEプロセス822が同意を配送する限り、即座に調整され得る。同様に、すべてのファイルシステムのデータもまた、クラスタの複数のデータセンター(図8に示される2つ)にわたって自動的に複製され得る。
ここでは、異なるデータセンターからのジオノード、データノード、ブロックレプリカ、クライアントなどを指すために、「外国」という用語が好ましく使用される。同じデータセンターの実体は、「自国」と称される。例えば、クライアントがDCA804にアクセスするとき、DCA804は、ローカル又は自国のデータセンターであると看做され、一方、DCB806は外国のデータセンターとして表示され得る。逆に、クライアントがDCB806にアクセスするならば、データセンター806がローカル又は自国のデータセンターであり、一方、DCA804は外国のデータセンターとして表示される。
一実施の形態によれば、クライアントが新たなファイルを生成するとき、CEプロセス822は、すべてのジオノード810,812,814,816,818,820がその新しいファイルについて知っており、それらがその新しいファイルのデータ(例えばデータブロック)にアクセスする前でさえも、同名の他のファイルが生成されることを防止することを確実にする。一実施の形態によれば、データブロックは、バックグランドかつ非同期の態様で、自国のデータセンター内で複製され、また、データセンター間でも複製される。この態様では、ジオノードは、新しいファイルとそのデータブロックについて、自国のクライアントのためにそのブロックの(データセンターに対して)ローカルなレプリカを提供できるようになる前に学習する。すなわち、DCA804のクライアントは、CEプロセス822に対して提出される新たな順序付けられた提案の基礎を構成する新たなファイルを作成することができる。順序付けられた同意が生成され、すべてのジオノードの状態は、自国のDCA804及び外国のDCB806の両方において更新される。その後、以下で詳述するように、データブロックはDCA804内の指定されたデータノードに転送され、その後、指定されたデータノードにより、完全な複製の状態に到達するまで、ジオノードが指定したDCA804内の他のデータノードに(あるデータノードから他のデータノードに順番に)渡される。完全な複製の状態は、例えば、データブロックのレプリカが所与のデータセンターの3つのデータノードに格納されているときに到達され得る。完全な複製の状態は、他にも、当業者が理解できるように定義され得る。以下で説明するように、完全な複製の状態に到達すると、データブロックは、非同期かつバックグランドで、1以上の遠隔のデータセンターのデータノードに対して転送される。
DCA804のデータノード824,826,828,及び830及びDCB806のデータノード832,834,836,及び838は、クライアントファイルのデータブロックのレプリカを格納するように構成され得る。任意の単一のデータブロックのレプリカは、1つ(例えばDCA804)、2つ(例えばDCA804及びDCB806)、又は、より大きな数のデータセンターのデータノード上に格納され得る。WAN808上での通信はリソースを大量に消費し、かつ、高価であり、待機時間、中断、及び帯域幅の規制量が変化しがちであるので、一実施の形態は、あるデータセンターのデータノードが他の(地理的に離れた、外国の)データセンターのジオノードと通信することのないように構成される。すなわち、上で予め示したように、データノード824,826,828,及び830はジオノード810,812,814とのみ通信し(例えばリクエストを発行し)、DCB806のジオノード816,818,820とは通信しない。逆に、データノード832,834,836,及び838はそれら自身のデータセンターのジオノード816,818,及び820のみと通信し、(それらにとって)外国のDCA804のジオノード810,812,814とは通信しない。このことは、一実施の形態によれば、あるデータセンターのジオノードが外国のデータセンターのデータノードからブロック報告や鼓動を直接受信することはなく、外国のデータセンターのデータノードに対してコマンドを送信することもないことを暗示する。
しかしながら、一実施の形態によれば、あるデータセンター、例えばDCA804のデータノードは、WAN808上で1つ以上の外国のデータセンター、例えばDCB806に対してデータブロックのレプリカをコピーし、それによって外国のブロック複製サービスを提供するように構成され得る。一実施の形態によれば、WAN808上のネットワークトラフィックは、WAN808上では任意の特定のデータブロックのただ1つのレプリカのみを送信し、さらなる複製は外国DC内でローカルに発生するように構成することにより、最小化され得る。例えば、あるデータブロックがDCA804内で完全に複製されるとき、そのようなデータブロックのレプリカはWAN808上でDCB806に送信され得る。DCB806内でそのデータブロックを完全に複製するために要求され得る任意のさらなる複製は、その後に完全にDCB806内で発生する。
例えばHDFSマップ・リデュース・タスクのような分散ファイルシステムのクライアントは、それらがクライアントであるデータセンターのデータノードとともに計算環境を共有するように構成され得る。したがって、一実施の形態によれば、クライアントは利用可能な複数のデータセンターのうちの1つの中で実行するように構成され得る。クライアント・タスクは、それゆえ、アクセスされたデータセンターに対して自国であるジオノードと通信するために最適化され、自国のデータノードにアクセスするように構成される。しかしながら、一実施の形態によれば、クライアントはまた、他のデータセンターからのデータにアクセスするためにWAN808を横切って到達するように構成され得る。
実施の形態によれば、各ジオノードが一貫性を有するように維持され、システムが任意の1つ以上のジオノードの障害、又は、1つ以上のデータセンターの実際の障害に対して耐性を有しているという点で、好ましいジオノードというものは存在しない。逆に言うと、実施の形態によれば、システム内の各名前ノードがいつもアクティブであり、一貫した名前空間の状態を維持しているという点で、フェイルオーバー中、非アクティブ、又はスタンバイのジオノードは存在しない。さらに、ここに開示されるシステムは、複数のクラスタがそれらの間でいくつか又はすべてのデータを共有する(ミラーリングする)一方でそれぞれのデータセンターで独立して動作するマルチクラスタ・アーキテクチャとは対照的に、単一の分散ファイル(例えばHDFS)クラスタとして現れ、行動し、操作されるように構成される。異なるデータセンターに属するWANクラスターの同一の部分は、等しい役割を有するように構成され得る。この方法では、データは、分散ファイルシステムの複数のデータセンターのうちの任意のものによって取り込まれ、又は、それを通じてアクセスされ得る。実施の形態によれば、データの生成及びアクセスのプロセスは、実質的にLANのスピードで(すなわち、多くのケースでWANのスピードより概して速く)実行するように構成され得る。例えば、もしジョブが複数のデータセンターのうちの1つで動作するならば、そのジョブは、概ねそれが他のデータセンター内には存在しないときと同じ時間内に完了すべきである。
実施の形態による分散ファイルシステムの構造は、それに障害又は災害に対する高度な耐性を与える。実際、任意のジオノードが故障し得、2つ以上のデータセンター上で複数のジオノードが同時に故障し得、例えばWANの分割に起因してデータセンター全体が故障し得、データノードが故障し得る(例えば、2つのデータノードの同時の障害及び/又は全ラックの障害)が、それらはすべて、クラスタの機能性及びデータに対する自由なアクセスを維持している間に発生する。
ファイルを生成し読み出すためのワークフロー
<ファイルを生成すること>
HDFSでは慣習的に、クライアントがファイルを生成することを欲するとき、それはまず、ブロック追加(addBlock)又は機能的に類似するコマンドを伴う生成要求により名前ノードを呼び出す。生成呼び出し、特定された属性を有する新しいファイルに対応する名前空間内にエントリを生成する。ブロック追加呼び出しは、そのファイルのために新しい空のブロックを割り当て、ブロック複製ポリシーに従い、そのレプリカのために予想されるデータノードの位置を割り当てる。クライアントはその後、名前ノードにより指定された1つのデータノードから、名前ノードにより指定された次のデータノードまでの経路を形成し、それらにデータを書き込む。続いてデータノードは、新しいブロックレプリカを受信すると、それを名前ノードに報告する。
しかしながら、実施の形態によれば、名前空間が複数のジオノード上(WANのケース)、又はCノード上(LANのケース)で複製されるとき、クライアント(図8における参照番号840)要求は、複数のジオノード又はCノードのうちの1つによって送信され、受信される。WANのケースでは、実施の形態によれば、クライアントは自国のジオノードを選択することができる(必須ではない)。クライアント要求を受信し、このインスタンスの中でプロポーザとして動作するジオノードは、クライアント要求に対応する提案を形成し、その提案をCEプロセス822に提出する。一旦この提案に対する同意が達成されると、CEプロセス822は、すべて(すなわち、DCA804及びDCB806のジオノードのすべて、並びに、分散ファイルクラスタ(例えばHDFS)内の他の任意のデータセンターのジオノードのすべて)に対して、その同意を配送する。その同意はその後、ジオノードのローカルな名前空間のインスタンスに適用されることができ、したがって、すべてのジオノード上で首尾一貫して同じファイル又は同じブロックを生成する。プロポーザであるジオノードは、同意を処理した後、クライアントに対して応答する。
ブロックが生成されるとき、ジオノードは、ブロックのための予想される位置として自国のデータノードを選択する。例えば、クライアント840がファイルを生成するとき、名前空間へのエントリが生成され、提案/同意のプロセスを通じて、自国及び外国両方のすべてのジオノードの状態が更新される。この方法では、その名前を有する他のファイルは、如何なるデータセンター上でも生成され得ない。ジオノード810のようなジオノードはその後、そのデータブロック及びそのすべてのレプリカを格納するために、予想されるデータノードを指定する。一実施の形態によれば、クライアント840はその後、そのデータノードとのみ通信し、ジオノードとはもはや通信しない。クライアント840はその後、ジオノードによって指定された最初の予想されるデータノード(例えば824)にデータブロックを書き込み、自国のデータセンター内で完全な複製(ただし、「完全」な複製は定義されたものである)が達成されるまで、ある自国データノードからその経路内の次の予想される自国データノードへのレプリカの経路825を生成する。この経路は、WAN808を通って転送されるデータブロックのレプリカが存在しないことから、LANのスピードで占められ得る。一実装によれば、完全な複製は、データブロックのレプリカが、例えばDCA804のデータノード824,826,及び828のような3つの分離した自国データノード内に格納されるときに達成され得る。データブロックの位置をすべてのジオノード(自国及び外国の両方)に通知するため、自国のジオノードのうちの1つは、データノードがジオノードに対してレプリカの安全な受領を報告した後、CE提案/同意機能を介して外国レプリカ報告の提案を提出する。
一実施の形態によれば、例えばブロックが完全に複製されたときのようにジオノードがすべての自国のブロックレプリカについての情報を受信するとき、ジオノードは、外国レプリカ報告の提案をCE822に対して生成する。この提案に対する同意が達成された後、その外国レプリカ報告は、新たなレプリカの存在及び位置をすべてのジオノード(自国及び外国の両方)に通知するために動作する。この段階では、自国及び外国の両方のジオノードが新たに生成されたファイルの存在と、そのブロックレプリカの位置を「知る」。しかしながら、ジオノードによって指定された自国のデータノードのみが実際にそのブロックレプリカを格納する。したがって、その名前空間は、ジオノードによって指定された自国のデータノードが名前空間に対する更新を生じさせたレプリカを格納する場合でさえも、更新され、複数のデータセンターにわたって首尾一貫した状態で残る。
その後、一実施の形態によれば、新たにレプリカを格納する複数の自国データノードのうちの1つから外国のデータノードへのレプリカの転送が、HDFSデー転送プロトコルのための標準を通じてスケジュールされる。例えば、新たにレプリカを格納するデータノード828は、832のようなジオノードによって指定された外国の予想されるデータノードに対し、WAN808を使用してブロックレプリカを転送するようスケジュールされ得る。この転送は、対象のレプリカが完全に複製された後(すなわち、(例えば)自国データノード3,4,5に複製された後)に実行され得ることに注意が必要である。クライアントの観点から見ると、ジオノードが指定した予想されるデータノードへのデータブロックの書き込みは、多くのケースで比較上WANのスピードより速いLANのスピードで実行される。したがって、レプリカはこの段階で自国のデータセンター内に冗長性を持って格納されるが、この時点では、1以上の地理的に遠隔の(したがって災害に耐性を有する)データセンターには格納されていない。新たなレプリカを格納する複数の自国データノードのうちの1つがジオノードが指定した外国の予想されるデータノードに対してブロックレプリカを転送した後、そのブロックのコピーが外国のデータセンター上で非同期に生成される。この転送は、必然的にWANスピードで発生するが、完了及びクライアントの書き込みに対する最終的な応答を遅延させることなく、バックグランドで発生する。一実施の形態によれば、新たな受信されたレプリカはその後、(例えばHDFS)複製プロトコルを介し、外国のデータセンターにおいてその内部複製ポリシーに従って、ローカルに複製されることができる。例えば、外国のジオノードによって指定され、829において828のような自国データノードからWAN上でブロックのコピーをちょうど受信したばかりの外国データノード832は、その後、そのブロックのための完全な複製がその外国データセンター内で達成されるまで、(図8の833で示されるような)経路のやり方で、834及び836のような外国のジオノードによって指定された他の外国データノードに対してデータブロックが複製され、データノードからRPC呼び出しを介して外国ジオノード816,818,820に対して報告されるようにすることができる。その外国ジオノードはその後、CE822を通す提案/同意プロセスを再び介し、少なくとも外国DCB806内のレプリカの外国データノード内での位置について、自国ジオノードを更新する。
<ファイルの読み出し>
HDFSのような分散ファイルシステムのクライアントがファイルを読み出す必要があるとき、それは、ゲットブロック位置(又は機能的に類似する)要求を名前ノードに対して送信する。その名前ノードは、要求されたデータブロックのレプリカを格納しているデータノードのリストを返送する。クライアントはその後、ネットワークトポロジーに関してクライアントに最も近い複数のデータノードのうちの1つからデータを読み出す。
一実施の形態によれば、図8に示されるWANクラスタ上で、DCA840のクライアント840は、DCA804の複数の自国ジオノードのうちの1つに対して、ゲットブロック位置(又は機能的に類似する)要求を送信する。クライアントがゲットブロック位置要求を送信した自国ジオノードは、その要求を受信し、要求内で識別されるブロックのレプリカを格納している複数の自国データノード内の位置のリストをクライアント840に対して返送する。そのようなリストは、一実施の形態によれば、自国のデータノードのみ、自国と外国の両方のデータノード、又は、外国のデータノードのみを含む。レプリカは、上で詳述したように、そのブロックがまだ書き込み中であるか、まだ自国内で複製されている最中であるか、又は、自国データセンター内では完全に複製されたがまだ外国データセンターに転送されていないケースでは、外国のデータノードのみに格納され得る。もし、ブロックレプリカが、そこからゲットブロック位置が要求されたデータセンターにとって自国であるデータノードに格納されているならば、クライアント840は、複数の自国データノードのうちの1つからブロックレプリカを読み出すことができる。さもなければ、クライアント840は、WAN808上で外国レプリカを読み出すことができる。しかしながら、WAN808上での読み出しは多くのリソースを使用する。したがって、性能の理由から、一実施の形態は、外国レプリカの読み出しを許可しないことを可能にすることができる。そのような場合、クライアント840は、要求したデータブロックのレプリカがその自国のデータセンター上に現れるまで待たされ、その後、今や自国のものとなったレプリカの読み出しを進めることができる。外国読み出しを許可する/許可しないというオプションは、一実施の形態によれば、設定パラメータとして利用可能とされ得る。
<外国ブロックの管理>
一実施の形態によれば、ブロックマネージャーが自国のファイルブロックの位置及び自国データノードについての情報を保持する。外国ブロックマネージャーは、外国のファイルブロックの位置及び外国データノードについての情報を保持するように用意され得る。以下の記述は、実施の形態が外国のブロックと外国のデータノードを保持する方法を詳述する。
<外国ブロックの複製>
上述したように、ファイルの新たなブロックは、ブロック追加又は機能的に類似した呼び出しを介して割り当てられ、複数のジオノードにわたって調整され得る。あるジオノードがクライアントからブロック追加要求を受信するとき、ブロック追加要求を受信するジオノードは、完全な複製のために要求される必要数(一実施の形態では、デフォルトで3つ)の自国レプリカを選択し、CEプロセス822に対して対応するブロック追加提案を提出することができる。対応する同意がCE822から到着するとき、ジオノードは、そのブロックに対して決定論的に、ブロックID、類似の識別子、及び生成スタンプを割り当てることができ、その後クライアントに対して、位置決めされたブロック(LocatedBlock)又は機能的に類似した通信を返送することができる。クライアントファイルの新たなブロックのための初期のターゲットは、一実施の形態によれば、クライアントがブロック追加要求を発行したデータセンターに対して自国のデータノードからのみ選択され得る。このことは、クライアントが、WANを介する転送が完了するのを待つことなく書き込んでいるそのデータセンターから書き込み応答を受信するという点で、書き込み性能の最適化を可能にする。この方法では、クライアントは(例えば経路の更新のような)エラー処理を回避する。エラーは、より遅くより信頼性の低いWANリンク808に起因して、より起こりやすい。
したがって、一実施の形態によれば、レプリカはまず、データ経路手続きの元であるデータセンターに対して自国である複数のデータノードに格納される。転送が成功すると、クライアントは、データがファイルシステム内に格納されていることを無事に推測することができ、その後、次のブロック又は他の操作を進めることができる。他(すなわち、外国)のデータセンターは、それらのジオノードはそのファイルの存在に気づき、既に(それらにとっての)外国データセンター内において格納されるブロックレプリカの位置を知っているかもしれないが、この時点ではブロックの自国のレプリカを所有していない。
一実施の形態によれば、ジオノードはその後、経路内のデータノードがそれらのレプリカを報告するので待機する。報告されたレプリカの数が完全な複製(一実施の形態によれば、デフォルトで3つ)に到達すると、ジオノードは、外国レプリカ報告(FRR:ForeignReplicaReport)提案を発行し、外国データセンターへの1つのレプリカの転送をスケジュールする。
<外国レプリカの報告>
一実施の形態によれば、外国レプリカ報告(FRR)は、ジオノードに報告されたすべての自国内のブロックのレプリカと、レプリカが属するデータセンターの名前又は報告しているデータセンターの名前を含むように構成され得る。FRRは、一実施の形態によれば、あるデータセンター上に存在しているブロックレプリカが他のデータセンターのジオノードに報告され得る1つの可能な機構を構成する。FRR提案/同意は、一実施の形態によれば、次の2つのケースで発行され得る。
1.自国のブロックレプリカの数がデータセンターのための完全な複製に到達するとき。
2.例えば、そのレプリカを格納しているデータノードのすべて(3つ又はしかしながら多く)が死に、又は、さもなければデータアクセス要求に対するサービスが利用不能になるときに発生し得るような、自国のブロックレプリカの数が0にまで減らされるという事態に至ったとき。
ジオノードは、外国レプリカ報告の同意を受信すると、まず外国レプリカがFRR内で報告されているか否かを決定する。否であれば、FRRは、自国データノード内のレプリカの記憶容量(そのジオノードが既に気づいているもの)を報告しており、ジオノードはそのFRRを安全に無視する。しかしながら、もしFRRの主題であるレプリカが実際に外国のものであれば、ジオノードは、データセンターに報告するための外国レプリカの現在のリストを、新たに報告されたリストによって置き換え得る。したがって、そのFRRメカニズムは、ブロックの外国レプリカを追加及び/又は削除するように動作し得る。
一実施の形態によれば、各データセンターは(一実施の形態では単一の)ブロック複製器を提供され得る。単一のブロック複製器は、LAN実装においては、図4に410で示されている。ブロック複製器は、データセンター内の全クラスタのために、ブロックレプリカの複製及び削除に対する決定を下す。そのような決定は、過剰なレプリカが生成されないように、又は、さらに悪いことにはいくつかのブロックがすべてのレプリカを失わないように、片務的に行われるべきである。
一実施の形態によれば、データセンター内において、ブロック複製器の機能を引き受けている唯一のジオノードは、FRRを発行するジオノードである。FRRの目的は、それ自身のデータセンター内におけるレプリカの位置を報告することであるので、FRR報告は、一実施の形態によれば、自国のブロックレプリカの位置についてのみ報告するように構成され得る。
性能面の理由から、FRRは、一実施の形態によれば、ブロックが自国内における完全な複製に到達したときに、ブロック複製器ジオノードによって発行され得る。1つの実装では、FRR提案は、自国のデータノードが3つのレプリカの成功裏に記憶したことを報告したときに発行され得る。ただし、「自国内における完全な複製」の他の定義が考案され得る。一実施の形態によれば、FRRは、レプリカの数が0に減らされるまで発行されない。なぜならば、データセンターがブロックの少なくとも1つのレプリカを有している限り、そのデータセンターは自国内でレプリケーションを取り扱えるからである。しかしながら、データセンターが任意の特定のデータブロック又は複数のブロックのいかなる自国内のレプリカももはや持たないときには、そのデータセンターのブロック複製器ジオノードは、他のデータセンターがWAN808上で自国に対してレプリカを転送すべきであるということを示す(複数の)ブロックのためのFPRを発行することができる。
もし、データブロックの1つ又はいくつか(ただし、すべてではない)のレプリカがDCA804上で失われたとしても、他のデータセンターは、DCA804上でブロックの完全複製がリストアされるまで、そのレプリカが完全複製に至らない状態となっていることについて知ることはないであろう。この時点(完全複製が達成された時点)で、DCA804のブロック複製器ジオノードはFRRを提出し、他のデータセンターはこれに対応して、それらの外国レプリカのリストを、FRRを発行するDCA804によって報告された実際の値に更新するであろう。その間、いくつかの外国読み出しが失われた(複数の)位置からの読み出しに失敗するかもしれないが、シームレスな態様で、他のレプリカに切り替わるであろう。
一実施の形態によれば、所与のブロックの(所与のデータセンターにおいてブロックが完全に複製されたと看做されるために格納されるべきレプリカの数を定める)複製因子は、データセンターによって異なっていてよい。例えば、一実施の形態は、クラスターが、DCA804では3つのレプリカを、DCB806ではそのブロックのただ1つのレプリカのみを、それぞれ格納することを許可し、それにも関わらずそのブロックは、DCA804上及びDCA806上で完全に複製されたと看做される。したがって、完全複製の通知は、個々のデータセンターに特有のものであり得る。これは、例えば単一の地理的に遠隔なレプリカで十分である重大でないデータにとって、有益であり得る。
<外国レプリカの転送>
データセンター内のブロック複製器として指定されたジオノードは、一実施の形態によれば、ブロックを調査し、自国のレプリカを有しているが外国のそれを有していないそれを検出することについて、追加の責任を割り当てられ得る。この機能は、自国のレプリカを周期的にモニタリングすることに加えて外国の複製の分析も行うブロックモニターに割り当てられてもよい。
自国のレプリカを有するが外国のレプリカを有しないブロックがブロック複製器として指定されたジオノードによって検出されるとき、ジオノードは、対象のレプリカを格納する自国のデータノードの1つを選択し、それに対して、他のデータセンター内のデータノードに対してそのレプリカを転送するよう指示する。WANを介するレプリカの転送命令は、データノードと自国のジオノードとの間の鼓動通信を介して発行され得る。一旦このコマンドが受信されると、選択されたデータノードは、外国データセンター内の指定された外国データノードに対し、そのレプリカを転送する。
実施の形態によれば、データノードは、ブロック複製器機能を有するものとして指定されたジオノードからのみ、データノードコマンドを受け付けるよう構成され得る。これは、各データセンターが、ブロック複製器としてデザインされたジオノードをただ1つだけ含むように構成され得ることのもう1つの理由である。
<自国のブロック複製器>
LAN環境では、複数のCノードの各クラスタは、クラスタ全体のために選択的にブロックレプリカの複製と削除を行う責任を単独で割り当てられるブロック複製器として指定される唯一のCノードを有する。Cノードと同様、複数のジオノードは、そのデータセンターに対して唯一である1つのブロック複製器ジオノードを選抜する。各ブロック複製器ジオノードは、ブロック複製器鼓動(BR HB)を送信する。複数のジオノードは、外国のブロック複製器ジオノードからのBR HBを無視するように構成され得、それ自体、それぞれのローカルなデータセンター内で内部的にのみ使用されるように構成される。LANのブロック複製器Cノードに関して上述したように、もし現在の自国のブロック複製器ジオノードからのBR HBがそのために許される期間内に発行されることに失敗した場合、データセンター内の他の複数のジオノードは、新たなブロック複製器Cノードを選ぶために使用される方法と同様の方法で、新たなブロック複製器ジオノードを選ぶことができる。
一実施の形態によれば、異なるデータセンターのためのBR HBは互いに独立しているので、それらの調整は、外国のBR HBが無視される単一の状態マシン、又は、複数の状態マシン、すなわちデータセンターごとに1つの独立した状態マシンを用いて取り扱われ得る。後者のケースでは、複数の状態マシンは切り離されたメンバーシップによって特徴付けられ、それぞれが単一のデータセンター内の複数のジオノードを含む。
ジオノードは、名前ノード及びCノードに類似する態様で、クラスタのデータノードのリストを、それぞれの状態(生死又は退役)とともに、さらに、例えば進行中のデータ転送の数及びローカルディスクの利用量などのようなそれらのリソース利用率とともに保持するように構成され得る。
<データノード登録を調整すること>
図8に示すような実施の形態によるWANクラスタにおいては、データノードは、一実施の形態によれば、自国のジオノードとのみ通信する(例えば、要求を発行する)ように構成され得る。特に、分散ファイルシステム上で登録している複数の新たなデータノードは、外国データセンター上のジオノードへ直接、それらの登録情報を送信するようには構成されない。一実施の形態によれば、調整されたデータノードの登録プロセスが提供され得る。それによれば、データノードが自国のジオノードに登録するとき、その自国のジオノードは、調整エンジン208に対してデータノード登録提案を提出し、対応する同意が到着した後に登録を処理する。
ジオノードがこの対応するデータノード登録同意を受信するとき、そのことは、名前ノード又はCノードによって実行される手続きと同様であり得る登録手続きを起動し得る。もし、登録するデータノードが自国のものであれば、さらなるアクションは必要ない。新たに登録する外国のデータノードを考慮するデータノード登録同意のために、ジオノードは追加的に、新たに登録する外国データノードの状態を退役に設定し、それを外国のものとしてマークする。ジオノードは、外国のデータノードとは直接的には通信しないからである。実際、一実施の形態によれば、外国のデータノードはいつも、ジオノードによって「退役」として見られる。ジオノードは、外国データノードと通信できず、外国データノードを制御できず、さもなければ外国データノードから直接情報を集めることができないからである。特に、実施の形態によれば、外国データノードは、ブロックのための経路のターゲットとして使用されない。この制約は、クライアントのデータアクセス操作のためにLAN状のスピードを維持する。ローカルなデータセンターのデータノード内に完全な数(例えば3)のレプリカが確認されるとすぐに、ブロックが完全に複製されたと看做されるからである。同様に、外国データノードは、ローカルなジオノードが、鼓動の満了間隔の間にそれらの鼓動を受信することに失敗したことに基づいて死んだと宣言されることはない。なぜならば、一実施の形態によれば、複数のデータノードはそれらのローカルなジオノードとのみ通信し、外国のジオノードに対しては鼓動を発行しないからである。この振る舞いは、例えばHDFSクラスタ上の退役したデータノードのそれと矛盾しない。
<外国データノードの記述子>
登録されたデータノードは、外国又は自国のいずれであっても、データノード記述子によってジオノード内に表現され得る。外国データノードの記述子は、(通常の、ローカルの)データノード記述子の、以下に示す追加のフィールドを含む拡張である。
・自国のノードと区別するための外国データノードマーカー
・それ自身の(それにとって自国の)データセンター内で知られているものとしてのそのデータノードの状態は、生、死、又は退役として特徴付けられ得る。データノードの状態は、ジオノードにとって、(経路方式の複製のためではなく)外国ブロック複製のためにターゲットとなる外国データノードを選択するときを知るために重要である。死んだ、退役した、又は退役しつつあるノードは、複製のターゲットとして使用されるべきでないからである。これは、自国のジオノードに対して新たに登録する外国データノードの「退役」状態とは異なることに注意が必要である。
・外国データノードには、無限の鼓動満了間隔が設定される。外国のデータノードは、それら自身のデータセンターの外にあるジオノードと直接通信する(例えば、それに対して要求を発行する)ことを期待されず、また、そのように構成されていないからである。
実施の形態によれば、ジオノードは、外国データノードが生きているか死んでいるか知ることができない。自国のジオノードのみが、データノードがその鼓動を送ることを停止したときに、検出可能であるからである。WANクラスター上では、登録、鼓動満了、退役のイベントは、外国及び自国の両方を含むすべてのジオノードが、すべてのデータノードの最新の状態を追えることができるように調整される。
<外国ブロックの報告>
ブロックの報告は、所有しているブロックレプリカの名前ノードを通知するためにデータノードによって送信される。例えば、クラスタが最初に起動するとき、ローカルのジオノードは、すべてのレプリカについてその格納場所を知らない。ローカルなジオノードに対し、クラスタ内の各レプリカのローカルなデータノード内における位置を通知するのが、ブロック報告である。LAN環境では、データノードは、すべてのCノードに対してそれらのブロックを報告する。
しかしながら、WAN環境では、外国データノードが他のデータセンターのジオノードに対してWAN808上でブロック報告の全体を送ることは、受け入れ難いほどに、リソースを激しく使用し、高価であり得る。それにも関わらず、ジオノードは、外国データノード上に格納されているレプリカの位置を知る必要がある。したがって、一実施の形態は、システムディレクトリ内に、複数のデータセンターにわたるすべてのジオノードにとって利用可能なファイルとして、ジオノードが分散ファイルシステム(例えばHDFS)自身に対するブロック報告を書き込むことを提供する。ある実装は、ブロック報告のファイルパスが以下のネーミング規則に従って形成されることを必要とする。
/consensus/blockReports/<blockPoolId>/<dcName>/<storageID>/br_<hash-report>
ここで、<hash-report>は、ブロック報告のハッシュ(例えばMD5)を含む。
一実施の形態によれば、ブロック複製器でないジオノードのみが、ファイルシステムに外国ブロック報告を書き込むように構成される。したがって、複数のブロック複製器でないジオノードが同じブロック報告を書き込むように構成され、その書き込みを試すかもしれない。しかしながら、そのようなブロック複製器でないジオノードのうちの1つのみが成功すべきである。パス名に報告の(例えばMD5の)ハッシュを付加することは、ジオノードがいくつかの他のローカルなジオノードがすでにそのブロック報告を書き込んでいることを理解し、したがって書き込みの衝突を回避できる。成功裏に書き込んだ者はその後、ディレクトリから以前のすべてのブロック報告ファイルを削除するであろう。
ブロック報告ファイルは、外国ブロック複製技術を用いて、データセンターをわたって複製される。一実施の形態によれば、ジオノードは、新たなブロック報告を求めて周期的にシステムディレクトリをポーリングするように構成され得る。一旦、そのファイルが読み出し可能になると、他のデータセンターのジオノードは、それを読み出し、その外国ブロック報告を処理する。通常動作の間、間欠的な外国ブロック報告は、LAN環境においてCノードを更新するためにデータノードがブロック報告を発行する方法と類似の方法で、ジオノードに、クラスター上の他のデータセンター内におけるブロック報告が位置している場所の最新の見解を提供する。
WANクラスターの全体が起動するとき、各データセンターのデータノードは、ブロック報告の生成と、それらの自国のジオノードに対する送信とを開始する。そしてジオノードは、それらの自国のブロック報告の受信を開始する。上記したように、一実施の形態によれば、所与のデータセンターにおいてデータブロックが一旦完全複製に到達すると、ブロック複製器でないジオノードがFRR提案を発行し、それによって、外国ジオノードが(自身にとって)外国のブロック報告についての情報を得ることが可能になる。
実行中のWANクラスター上でただ1つのジオノードのみが再起動するケースでは、他のデータセンターからのFRRがブロックのレプリカ数として送信されることはない。したがって、一実施の形態によれば、外国ブロック報告は、再起動するジオノードか外国レプリカが格納されている位置を学ぶことのできる唯一のメカニズムを構成し得る。ジオノードが上述したFRRプロセスを用いて外国レプリカの位置を学習している間、クライアント要求GetBlockLocations()が失敗し得ることに注意が必要である。一実施の形態によれば、そのようなクライアント要求が提出されたデータセンターのジオノードにとって外国の位置が未だ知られていないとき、そのクライアント要求を他のデータセンター上のジオノードにフェイルオーバーするための規則が生成され得る。
<ジオノードの起動>
一実施の形態によれば、ジオノードの起動シーケンスはLAN環境でのCノードのそれをなぞるが、少し違いがある。単一の名前ノードクラスターをWANクラスターに変換するために、名前ノードの記憶装置ディレクトリが、ジオノードを実行するために準備されたすべてのノードに分配され得、その後、クラスターが起動される。或いは、名前ノードが動作しているときに単一のジオノードが起動されてもよい。追加のジオノードがその後、ローカルなLANクラスターを形成するように、空の状態の中に追加され得る。そしてさらに、1つ以上のデータセンター上でジオノードが追加され得る。一実施の形態によれば、クラスタに参加している各ジオノードはその後、Cノードに関して上で詳述したように、既存の複数のノードのうちの1つから名前空間のイメージをダウンロードし、ダウンロードされたチェックポイントの最新のGSNから始めて現在最大のGSNに至るまでの同意の学習を開始する。もし、再起動しているジオノードが名前空間のイメージをダウンロードする必要があるならば、一実施の形態は、その再起動しているジオノードが、もし利用可能であれば、自国の他のジオノードをヘルパーとして好ましく選択することを必要とする。このことは、WAN808上での非効率な転送を回避する。
<外国の状態の回復>
Cノードと比較すると、起動時の複数のジオノードは、それらの外国の状態を追加する追加のステップを実行するように構成され得る。そのような追加のステップは、外国データノード及び外国のブロックレプリカを追加する(について学ぶ)最終ステップを追加することを含む。
データノードは、ここで詳述されるように、自国のジオノードを用い、自国のジオノードがデータノード登録提案を(複数のデータセンターにわたって全クラスターに論理的に広がっている)調整エンジン208に対して提出し、対応する同意が到着した後にその登録を処理するとすぐに登録されるように構成され得る。したがって、全クラスターが起動するときには、すべてのジオノードが、データノードの登録及び外国レプリカ報告の同意を通じて、外国データノード及び外国ブロックレプリカのそれぞれについて学習する。
クラスターが起動しており、その中の単一のジオノードが再起動するとき、外国登録及び外国レプリカ報告は、すぐには利用可能とならないかもしれない。上で詳細に開示したように、より早い時期の外国レプリカの位置は、分散ファイルシステム(例えばHDFS)内に永続的に格納され得る外国ブロック報告のファイルから回復され得る。しかしながら、これらのブロック報告ファイルが読み出される前に、ジオノードは、これらのレプリカが格納されている外国データノードについて学習する必要がある。
一実施の形態によれば、ジオノードが再起動及び/又はクラスターに新規に参加するとき、そのジオノードは、失われた同意の学習を開始する前に、同意リカバリについての提案を発行することができる。このことは、そのジオノードが、自身を最新であると看做すことのできるGSNに印をつけることを可能にする。実際、CE822は発行された提案に対応する同意を発行し、その同意はグローバルな順序付けられたシーケンス内に取り込まれる。この方法では、ジオノードが、自身の同意リカバリに対する同意の前に順序付けられたすべての同意に加えて自身の同意リカバリに対する同意を学習するとき、「追いつくこと」が完了したと看做され、格納された名前空間の状態は、現行のものでありかつ一貫していると看做され得る。この時点において、そのジオノード内に格納されている名前空間は、その後、ジオノードがCE822によって発行される同意を消費することを通じて、現行の状態に留まり得る。一実施の形態によれば、複数のジオノードが外国ジオノードから同意リカバリに対する同意を受信するとき、それらは追加的にすべてのそれらの自国のデータノードに対して、登録のための印を付けることができる。この印は、自国データノードが次の鼓動で再登録を要求されるであろうことを意味する。このことは、新しいジオノードが、それが自身の同意リカバリに対する同意の後に受信するであろうデータノード登録の同意(複数のデータセンターにわたるすべてのジオノードによって受信されるもの)を介して、名前空間が最新であるときに外国データノードについて学習することを可能にする。
<リースのリカバリ>
<リースの管理>
(例えばHDFSのような)分散ファイルシステムは、1つのクライアントのみを、特定のファイルに対するライターとして許容するように構成され得る。単一ライターセマンティックスを実施するため(及び、それによって、2つの異なるクライアントが同じファイルを開き、それに対して書き込み始めることを避けるため)、リースの概念が導入される。リースは、ファイルか生成され、追加のために開かれるときに生成され得る。リースは、ファイルと、そのファイルに現在書き込んでいる(1つの)クライアントとを識別する。リースは、ファイルが閉じられるとき、破壊され、又は、さもなければ満了したものとしてマークされる。まだ満了していないリースは、その存続期間の間、他のクライアントがそのファイルに書き込みアクセスを行うことを禁止する。
一実施の形態によれば、リース・マネージャ・プロセスは、名前ノードのためにリースを保持するように構成される。もし、そのリースが割り当てられたクライアントがそのリースに関連するファイルを閉じる前に死んだら、そのリースは、ファイルシステム自体によって、ゴミとして集められて処分され得る。リースを処分する前に、ファイルシステムは、そのファイルが首尾一貫した状態か否かを確認し、もし否であれば、ファイルブロックのリカバリを実行することができる。
一実施の形態によれば、リースのリカバリプロセスは、(元のリースフォルダが応答せず、誰も所定期間内にそのファイルを閉じないときなど)そのファイルのリースについてのハード限界が満了するとき、又は、ソフト限界(例えば10分)が終了し、かつ、他のクライアントがそのファイルへの書き込みアクセスの権利を主張しているときに、名前ノードによって起動され得る。実施の形態によれば、リースのリカバリプロセスは、2つのステップを含み得る。実際に、名前ノードは、リース・リカバリを始めるために、必要に応じて後続のブロックレプリカのリカバリをスケジュールできるInternalReleaseLease()を呼び出すことができる。その後、名前ノードは、ブロックレプリカのリカバリを実行するために、ファイルの最新ブロックのための新たな生成スタンプを生成し、かつ、その新たな生成スタンプをリカバリIDとして用いてそのブロックのメタデータを他のレプリカに同期させるために第1のデータノードを選択することができる。その第1のデータノードはその後、ブロックの正しい長さを調整するために、他のデータノードと通信することができる。例えば、ブロックの正しい長さは、問題のブロック又はブロックの部分を格納しているすべてのデータノードに対して共通である最小の長さと同じ程度に選択され得る。そのような調整が一旦完了すると、第1のデータノードは、CommitBlockSynchronization()呼び出しを用いて、ジオノードに対するリカバリの結果を確認することができる。CommitBlockSynchronization()呼び出しは、新たな生成スタンプ、新たな長さ、及び新たなレプリカ位置を用いて、ファイルの最後のブロックを更新するように構成され得る。ファイルはその後、閉じられる。この最後のブロックは、それが死ぬ前にクライアントによって何らデータが書き込まれなければ、削除され得る。
<LANリース及びCノード>
LAN環境では、複数のCノードのうちの任意の1つが、そのリース・マネージャがリースが満了したことを検出するときに、リース・リカバリを起動し得る。しかしながら、リースの対象であったファイル又はそのデータブロックに対する任意の変化は、すべてのCノード上で首尾一貫した複製を提供するために調整されなければならない。
一実施の形態によれば、ファイルの状態はInternalReleaseLease()内で分析され得るが、Cノードは、名前ノードとは異なる、その段階でファイルを修正しない。もし、分析されたファイルが既に閉じられていたら、Cノードは単に復帰する。しかしながら、一実施の形態によれば、もしそのファイルが既に閉じられていなければ、そのInternalReleaseLease()・プロセスは、ファイルの最後のブロックの状態に応じて、次の2つの提案のうちの1つを発行する。
1)もし、分析されたファイルのすべてのブロックが完全であれば、完了の提案(CompleteProposal)が発行され得、それにより、Cノードは、調整された態様でそのファイルを単に閉じることができる。
2)もし分析されたファイルのブロックが完全でなく、ブロック・レプリカ・リカバリが必要であれば、リカバリブロック提案(RecoverBlockProposal)が発行され得る。
もし、リカバリが、(追加、開く、又はリースのリカバリ(RecoverLease)のような)同意を処理している間のリースのソフト限界の満了によって起動されるのならば、その同意を実行しているCノードはその後、ブロック・リカバリを起動することができる。一実施の形態によれば、もしハード限界がリースのために満了するのであれば、ブロック複製器のみが、完了又はブロックのリカバリ(RecoverBlock)を提案するであろう。この方法では、複数のCノードが同じファイルのリースのリカバリを開始する見込みが最小化される。もし、Cノードが提案を発行できるならば、ShouldReleaseLease()手続きが定義され得る。
完了の同意(すべての関係するデータノードが今やファイルの同じブロックを格納している)がCノードに到着するとき、Cノードは、リース満了の対象であったファイルを閉じることができ、それによって、リース・リカバリが整然と完了する。複数のCノードによって完了の提案が提案されるというイベントにおいては、その後、最初の時間内の完了の同意がそのファイルを閉じ、後続のものは、何もさらにする必要がない。
ブロックのリカバリの提案(RecoverBlockProposal)に応答するブロックのリカバリ(RecoverBlock)に対する同意は、InitializeBlockRecovery()を実行することができる。これは、
1)ユニークなリカバリIDである新たなGSNを生成し、
2)ジャーナルにリースの再割り当てについての記録を書き込み、
3)最新のブロックの状態をリカバリ中(UNDER_RECOVERY)状態に変更し、
4)そのブロックをリカバリ対象(to-be-recovered)のキューに加える。
すべてのCノードが最新のブロックのためにブロック・レプリカ・リカバリをスケジュールできる一方で、唯一のブロック複製器として指定されたCノードのみが実際に第1のデータノードにリカバリを実行するかを尋ねるであろう。ブロック複製器Cノードのみがデータノード・コマンドを用いてデータノードに返答できるからである。
ブロック複製器として指定されているCノードはその後、第1のデータノードを用いてブロックのリカバリをスケジュールすることができる。リカバリの最後の段階では、第1のデータノードは、CommitBlockSynchronization()呼び出しを用いて、ブロック複製器であるCノードに対してリカバリ結果を確認する。CommitBlockSynchronization()はまた、それが最新のブロックを更新又は削除し、及び/又は、ファイルを閉じるのに有効であることから調整され、永続的な記録を維持するために記録を書き込むことを含む。ブロック複製器Cノードはその後、ブロック同期の委託提案(CommitBlockSynchronizationProposal)を提出し、対応する同意が到着し実行される第1のデータノードに対して応答する。同意の実行は、正常な名前ノードのCommitBlockSynchronization()動作を実行する。
<ジオノード:WANでのリース>
ジオノードは、一実施の形態によれば、外国レプリカをリカバリできないことを思い出してほしい。データノードが自国のジオノードに対してのみ報告を行うからである。ブロックは最初に、そのファイルの生成が始まるデータセンター内で生成される。書き込まれたファイルの完了したブロックのレプリカは、一実施の形態によれば、元のデータセンターで完全な複製に到達したことに応じてのみ、他のデータセンターに転送される。
WAN環境において、1つのファイルがデータセンターA(DCA)上でクライアントによって生成され、そのクライアントがファイルを閉じる前に死んだとする。データセンターB(DCB)では、ジオノードはそのファイル及びそのブロックについての情報を有するであろう。DCBはまた、そのファイルの完了したブロック(DCA上で完全に複製されたブロック)の自国のブロックレプリカを含むことができる。しかしながら、DCBは、構築中のブロックのいかなるレプリカも含むべきではない。
WANのためのShouldReleaseLease()は、ソフト期限満了及びハード期限満了の両方のケースにおいて、LANのための場合と同様の方法で行動する。すなわち、リースのリカバリは、任意のデータセンター上のジオノードによって起動され得る。同様に、完了の同意は、LANのケースで動作するのと同様に、WANのケースでも動作するよう構成されることができ、ジオノードはそのファイルを閉じ得る。
ブロックのリカバリ(RecoverBlock)に対する同意を実行している間、各ジオノードは、そのファイルの最新のブロックの外国及び自国における期待される位置をチェックする。その後、以下に示す更なる動作がリースの対象であるファイルのブロックの状態に応じて行われる。
1.もしそのファイルのブロックが外国位置のみを有しているならば、ジオノードは、ブロックのリカバリの初期化(InitializeBlockRecovery)を行わない。
2.もしそのブロックが自国位置のみを有しているならば、ジオノードは、リカバリがレプリカを有しているデータセンター上で実行されることを確実にするため、ブロックのリカバリの初期化(InitializeBlockRecovery)を行わなければならない。
3.もしそのブロックが外国と自国の位置の両方を有しているならば、ブロックのリカバリ(RecoverBlock)に対する提案を提出したDC中のジオノードが、ブロックのリカバリの初期化(InitializeBlockRecovery)を行わなければならない。
4.もしそのブロックがレプリカを有していなければ、ブロックのリカバリの初期化(InitializeBlockRecovery)は、生きているデータノードの中からランダムに選ばれたものに対してスケジュールされる。これは、ブロックのリカバリ(RecoverBlock)に対する提案を提出したDCに属するジオノード上で実行される。
したがって、複数のDCのうちの1つにおける1つのブロック複製器ジオノードのみが、ブロックのリカバリを開始するであろう。レプリカを回復することの命令は、第1の自国データノードに対して、しかし、外国自国を問わずすべての期待される位置に送信されるであろう。第1のデータノードは、レプリカを含むすべてのデータノードと話すことにより、ブロックの正しい長さを決定する。これは、異なる複数のDC上のデータノード間での通信を引き起こすことができる。リカバリの後には、第1のデータノードはブロック複製器であるジオノードに対し、ブロック同期の委託(CommitBlockSynchronization)呼び出しを送ることができる。このジオノードはその後、ブロック同期の委託提案(CommitBlockSynchronizationProposal)を提出することができる。
一実施の形態によれば、対応するブロック同期の委託(CommitBlockSynchronization)に対する同意は、レプリカのための新たなターゲットとして、外国及び自国の位置を含み得る。外国の位置は、現在のジオノードにより、外国レプリカ報告(ForeignReplicaReport)として取り扱われる。すなわち、それは新たに報告された位置を外国のものとして格納し、最新のブロックを強制的に完了させ、要求があればファイルを完成させる。
<非対称のブロック複製>
ブロック複製は、一実施の形態によれば、クラスタ内のすべてのデータセンターにわたって同じである必要はない。実際、ファイルごとに選択可能な複製因子が提供され得、その複製因子は、ファイルが生成されるときにファイルごとに設定される。複製因子は、一実施の形態によれば、SetReplication()提案を用いて、より遅い時間にリセットされ得る。ファイルは、デフォルトの複製因子を用いて生成され得る。例えば、3というデフォルトの複製が設定され得る。代わりに、例えば2又は5のような、他の複製因子が設定されてもよい。WANクラスターでは、そのようなセマンティックスは通常、複数のファイルが異なるデータセンター上で、ファイルの生成者ごとに特定される値に等しい複製因子という、同じ複製因子を有することを意味する。
しかしながら、異なるデータセンター上では、複製を低減する又は増加させることを許可することが望ましい。例えば、あるデータセンターが主であると看做され、他のデータセンターが従であると看做されるとき、ある人は、例えばコストの制約又は好ましいサービス品質のために、従たるデータセンターにはより少ない数のレプリカを保持することを願うかもしれない。
実際、ファイル生成呼び出しは、データセンターごとにデフォルトの複製因子を許可するように修正され得る。このケースでは、リーズナブルなデフォルトの振る舞いが、複製因子を現在のデータセンターのデフォルト値に設定するために存在し得る。例えば、DCAがデフォルトの複製rAを有し、DCBがそのデフォルトをrBに設定したとする。また、DCA上に位置しているクライアントが、複製因子rを有するファイルを、今、生成するものとする。すると、DCAは、そのファイルのためにその複製をrに設定するであろう。一方、DCBは、その複製因子をそのデフォルトの複製rBに設定するであろう。一実施の形態によれば、それ故、ファイル生成呼び出し内の単一の複製因子パラメータが元のDC上のファイルのための複製値として取り扱われ得る一方、他のDCは、そのファイルの複製を設定するために、それらのデフォルトの複製因子を使用する。
一実施の形態によれば、複製因子は、単一の複製値をパラメータとして許容するように構成され得るSetReplication()呼び出しによって修正され得る。WANクラスターでは、このパラメータは、クライアントの呼び出しが実行されたデータセンター上のファイルの新たな複製因子として取り扱われ得る。他のデータセンターは、対応する複製設定(SetReplication)に対する同意を、もしそれが外国のジオノードによって提案されたものであるならば、単に無視することができる。そのようなメカニズムを用いて、複製因子は、異なるデータセンター上で随意に設定され得る。複製因子は、データセンター独自の属性になることができ、それ故、一対一のメタデータの複製から除外され得る。
<選択的なデータ複製>
一実施の形態によれば、選択的なデータ複製は、選択されたデータにつき、指定された1つのデータセンター又は指定された複数のデータセンターからのみ見ることができ、他のデータセンターからの複製又はアクセスを許可しないようにすることができる。実施の形態によれば、1以上の以下の代替案が実装され得る。
− ディレクトリは、すべてのデータセンターから複製され、アクセス可能である。
− ディレクトリは、すべてのデータセンターから複製され、読み出され得るが、所定のサイトでのみ書き込み可能である。
− ディレクトリは、いくつかのデータセンター上で複製されるが、他のデータセンターへは決して複製されない。
− ディレクトリは、1つのデータセンター上でのみ複製され、見ることができる。
現在の複製アーキテクチャを思い出すと、それは、同じ単位の名前空間が複製のノード上で維持され得ることを仮定する。調整エンジンプロセス822は、さらに、複数のジオノードの間で、及び、データセンター間でのメタデータ及びファイルシステムのデータの複製が首尾一貫していることを保証する。したがって、言葉「選択的なデータの複製」は、名前空間にというよりも、地理的に分散したクラスター内に格納されるデータについて適用可能である。
上で導入された非対称のブロック複製においては、データセンターに特有のファイル属性、すなわち複製が導入され得る。この文脈では、0という特別なケースの値が選択的なデータ複製において重要な役割を果たす。実際、もしファイルの複製因子属性がデータセンター(DCB)に対して0に設定されるとすると、そのファイルのブロックは、DCB上で決して複製されない。元々、現在のHDFSクラスターは、0複製でファイルを生成することを許可しない。しかしながら、実施の形態は、値0を許容するようにSetReplication()を拡張する。そのSetReplication()は、一実施の形態によれば、現在のデーンセンターに対してのみ、ファイルの複製因子属性を変更する。したがって、0という値は、そのデータセンターにおいて、0という複製値に関連付けられたファイルのブロックの複製を許容しないであろう。
実施の形態によれば、SetReplication()は、ディレクトリに対して適用するために、同様に拡張され得る。もし、複製因子の属性がディレクトリ上に設定されるならば、サブツリーに属するすべてのファイルは、その複製因子属性が特定のサブ・ディレクトリ又は特定のファイルのために明示的に他の値にリセットされない限り、その複製因子属性を受け継ぐ。ディレクトリ上で複製因子属性を設定することはデフォルトの複製パラメータの拡張であると考えられることができ、その中では、複製因子属性がルート・ディレクトリ上で設定され得る。一実施の形態によれば、もし明示的に設定されなければ、ファイルの複製因子属性は、複製設定を有している最も近い親の複製因子属性によって決定され得る。
異なるデータセンターにおけるファイルとディレクトリの選択的な可視性は、データセンターに特有の他の属性として定義され得るパーミッションによって制御され得る。SetPermissions()及びSetOwner()呼び出しは、SetReplication()と同様、それらの入力値を他のデータセンターに伝播しない。一実装によれば、1つ又は1つのファイルに対してパーミッション000を設定することは、そのデータセンター上でのそれぞれのオブジェクトへのアクセスを禁止し、そのようなファイルをデータセンター上で効果的に「不可視」とする。一実施の形態によれば、(クラスターの管理者を代表する)ルートのユーザは、所有者とパーミッションを変更する完全な権限を提供され得る。
<WANクラスター上での役割、災害耐性>
上述したように、分散型の調整システム内におけるCノードは、プロポーザー、ラーナー、及びアクセプタという3つの主たる役割を引き受け得る。また、各ノードは、1つ以上のそのような役割を引き受けることができる。LAN環境ではしばしば、すべてのCノードが3つの役割のすべてを引き受ける。実際、各Cノードは、自身の状態をLANの複数のCノードと同期した状態に保つため、ラーナーでなければならない。クライアント要求を処理するために、各Cノードはまた、プロポーザであるべきである。アクセプタの役割は、システムの信頼性、すなわち、同時に起こる複数の故障に対する回復力を最大化するために、可能な限り多くのCノードに割り当てられ得る。そのような実装では、1以上のCノードは、大多数のCノードが起動して動作している状態である限り、提供されたサービスに実質的な影響を与えることなく故障し得る。
一実施の形態によれば、2つ以上のデータセンターを有するWANクラスターはまた、個々のジオノードの故障に対する耐性を用意すべきである。加えて、複数のデータセンターのうちの1つが故障し、又は、何らかの理由で他の(複数の)データセンターから孤立した(すなわち、これらにアクセス不能となった)場合にもサービスが起動された状態を維持することが望まれる。これは、例えば複数のデータセンター間のWANクラスターチャンネルが故障するときに発生し得る。もし2つのデータセンターが互いに孤立した状態となったとして、それらの名前空間のインスタンスに対して首尾一貫した変更をすることができるよう、それらの両方は独立して動作するべきではない。しかしながら、それらのうちの一方は動作可能な状態を維持し、他方は、その動作しているデータセンターとの通信が回復したときに追いつくための能力を提供されるべきである。一実施の形態によれば、これは、あるデータセンターが他より多くのジオノードを有するであろうことを意味する奇数個のジオノードを実行することによって達成され得る。
複数のデータセンターが対称的に設定されるときには、異なるアプローチが使用され得る。例えば、DCA及びDCBがそれぞれ3つのジオノードを実行していると仮定することができる。DCAからの複数のジオノードはアクセプタであり、そのうちの1つはタイブレイカーとして指定されている。これは、3つのジオノードが、もしそれらが指定されたタイブレイカーであるジオノードを含むのであれば、クォーラムを形成することを意味する。この構成では、DCBからの複数のジオノードがいずれも利用可能でないというイベントの際にさえ、DCAは動作は継続する。この構成では、DCAから分離されているDCBは、クォーラムを失い、少なくともDCAとの通信が回復するまで、麻痺させられる(すなわち、名前空間のそのインスタンスに対する変化を伴う任意のさらなる同意を処理しない)であろう。
そのような構成は、もしデータセンターが周期的な作業量の変化を経験するのであれば、特に有益であり得る。例えば、DCAは、日中により高い処理負荷を有し、DCBは、夜間により比較的高い処理負荷を有すると仮定する。一実施の形態によれば、クォーラムは、日中にDCAのジオノードに対してアクセプタの役割を割り当て、対応して、夜間にはアクセプタの役割をDCBのジオノードに割り当てることによって、ローテーションされ得る。
図9は、一実施の形態による、コンピュータに実装された方法のフローチャートである。示されるように、ブロックB91は、ワイド・エリア・ネットワーク上で第1のデータセンターと、地理的に離れた第2のデータセンターとに広がる単一の分散ファイルシステム(計算装置)クラスターの確立を指令する。加えて、追加のデータセンター(図示せず)が、同じ分散ファイルシステムに含まれてもよく、かつ、その分散ファイルシステムによって管理されてもよい。図8に示すように、第1のデータセンター804は、複数の第1の名前ノード(ここでは、ジオノードとも呼ばれる)810,812,及び814(その他の第1の名前ノードは、図8には示されていない)と、824,826,828,及び830(その他の第1のデータノードは、図8には示されていない)に示されるようにそれぞれクライアントファイルのデータブロックを格納するように構成された複数の第1のデータノード(ここでは、データノードとも呼ばれる)とを含み得る。第2のデータセンターは、図8に806で示されるように、複数の第2の名前ノード816,818,及び820(その他の第2の名前ノードは、図8には示されていない)と、それぞれクライアントファイルのデータブロックを格納するように構成された複数の第2のデータノード832,834,836,及び838(その他の第2のデータノードは、図8には示されていない)とを含み得る。ブロックB92は、複数の第1の名前ノードのそれぞれの中と、複数の第2の名前ノードのそれぞれの中とに、クラスター802の名前空間の状態を格納するように指令する。B93に示されるように、第1の名前ノードに格納される名前空間の状態は、1以上の選択された第1のデータノードに書き込まれるデータブロックに応答して更新され得る。同様に、B94は、第2の名前ノードに格納される名前空間の状態が1以上の選択された第2のデータノードに書き込まれるデータブロックに応答して更新され得ることを指令する。最後に、B95に示されるように、第1の名前ノード(810,812,814・・・)に格納される名前空間の状態に対する更新と、第2の名前ノード(816,818,820・・・)に格納される名前空間の状態に対する更新とが、名前空間の状態を単一の分散ファイルシステムのクラスターの第1及び第2のデータセンター804,806にわたって首尾一貫した状態で維持すべく、(例えば、調整エンジンプロセス822によって)調整され得る。そのような更新は、本書で開示した順序付けられた同意のセットに従って実行され得る。すなわち、名前ノード(Cノード又はジオノード)内に格納される名前空間の状態は所与の時点では他の名前ノードに格納される名前空間の状態と異なっているかもしれないが、本書に開示されるグローバルに順序付けられた同意のシーケンスは、(第1及び第2の複数の名前ノードのそれぞれの中で実行されるように構成され得る)調整エンジンプロセス822によって管理されていることから、それが位置しているデータセンターにかかわりなく、複数の名前ノードのそれぞれが、順序付けられた同意のセットを順に実行することを通して、やがてはその格納している名前空間の状態を他の名前ノード内に格納されている名前空間の状態と同意した状態とすることを確実にする。
第1の名前ノード810,812,814のそれぞれが(「予備」「非アクティブ」「スタンバイ」に対立するものとしての)「アクティブ」な名前ノードであるとき、他の第1の名前ノード810,812,814のうちの1以上は、第1のデータセンター804内で名前空間の状態を更新しているかもしれない。同時に、他の第2の名前ノード816,818,820のうちの1以上もまた、第2のデータセンター806内で名前空間の状態を更新しているかもしれない。
さらなる実施の形態によれば、複数の第1の名前ノードのそれぞれは、第1のデータセンター内の他の1以上の第1の名前ノードが名前空間の状態を更新している間に、名前空間の状態を更新するように構成され得る。一実施の形態によれば、複数の第2の名前ノードのそれぞれは、第2のデータセンター内の他の1以上の第2の名前ノードが名前空間の状態を更新している間に、名前空間の状態を更新するように構成され得る。第1のデータセンター内の複数の第1の名前ノードのそれぞれはまた、第2のデータセンター内の複数の第2の名前ノードのいくつかが名前空間の状態を更新している間に、名前空間の状態を更新するように構成され得る。
さらなる実施の形態によれば、複数の第1のデータノードのそれぞれは、第1のデータセンター内の複数の第1の名前ノードとのみ通信するように構成される。同様に、複数の第2のデータノードのそれぞれは、第2のデータセンター内の複数の第2の名前ノードとのみ通信するように構成される。調整エンジンプロセスは、第1及び第2の複数の名前ノードから、名前空間の状態を更新し、呼応して、複数の第1及び第2の名前ノードが名前空間の状態を更新しようとする順序を特定する順序付けられた同意のセットを生成することについての提案を受信するように構成され得る。実際、複数の第1の名前ノード及び複数の第2の名前ノードは、調整エンジンプロセスから順序付けられた同意のセットが受信されるまで、名前空間の状態に対する更新を遅延させるよう構成される。さらに、調整エンジンプロセス(図8では822)は、複数の第1及び第2の名前ノードのうちの1つ以上の障害、及び/又は、複数の第1及び第2のデータノードのうちの1つ以上の障害の際、名前空間の状態を首尾一貫した状態に維持するように構成され得る。
例えば、(単一の、地理的に分散した)ファイルシステムは、ハドゥープ・分散ファイルシステムの1つのバージョンであり得、又は、ハドゥープ・分散ファイルシステムの1つのバージョンを含み得る。他の分散ファイルシステムは、実施の形態によれば、当業者が理解できるように工夫され、改造され得る。一実施の形態によれば、第1のデータセンターのクライアントのファイルの複数のデータブロックの少なくともいくつかのレプリカは、第2のデータセンター内の複数の第2のデータノードのうちの選択された1つ以上に格納され得る。第2のデータセンターのクライアントのファイルの複数のデータブロックの少なくともいくつかのレプリカは、第1のデータセンター内の複数の第1のデータノードのうちの選択された1つ以上に格納され得る。
一実施の形態によれば、第1のデータセンター内の第1のデータノードのそれぞれは、WAN上の第2のデータセンターの複数の第2のデータノードのうちの選択された1つに対し、選択されたデータブロックを非同期で送るよう構成され得る。選択されたデータブロックは、その選択されたデータブロックの所定数(例えば3個)のレプリカが、第1のデータセンター内の複数の第1のデータノードのうちの選択された1つに格納された後、第1のデータセンターから第2のデータセンターに送信され得る。
一実施の形態によれば、複数の第1の名前ノードのうちの少なくともいくつか(一実施の形態によれば、ブロック複製器の責任が割り当てられた名前ノード以外のすべて)は、複数の第2の名前ノードによる消費のために、複数の第1のデータノードに格納されているすべてのデータブロックのリストを含む外国ブロック報告を生成するように構成され得る。同様に、複数の第2の名前ノードのうちの少なくともいくつか(一実施の形態によれば、ブロック複製器の責任が割り当てられた名前ノード以外のすべて)は、複数の第1の名前ノードによる消費のために、複数の第2のデータノードに格納されているすべてのデータブロックのリストを含む外国ブロック報告を生成するように構成され得る。生成された外国ブロック報告は、ブロック報告ファイルとしてファイルシステムに書き込まれ、第1及び第2のデータセンター内の第1及び第2の名前ノードのそれぞれはその後、ファイルシステムから周期的にそのブロック報告ファイルを読み出し、それぞれに格納している名前空間の状態を対応して更新することができる。
複数の第1の名前ノード及び複数の第1のデータノードは、任意のデータブロックがワイド・エリア・ネットワーク上で第2のデータセンターに送信される前に、第1のデータセンターのクライアントファイルのデータブロックの書き込みを完了するように構成される。この方法では、これらのデータブロックのレプリカがWANのスピードで他のデータセンターに非同期で送信され得る一方で、クライアントの書き込みはLANのスピードで完結する。一実施の形態によれば、第1の名前ノード及び第1のデータノードは、クライアントファイルのデータブロックが第1のデータセンター内で第1の所定のかつ選択可能な回数複製されることとなるように構成され得る。同様に、第2の名前ノード及び第2のデータノードは、クライアントファイルのデータブロックが第2のデータセンター内で第2の所定のかつ選択可能な回数複製されることとなるように構成され得る。第1の所定のかつ選択可能な回数は、第2の所定のかつ選択可能な回数と同じであってもよいし、異なっていてもよい。
本開示の一定の実施の形態を記述してきたけれども、これらの実施の形態は例として提示されたものに過ぎず、開示の範囲を限定することを意図したものではない。実際に、本書に開示された新規なコンピュータに実装された方法、装置、及びシステムは、様々な他の形態に具体化され得る。例えば、一実施の形態は、計算装置によって実行されたときに、その計算装置に本書で記述され又は示されたワイド・エリア・ネットワーク上での分散ファイルシステムを実行させることになる一連の命令を表すデータが格納された有形、固定、機械読み取り可能なメディアを含む。例えば、一連の命令はダウンロードし、その後、メモリー装置(例えば、図7に702で示したようなもの)、記憶装置(例えば、固定式又は回転式のメディア装置又は他のデータキャリア)上に格納されることができる。さらに、本書で記述した方法及びシステムの形態には、様々な省略、代用、変更が本開示の精神を離れることなく、なされ得る。添付の複数の請求項及びそれらの等価物は、本開示の範囲及び精神に含まれるそのような形態及び変形例をカバーすることを意図している。例えば、当業者は、様々な実施の形態において、実際の物理的及び論理的な構造が図示したものと異なり得ることを理解するであろう。実施の形態によれば、上記例で記述されたあるステップは削除され得るし、他のステップが追加され得る。また、上で開示された特定の実施の形態の特徴及び属性は、追加の実施の形態を構成するために異なる方法で結合され得、それらのすべては本開示の範囲に含まれる。本開示は、一定の好ましい実施の形態及び適用を提供するけれども、本書に規定したすべての特徴及び有利点を備えない実施の形態を含む当業者にとって明らかな他の実施の形態もまた、本開示の範囲内である。したがって、本開示の範囲は、添付の複数の請求項を参照することによってのみ定義されることを意図している。

Claims (43)

  1. 単一の地理的に分散したファイルシステムを実行するように構成された計算装置を含むノードのクラスターであって、
    第1のデータセンターと、
    前記第1のデータセンターとは地理的に離れており、かつ、ワイド・エリア・ネットワーク上で前記第1のデータセンターと結合された第2のデータセンターと、
    調整エンジンプロセスとを備え、
    前記第1のデータセンターは、
    それぞれクライアントファイルのデータブロックを格納するように構成された複数の第1のデータノードと、
    それぞれ前記クラスターの名前空間の状態を更新するように構成された複数の第1の名前ノードとを有し、
    前記第2のデータセンターは、
    それぞれクライアントファイルのデータブロックを格納するように構成された複数の第2のデータノードと、
    それぞれ前記クラスターの前記名前空間の前記状態を更新するように構成された複数の第2の名前ノードとを有し、
    前記複数の第1及び第2の名前ノードは、前記複数の第1及び第2のデータノードに書き込まれたデータブロックに応答して、前記名前空間の前記状態を更新するように構成され、
    前記調整エンジンプロセスは、前記複数の第1の名前ノード及び前記第2の名前ノードに広がり、前記名前空間の前記状態が前記クラスターの前記第1及び第2のデータセンターにわたって首尾一貫した状態に維持されるよう前記複数の第1及び第2の名前ノードによって格納される前記名前空間の前記状態に対する更新を調整するように構成される
    クラスター。
  2. 前記複数の第1の名前ノードのそれぞれは、前記第1のデータセンター内の1以上の他の前記第1の名前ノードもまた前記名前空間の前記状態を更新しているのと同時に、前記名前空間の前記状態を更新するように構成される
    請求項1に記載のクラスター。
  3. 前記複数の第2の名前ノードのそれぞれは、前記第2のデータセンター内の1以上の他の前記第2の名前ノードもまた前記名前空間の前記状態を更新しているのと同時に、前記名前空間の前記状態を更新するように構成される
    請求項1に記載のクラスター。
  4. 前記第1のデータセンター内の前記複数の第1の名前ノードは、前記第2のデータセンター内の前記複数の第2の名前ノードのいくつかもまた前記名前空間の前記状態を更新しているのと同時に、前記名前空間の前記状態を更新するように構成される
    請求項1に記載のクラスター。
  5. 前記第2のデータセンター内の前記複数の第2の名前ノードは、前記第1のデータセンター内の前記複数の第1の名前ノードのいくつかもまた前記名前空間の前記状態を更新しているのと同時に、前記名前空間の前記状態を更新するように構成される
    請求項1に記載のクラスター。
  6. 前記複数の第1のデータノードのそれぞれは、前記第1のデータセンター内の前記複数の第1の名前ノードとのみ通信するよう構成され、
    前記複数の第2のデータノードのそれぞれは、前記第2のデータセンター内の前記複数の第2の名前ノードとのみ通信するよう構成される
    請求項1に記載のクラスター。
  7. 前記調整エンジンプロセスは、前記第1及び第2の複数の名前ノードから前記名前空間の前記状態を更新することについての提案を受信し、呼応して、前記複数の第1及び第2の名前ノードがそれぞれ格納している前記名前空間の状態を更新する順序を特定する順序付けられた同意のセットを生成するよう構成される
    請求項1に記載のクラスター。
  8. 前記複数の第1の名前ノード及び前記複数の第2の名前ノードは、前記調整エンジンプロセスから前記順序付けられた同意のセットが受信されるまで、前記名前空間の前記状態に対する更新を遅延させる
    請求項7に記載のクラスター。
  9. 前記調整エンジンプロセスは、前記第1及び第2の名前ノードのうちの1以上の障害、又は、前記第1及び第2のデータノードのうちの1以上の障害の際に、前記名前空間の前記状態を首尾一貫した状態に維持するように構成される
    請求項1に記載のクラスター。
  10. 前記調整エンジンプロセスは、前記第1及び第2のデータセンターの障害の際に、前記名前空間の前記状態を首尾一貫した状態に維持するように構成される
    請求項1に記載のクラスター。
  11. 前記単一の地理的に分散したファイルシステムは、ハドゥープ分散ファイルシステム(HDFS)の1バージョンを含む
    請求項1に記載のクラスター。
  12. 前記第1のデータセンターのクライアントによって書かれたファイルの複数のデータブロックの少なくともいくつかのレプリカは、前記第2のデータセンター内の前記複数の第2のデータノードのうちの選択された1つに格納され、
    前記第2のデータセンターによって書かれたクライアントのファイルの複数のデータブロックの少なくともいくつかのレプリカは、前記第1のデータセンター内の前記複数の第1のデータノードのうちの選択された1つに格納される
    請求項1に記載のクラスター。
  13. 前記第1のデータセンターの前記複数の第1のデータノードのそれぞれは、選択された複数のデータブロックを、前記ワイド・エリア・ネットワーク上で、前記第2のデータセンターの前記複数の第2のデータノードのうちの選択された1つに対して非同期に送信するよう構成される
    請求項1に記載のクラスター。
  14. 前記選択された複数のデータブロックは、前記選択された複数のデータブロックの所定数のレプリカが前記第1のデータセンター内の前記複数の第1のデータノードのうちの選択された1つに格納された後、前記第1のデータセンターから前記第2のデータセンターに送信される
    請求項13に記載のクラスター。
  15. 前記複数の第1の名前ノードのうちの少なくともいくつかは、前記複数の第2の名前ノードによる消費のために、前記複数の第1のデータノード内に格納されるすべてのデータブロックのリストを含むブロック報告を生成するよう構成され、
    前記複数の第2の名前ノードのうちの少なくともいくつかは、前記複数の第1の名前ノードによる消費のために、前記複数の第2のデータノード内に格納されるすべてのデータブロックのリストを含むブロック報告を生成するよう構成される
    請求項1に記載のクラスター。
  16. 生成された前記ブロック報告は、ブロック報告ファイルとして前記ファイルシステムに書き込まれ、
    前記第1及び第2のデータセンター内の前記第1及び第2の名前ノードは、前記ファイルシステムから前記ブロック報告ファイルを周期的に読み出し、対応してそれぞれに格納される前記名前空間の状態を更新するよう構成される
    請求項15に記載のクラスター。
  17. 前記複数の第1の名前ノード及び前記複数の第1のデータノードは、前記第1のデータセンターのクライアントファイルのデータブロックの書き込みを、前記クライアントファイルの前記データブロックのいくつかが、前記ワイド・エリア・ネットワーク上で前記第2のデータセンターに送信される前に完了するように構成される
    請求項1に記載のクラスター。
  18. 前記複数の第1の名前ノード及び前記複数の第1のデータノードは、クライアントファイルの複数のデータブロックが前記第1のデータセンター内で第1の所定のかつ選択可能な回数複製されることとなるように構成され、
    前記複数の第2の名前ノード及び前記複数の第2のデータノードは、前記クライアントファイルの前記複数のデータブロックが前記第2のデータセンター内で第2の所定のかつ選択可能な回数複製されることとなるように構成される
    請求項1に記載のクラスター。
  19. 前記第1の所定のかつ選択可能な回数は、前記第2の所定のかつ選択可能な回数と同じである
    請求項18に記載のクラスター。
  20. 前記第1の所定のかつ選択可能な回数は、前記第2の所定のかつ選択可能な回数とは異なる
    請求項18に記載のクラスター。
  21. 前記調整エンジンプロセスは、前記第1及び第2の複数の名前ノードのそれぞれの中で動作するよう構成される
    請求項1に記載のクラスター。
  22. メタデータ及びファイルシステムのデータは、第1及び第2のデータセンターにわたって複製される
    請求項1に記載のクラスター。
  23. ワイド・エリア・ネットワーク上に広がる単一の分散ファイルシステムと、複数の第1の名前ノード及び複数のクライアントファイルの複数のデータブロックを格納するように構成された複数の第1のデータノードを含む第1のデータセンター、並びに、地理的に離れ、かつ、複数の第2の名前ノード及び複数のクライアントファイルの複数のデータブロックを格納するように構成された複数の第2のデータノードを含む第2のデータセンターを含むクラスターとを確立すること、
    前記複数の第1の名前ノードのそれぞれの中に、及び、前記複数の第2の名前ノードのそれぞれの中に、前記クラスタの名前空間の状態を格納すること、
    前記複数の第1及び第2のデータノードに複数のデータブロックが書き込まれたことに応答して、前記複数の第1の名前ノード及び前記第2の名前ノードの中に格納される前記名前空間の状態を更新すること、及び、
    前記複数の第1の名前ノード内に格納され、かつ、前記複数の第2の名前ノード内に格納される前記名前空間の前記状態に対する更新を、前記名前空間の前記状態が前記クラスターの前記第1及び第2のデータセンターにわたって首尾一貫した状態を維持するよう調整すること
    を含むコンピュータに実装された方法。
  24. 前記複数の第1の名前ノード内に格納される前記名前空間の前記状態を更新することは、前記名前空間の前記状態を更新するよう構成された前記複数の第1の名前ノードのそれぞれを用いて、前記第1のデータセンター内の1以上の他の前記第1の名前ノードもまた前記名前空間の前記状態を更新する間に実行される
    請求項23に記載のコンピュータに実装された方法。
  25. 前記複数の第2の名前ノード内に格納される前記名前空間の前記状態を更新することは、前記名前空間の前記状態を更新するよう構成された前記複数の第2の名前ノードのそれぞれを用いて、前記第2のデータセンター内の1以上の他の前記第2の名前ノードもまた前記名前空間の前記状態を更新する間に実行される
    請求項23に記載のコンピュータに実装された方法。
  26. 前記複数の第1の名前ノードに格納される前記名前空間の前記状態を更新することは、前記複数の第2の名前ノード内に格納される前記名前空間の前記状態を更新している間に実行される
    請求項23に記載のコンピュータに実装された方法。
  27. 前記複数の第1のデータノードのそれぞれが前記第1のデータセンター内の前記複数の第1の名前ノードとのみ通信することを可能にすること、及び
    前記複数の第2のデータノードのそれぞれが前記第2のデータセンター内の前記複数の第2の名前ノードとのみ通信することを可能にすること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  28. 調整エンジンプロセスによって、前記名前空間の前記状態を更新することについての前記第1及び第2の複数の名前ノードからの提案を受信すること、及び、
    呼応して、前記複数の第1及び第2の名前の度がそれぞれに格納している前記名前空間の状態を更新する順序を特定する順序付けられた同意のセットを生成すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  29. 前記複数の第1及び第2の名前ノードが、前記調整エンジンプロセスから前記順序付けられた同意のセットが受信されるまで、前記名前空間の前記状態に対する更新を行うことを遅延させること
    をさらに含む請求項28に記載のコンピュータに実装された方法。
  30. 前記調整エンジンプロセスが、前記複数の第1及び第2の名前ノードのうちの1以上の障害又は前記複数の第1及び第2のデータノードのうちの1以上の障害の際に、前記名前空間の前記状態を首尾一貫した状態に維持すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  31. 前記調整エンジンプロセスが、前記第1及び第2のデータセンターの障害の際に、前記名前空間の前記状態を首尾一貫した状態に維持すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  32. 前記分散ファイルシステムは、ハドゥープ分散ファイルシステム(HDFS)の1バージョンを含む
    請求項23に記載のコンピュータに実装された方法。
  33. 前記第1のデータセンターのクライアントのファイルの複数のデータブロックの少なくともいくつかのレプリカを、前記第2のデータセンター内の前記複数の第2のデータノードのうちの選択された1つに格納すること、及び、
    前記第2のデータセンターのクライアントのファイルの複数のデータブロックの少なくともいくつかのレプリカを、前記第1のデータセンター内の前記複数の第1のデータノードのうちの選択された1つに格納すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  34. 前記第1のデータセンターの前記複数の第1のデータノードのそれぞれにより、選択された複数のデータブロックを、前記ワイド・エリア・ネットワーク上で、前記第2のデータセンターの前記複数の第2のデータノードのうちの選択された1つに対して送信すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  35. 前記選択された複数のデータブロックを、前記選択された複数のデータブロックの所定数のレプリカが前記第1のデータセンター内の前記複数の第1のデータノードのうちの選択された1つに格納された後、前記第1のデータセンターから前記第2のデータセンターに送信すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  36. 前記複数の第1の名前ノードのうちの少なくともいくつかにより、前記複数の第2の名前ノードによる消費のために、前記複数の第1のデータノード内に格納されるすべてのデータブロックのリストを含むブロック報告を生成すること、及び、
    前記複数の第2の名前ノードのうちの少なくともいくつかにより、前記複数の第1の名前ノードによる消費のために、前記複数の第2のデータノード内に格納されるすべてのデータブロックのリストを含むブロック報告を生成すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  37. 生成された前記ブロック報告は、ブロック報告ファイルとして前記ファイルシステムに書き込むこと、及び、
    前記第1及び第2のデータセンター内の前記第1及び第2の名前ノードのそれぞれにより、前記ファイルシステムから前記ブロック報告ファイルを周期的に読み出すこと
    をさらに含む請求項36に記載のコンピュータに実装された方法。
  38. 前記複数の第1の名前ノード及び前記複数の第1のデータノードが、前記第1のデータセンターのクライアントファイルのデータブロックの書き込みを、前記クライアントファイルの前記データブロックのいくつかを、前記ワイド・エリア・ネットワーク上で前記第2のデータセンターに対して送信する前に完了すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  39. 前記複数の第1の名前ノード及び前記複数の第1のデータノードが、クライアントファイルの複数のデータブロックが前記第1のデータセンター内で第1の所定のかつ選択可能な回数複製されるようにすること、及び、
    前記複数の第2の名前ノード及び前記複数の第2のデータノードは、前記クライアントファイルの前記複数のデータブロックが前記第2のデータセンター内で第2の所定のかつ選択可能な回数複製されるようにすること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  40. 前記第1の所定のかつ選択可能な回数は、前記第2の所定のかつ選択可能な回数と同じである
    請求項39に記載のコンピュータに実装された方法。
  41. 前記第1の所定のかつ選択可能な回数は、前記第2の所定のかつ選択可能な回数とは異なる
    請求項39に記載のコンピュータに実装された方法。
  42. 前記第1及び第2の複数の名前ノードのそれぞれの中で調整エンジンプロセスを実行すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
  43. メタデータ及びファイルシステムのデータを、第1及び第2のデータセンターにわたって複製すること
    をさらに含む請求項23に記載のコンピュータに実装された方法。
JP2016553377A 2013-08-29 2015-03-04 ワイド・エリア・ネットワーク上で同等の名前空間レプリカを用いる地理的に分散したファイルシステム Active JP6628730B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/013,948 US9361311B2 (en) 2005-01-12 2013-08-29 Distributed file system using consensus nodes
US14/231,311 2014-03-31
US14/231,311 US9495381B2 (en) 2005-01-12 2014-03-31 Geographically-distributed file system using coordinated namespace replication over a wide area network
PCT/US2015/018680 WO2015153045A1 (en) 2014-03-31 2015-03-04 Geographically-distributed file system using coordinated namespace replication

Publications (2)

Publication Number Publication Date
JP2017519258A true JP2017519258A (ja) 2017-07-13
JP6628730B2 JP6628730B2 (ja) 2020-01-15

Family

ID=52593233

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016537893A Active JP6364083B2 (ja) 2013-08-29 2014-08-29 コンセンサスノードを用いた分散ファイルシステム
JP2016553377A Active JP6628730B2 (ja) 2013-08-29 2015-03-04 ワイド・エリア・ネットワーク上で同等の名前空間レプリカを用いる地理的に分散したファイルシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016537893A Active JP6364083B2 (ja) 2013-08-29 2014-08-29 コンセンサスノードを用いた分散ファイルシステム

Country Status (7)

Country Link
US (2) US9361311B2 (ja)
EP (1) EP3039549B1 (ja)
JP (2) JP6364083B2 (ja)
AU (2) AU2014312103B2 (ja)
CA (1) CA2922665C (ja)
ES (1) ES2703901T3 (ja)
WO (1) WO2015031755A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10067949B1 (en) * 2013-12-23 2018-09-04 EMC IP Holding Company LLC Acquired namespace metadata service for controlling access to distributed file system
US9336219B2 (en) * 2014-03-03 2016-05-10 Netapp, Inc. Distributed file system snapshot
US20160098573A1 (en) * 2014-10-03 2016-04-07 Zettaset, Inc. Securing a Distributed File System
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9571573B1 (en) 2015-10-29 2017-02-14 Dropbox, Inc. Peer-to-peer synchronization protocol for multi-premises hosting of digital content items
US10089202B1 (en) * 2015-12-29 2018-10-02 EMC IP Holding Company LLC Providing data high availability to a set of host computers via automatic failover
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
PT3539026T (pt) 2016-11-10 2022-03-08 Swirlds Inc Métodos e aparelhos para uma base de dados distribuída que inclui entradas anónimas
US11222006B2 (en) 2016-12-19 2022-01-11 Swirlds, Inc. Methods and apparatus for a distributed database that enables deletion of events
US11360942B2 (en) 2017-03-13 2022-06-14 Wandisco Inc. Methods, devices and systems for maintaining consistency of metadata and data across data centers
CN107368507B (zh) 2017-03-28 2020-03-27 创新先进技术有限公司 一种基于区块链的共识方法及装置
US10209982B2 (en) 2017-05-16 2019-02-19 Bank Of America Corporation Distributed storage framework information server platform architecture
CN107276765B (zh) * 2017-07-04 2020-05-05 中国联合网络通信集团有限公司 区块链中共识的处理方法及装置
KR102348418B1 (ko) 2017-07-11 2022-01-07 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
SG11202002308RA (en) 2017-11-01 2020-04-29 Swirlds Inc Methods and apparatus for efficiently implementing a fast-copyable database
US11200210B2 (en) * 2018-03-26 2021-12-14 Intel Corporation Method of efficient backup of distributed file system files with transparent data access
CN108964879B (zh) * 2018-07-20 2021-04-13 杭州复杂美科技有限公司 一种抽签方法、共识方法、设备和存储介质
CN109691065B (zh) * 2018-08-23 2021-11-09 袁振南 分布式存储系统及其数据读写方法、存储终端及存储介质
KR102297592B1 (ko) * 2019-01-30 2021-09-03 펜타시큐리티시스템 주식회사 블록체인을 이용한 빅데이터 공유 방법 및 장치
CN113711202A (zh) 2019-05-22 2021-11-26 斯沃尔德斯股份有限公司 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置
US11308043B2 (en) * 2019-11-13 2022-04-19 Salesforce.Com, Inc. Distributed database replication
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11726788B2 (en) * 2019-12-18 2023-08-15 International Business Machines Corporation Tuple checkout with notify in coordination namespace system
US11947499B2 (en) * 2020-07-31 2024-04-02 EMC IP Holding Company LLC Peer-to-peer global namespace for storage system metadata federations
US11595493B2 (en) 2020-09-28 2023-02-28 Oracle International Corporation System and method for namespace masking in an integration flow

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350777A (ja) * 2000-06-05 2001-12-21 Mitsubishi Electric Corp 分散データベースシステム
WO2013163650A1 (en) * 2012-04-27 2013-10-31 Netapp, Inc. Virtual storage appliance gateway
JP2015035020A (ja) * 2013-08-07 2015-02-19 富士通株式会社 ストレージシステム、ストレージ制御装置及び制御プログラム

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261085A (en) 1989-06-23 1993-11-09 Digital Equipment Corporation Fault-tolerant system and method for implementing a distributed state machine
DE4497149T1 (de) 1993-09-24 1996-10-17 Oracle Corp Verfahren und Vorrichtung zum Replizieren von Daten
US5699515A (en) 1995-01-23 1997-12-16 Hewlett-Packard Company Backoff scheme for access collision on a local area network
WO1997049039A1 (en) * 1996-06-21 1997-12-24 Bell Communications Research, Inc. Apparatus and methods for highly available directory services in the distributed computing environment
US5862346A (en) 1996-06-28 1999-01-19 Metadigm Distributed group activity data network system and corresponding method
US5896503A (en) * 1996-07-23 1999-04-20 International Business Machines Corporation Managing membership of a domain of processors in a distributed computing environment
US6006034A (en) 1996-09-05 1999-12-21 Open Software Associates, Ltd. Systems and methods for automatic application version upgrading and maintenance
US5781910A (en) 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
JPH10187524A (ja) * 1996-12-20 1998-07-21 Nippon Telegr & Teleph Corp <Ntt> 計算機ネットワークを用いた情報管理方法および計算機ネットワークを用いた情報管理システム
US6247059B1 (en) 1997-09-30 2001-06-12 Compaq Computer Company Transaction state broadcast method using a two-stage multicast in a multiple processor cluster
US6014669A (en) 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US6202067B1 (en) 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6261085B1 (en) 1998-06-22 2001-07-17 Reena Corporation Tandem injection molding apparatus and press therefor
US6401120B1 (en) 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
US6513084B1 (en) 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US7013465B1 (en) 1999-08-17 2006-03-14 Emc Corporation System, device and method for interprocessor communication in a computer system
US7069320B1 (en) * 1999-10-04 2006-06-27 International Business Machines Corporation Reconfiguring a network by utilizing a predetermined length quiescent state
US8332740B2 (en) 2000-01-19 2012-12-11 Graham John D Systems and method for management of intangible assets
US20140164262A1 (en) 2012-12-11 2014-06-12 John D. Graham System and method for management of intangible assets
US6898642B2 (en) 2000-04-17 2005-05-24 International Business Machines Corporation Synchronous collaboration based on peer-to-peer communication
US7185076B1 (en) 2000-05-31 2007-02-27 International Business Machines Corporation Method, system and program products for managing a clustered computing environment
US6973053B1 (en) 2000-09-12 2005-12-06 Bbnt Solutions Llc Using direct cluster member to cluster member links to improve performance in mobile communication systems
US7155524B1 (en) 2000-12-04 2006-12-26 Lucent Technologies Inc. Backoff protocols and methods for distributed mutual exclusion and ordering
US6931431B2 (en) 2001-01-13 2005-08-16 International Business Machines Corporation Agreement and atomic broadcast in asynchronous networks
US7024429B2 (en) 2002-01-31 2006-04-04 Nextpage,Inc. Data replication based upon a non-destructive data model
US7305585B2 (en) 2002-05-23 2007-12-04 Exludus Technologies Inc. Asynchronous and autonomous data replication
US7558883B1 (en) 2002-06-28 2009-07-07 Microsoft Corporation Fast transaction commit
US6763013B2 (en) 2002-09-04 2004-07-13 Harris Corporation Intelligent communication node object beacon framework including neighbor discovery in a mobile ad hoc network
US6975614B2 (en) 2002-09-04 2005-12-13 Harris Corporation Intelligent communication node object beacon framework in a mobile ad hoc network
US6763014B2 (en) 2002-09-24 2004-07-13 Harris Corporation Intelligent communication node object beacon framework (ICBF) with temporal transition network protocol (TTNP) in a mobile ad hoc network
BRPI0314881B1 (pt) 2002-10-25 2019-01-08 S & C Electric Co sistema e método para controle de distribuição de energia elétrica através de uma rede
US8315975B2 (en) 2002-12-09 2012-11-20 Hewlett-Packard Development Company, L.P. Symbiotic wide-area file system and method
US8311980B2 (en) 2002-12-09 2012-11-13 Hewlett-Packard Development Company, L.P. Namespace consistency for a wide-area file system
US7197632B2 (en) 2003-04-29 2007-03-27 International Business Machines Corporation Storage system and cluster maintenance
US20040254984A1 (en) 2003-06-12 2004-12-16 Sun Microsystems, Inc System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster
US20050086384A1 (en) * 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US20050198493A1 (en) 2003-09-17 2005-09-08 Bartas John A. Distribution methods and apparatus for promoting distributed digital content on a local network
US8161438B2 (en) 2003-10-21 2012-04-17 Mentor Graphics Corporation Determining mutual inductance between intentional inductors
US7280040B2 (en) 2004-03-21 2007-10-09 Aware Technologies, Inc. Distributed multi-nodal voice/data communication
US7334154B2 (en) 2004-06-18 2008-02-19 Microsoft Corporation Efficient changing of replica sets in distributed fault-tolerant computing system
US20060045055A1 (en) 2004-08-30 2006-03-02 Padmaja Ramadas Method and apparatus for deploying an ad-hoc network
US20060143517A1 (en) 2004-12-22 2006-06-29 Microsoft Corporation Replicated virtual machine
US9753754B2 (en) 2004-12-22 2017-09-05 Microsoft Technology Licensing, Llc Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine
US8364633B2 (en) 2005-01-12 2013-01-29 Wandisco, Inc. Distributed computing systems and system components thereof
US9495381B2 (en) * 2005-01-12 2016-11-15 Wandisco, Inc. Geographically-distributed file system using coordinated namespace replication over a wide area network
US7224938B2 (en) 2005-03-11 2007-05-29 Freescale Semiconductor Inc. Method of communicating with a network device
US20070168412A1 (en) 2005-03-22 2007-07-19 Aware Technologies, Inc. Distributed multi-nodal voice/data communication
US7765186B1 (en) 2005-04-13 2010-07-27 Progress Software Corporation Update-anywhere replication of distributed systems
US20060265508A1 (en) 2005-05-02 2006-11-23 Angel Franklin J System for administering a multiplicity of namespaces containing state information and services
US7814322B2 (en) 2005-05-03 2010-10-12 Sri International Discovery and authentication scheme for wireless mesh networks
JP2007011896A (ja) * 2005-07-01 2007-01-18 Nippon Telegr & Teleph Corp <Ntt> 分散トランザクションシステム
US7400596B1 (en) 2005-08-17 2008-07-15 Rockwell Collins, Inc. Dynamic, multicast routing using a quality of service manager
US7272129B2 (en) 2005-10-13 2007-09-18 Motorola, Inc. Method and apparatus for synchronizing a node within an ad-hoc communication system
US20070204078A1 (en) 2006-02-09 2007-08-30 Intertrust Technologies Corporation Digital rights management engine systems and methods
US7598751B2 (en) 2006-08-14 2009-10-06 Clemson University Research Foundation Impedance-based arc fault determination device (IADD) and method
JP4606404B2 (ja) 2006-12-01 2011-01-05 富士通株式会社 計算資源管理プログラムおよび計算資源管理装置
US9390396B2 (en) 2006-12-04 2016-07-12 Excalibur Ip, Llc Bootstrapping social networks using augmented peer to peer distributions of social networking services
JP2008197745A (ja) * 2007-02-08 2008-08-28 Hitachi Ltd ストレージ仮想化システムにおける記憶制御装置
JP4919851B2 (ja) * 2007-03-23 2012-04-18 株式会社日立製作所 ファイルレベルの仮想化を行う中間装置
US7729336B2 (en) 2007-03-28 2010-06-01 Harris Corporation Synchronization and timing source priority in an ad-hoc network
US7788522B1 (en) 2007-05-31 2010-08-31 Oracle America, Inc. Autonomous cluster organization, collision detection, and resolutions
US8180747B2 (en) * 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US7849223B2 (en) 2007-12-07 2010-12-07 Microsoft Corporation Virtually synchronous Paxos
WO2009114483A1 (en) 2008-03-08 2009-09-17 Mentor Graphics Corporation High-frequency vlsi interconnect and intentional inductor impedance extraction in the presence of a multi-layer conductive substrate
EP2324675B1 (en) 2008-08-11 2013-12-18 Koninklijke Philips N.V. Method and computer program product for scheduling transmissions of global beacons in body area networks
US8233875B2 (en) 2008-11-07 2012-07-31 Kyocera Corporation Device beacon for handoff management of handoffs to access nodes
KR100966566B1 (ko) 2009-01-29 2010-06-29 엘지전자 주식회사 효율적인 공용 e-dch 관리를 위한 신호 전송 기법
US8336080B2 (en) 2009-06-26 2012-12-18 Symbol Technologies, Inc. Methods and apparatus for rating device security and automatically assessing security compliance
WO2011023134A1 (en) * 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
US9141449B2 (en) * 2009-10-30 2015-09-22 Symantec Corporation Managing remote procedure calls when a server is unavailable
US8458239B2 (en) * 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
US8996611B2 (en) * 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
US8135987B2 (en) 2010-06-03 2012-03-13 Microsoft Corporation Collection ordering for replicated state machines
US20110314163A1 (en) 2010-06-16 2011-12-22 Mmb Research Inc. Wireless communication network for smart appliances
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
EP2421225A1 (en) 2010-08-20 2012-02-22 Alcatel Lucent Processing method, proxy processing agent, system and method for filling a routing table of a DHT client node, router and dht client node
WO2012068184A1 (en) 2010-11-15 2012-05-24 File System Labs Llc Methods and apparatus for distributed data storage
US20120130950A1 (en) * 2010-11-23 2012-05-24 Canon Kabushiki Kaisha Data replication to multiple data nodes
US8572031B2 (en) * 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US8549142B2 (en) 2011-03-28 2013-10-01 Siemens Corporation Replicated state machine utilizing view change protocol resilient to performance attacks
US9652469B2 (en) * 2011-06-04 2017-05-16 Microsoft Technology Licensing, Llc Clustered file service
US9020987B1 (en) * 2011-06-29 2015-04-28 Emc Corporation Managing updating of metadata of file systems
US8595546B2 (en) 2011-10-28 2013-11-26 Zettaset, Inc. Split brain resistant failover in high availability clusters
US8693453B2 (en) 2011-12-15 2014-04-08 Microsoft Corporation Mobile node group formation and management
US8818951B1 (en) * 2011-12-29 2014-08-26 Emc Corporation Distributed file system having separate data and metadata and providing a consistent snapshot thereof
US9904689B2 (en) 2012-07-13 2018-02-27 Facebook, Inc. Processing a file system operation in a distributed file system
US9582221B2 (en) 2012-08-24 2017-02-28 Vmware, Inc. Virtualization-aware data locality in distributed data processing
US8943178B2 (en) 2012-08-29 2015-01-27 International Business Machines Corporation Continuous operation during reconfiguration periods
US8769105B2 (en) * 2012-09-14 2014-07-01 Peaxy, Inc. Software-defined network attachable storage system and method
US9753954B2 (en) 2012-09-14 2017-09-05 Cloudera, Inc. Data node fencing in a distributed file system
CN102999633A (zh) 2012-12-18 2013-03-27 北京师范大学珠海分校 网络信息的云聚类提取方法
US9444899B2 (en) 2012-12-26 2016-09-13 Microsoft Technology Licensing, Llc Use of internet information services logging to collect user information in an asynchronous manner
US9081826B2 (en) * 2013-01-07 2015-07-14 Facebook, Inc. System and method for distributed database query engines
US9130943B1 (en) 2013-03-11 2015-09-08 Ca, Inc. Managing communications between client applications and application resources of on-premises and cloud computing nodes
US20140344323A1 (en) 2013-03-15 2014-11-20 Reactor8 Inc. State-based configuration management for distributed systems
US9009215B2 (en) 2013-03-15 2015-04-14 Wandisco, Inc. Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment
US9684571B2 (en) * 2013-05-01 2017-06-20 Netapp, Inc. Namespace mirroring in an expandable storage volume
US9336288B2 (en) 2013-06-03 2016-05-10 Bank Of America Corporation Workflow controller compatibility
CN103458044B (zh) 2013-09-12 2017-01-04 北京航空航天大学 一种面向广域网环境下多存储集群的元数据共享管理方法
US10216758B2 (en) 2013-10-24 2019-02-26 Vmware, Inc. Multi-tenant production and test deployments of Hadoop
US9542404B2 (en) 2014-02-17 2017-01-10 Netapp, Inc. Subpartitioning of a namespace region
US10805120B2 (en) 2017-09-06 2020-10-13 Apple Inc. Adaptive frequency correlation estimation for channel estimation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001350777A (ja) * 2000-06-05 2001-12-21 Mitsubishi Electric Corp 分散データベースシステム
WO2013163650A1 (en) * 2012-04-27 2013-10-31 Netapp, Inc. Virtual storage appliance gateway
JP2015035020A (ja) * 2013-08-07 2015-02-19 富士通株式会社 ストレージシステム、ストレージ制御装置及び制御プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TOM WHITE, HADOOP 第2版, vol. 第1版, JPN6019012660, 22 July 2011 (2011-07-22), pages 46 - 47, ISSN: 0004144896 *
田澤 孝之、横井 浩、松井 一比良, はじめてのHADOOP 〜分散データ処理の基本から実践まで 初版, vol. 第1版, JPN6019012659, 25 December 2012 (2012-12-25), pages 12 - 15, ISSN: 0004014015 *

Also Published As

Publication number Publication date
JP6628730B2 (ja) 2020-01-15
AU2014312103A1 (en) 2016-03-03
EP3039549A4 (en) 2017-03-15
ES2703901T3 (es) 2019-03-13
US9747301B2 (en) 2017-08-29
CA2922665C (en) 2021-06-15
AU2014312103B2 (en) 2019-09-12
EP3039549A1 (en) 2016-07-06
JP6364083B2 (ja) 2018-07-25
CA2922665A1 (en) 2015-03-05
US20170024411A1 (en) 2017-01-26
AU2019236685B2 (en) 2021-01-28
US9361311B2 (en) 2016-06-07
US20150067002A1 (en) 2015-03-05
WO2015031755A1 (en) 2015-03-05
AU2019236685A1 (en) 2019-10-17
EP3039549B1 (en) 2018-10-03
JP2016530636A (ja) 2016-09-29

Similar Documents

Publication Publication Date Title
JP6628730B2 (ja) ワイド・エリア・ネットワーク上で同等の名前空間レプリカを用いる地理的に分散したファイルシステム
US11853263B2 (en) Geographically-distributed file system using coordinated namespace replication over a wide area network
US9495381B2 (en) Geographically-distributed file system using coordinated namespace replication over a wide area network
US9846704B2 (en) Distributed file system using consensus nodes
US9906598B1 (en) Distributed data storage controller
US8918392B1 (en) Data storage mapping and management
US11314444B1 (en) Environment-sensitive distributed data management
US8930364B1 (en) Intelligent data integration
JP2022500730A (ja) 分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム
US11860828B2 (en) Methods, devices and systems for writer pre-selection in distributed data systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190627

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191203

R150 Certificate of patent or registration of utility model

Ref document number: 6628730

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250