JP2009295127A - アクセス方法、アクセス装置及び分散データ管理システム - Google Patents
アクセス方法、アクセス装置及び分散データ管理システム Download PDFInfo
- Publication number
- JP2009295127A JP2009295127A JP2008151077A JP2008151077A JP2009295127A JP 2009295127 A JP2009295127 A JP 2009295127A JP 2008151077 A JP2008151077 A JP 2008151077A JP 2008151077 A JP2008151077 A JP 2008151077A JP 2009295127 A JP2009295127 A JP 2009295127A
- Authority
- JP
- Japan
- Prior art keywords
- node
- virtual
- data
- nodes
- user
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】多数のユーザが共同利用するDHTデータ管理機構において、ユーザ毎に使用可能な資源を管理する。
【解決手段】管理部11が仮想ノードを設定し、データ管理システム2に格納されたデータへのアクセス処理を各仮想ノードに振り分け、マッピング部12により仮想ノードとデータ管理システム2のノード20とを関連付ける。これにより、ユーザが利用するノード20を限定することができる。さらに、仮想ノード数、仮想ノードとノード20のマッピングを調整することで、ユーザがデータ管理システム2において使用可能な資源を管理することができる。
【選択図】図1
【解決手段】管理部11が仮想ノードを設定し、データ管理システム2に格納されたデータへのアクセス処理を各仮想ノードに振り分け、マッピング部12により仮想ノードとデータ管理システム2のノード20とを関連付ける。これにより、ユーザが利用するノード20を限定することができる。さらに、仮想ノード数、仮想ノードとノード20のマッピングを調整することで、ユーザがデータ管理システム2において使用可能な資源を管理することができる。
【選択図】図1
Description
本発明は、データを複数の計算機に分散して格納する技術に関する。
分散データ管理機構は、ネットワークで接続されたローカルストレージを持つ計算機(ノード)で構成されたクラスタの各ノードにデータを分散格納するデータ管理機構である。クライアントにとって、分散データ管理機構は一つの巨大なストレージを持つデータ管理機構であり、一台の計算機では実現不可能な大容量のデータ管理空間を提供可能な、拡張性を持つデータ管理機構である。
分散データ管理機構はデータの格納位置管理手法により、メタデータサーバ型とP2P型とに分類される。メタデータサーバ型は、データの格納位置を一つのノード(メタデータサーバ)が管理する。一方、P2P型はデータの格納位置を複数のノードが管理する。特に、分散ハッシュテーブル(DHT:Distributed Hash Table)を用いてデータの格納位置を管理するものとして、DHT P2Pデータ管理機構(以下、DHTデータ管理機構という)が知られている。
DHTデータ管理機構は、ハッシュの結果の範囲(ハッシュ空間)をシステムの各ノードが分割して持ち、格納されるデータのIDの値を含むハッシュ空間を持つノードにそのデータを格納する分散データ管理機構である。DHTデータ管理機構は、Chord, Pastry などのDHTルーティングアルゴリズムを用い、システムを構成するいずれのノードからでもデータを格納したノードを検索することができる。
メタデータサーバがボトルネックになることにより、拡張性が制限されるメタデータサーバ型に比べ、DHTデータ管理機構は、どのノードからでもデータを格納するノードを検索可能であり、メタデータサーバのようなボトルネックがない為、拡張性と可用性に優れている。
既存のDHTデータ管理機構は、システムの性能を最大限に発揮させるため、システムの資源を適切に管理する負荷分散手法を具備している。DHTデータ管理機構の負荷分散手法で最も有名で一般的な方式が仮想サーバ(Virtual Server)を用いた負荷分散方式(以下「仮想サーバ方式」とする)であり、多くの研究がされ、実際に運用されているものもある(非特許文献1,2参照)。
仮想サーバ方式は、全体のハッシュ空間を複数の部分ハッシュ空間に分割し、一つの部分ハッシュ空間を一つの仮想サーバが受け持つ。データのアクセス要求は、論理的にはデータID(データの識別のハッシュ値)を含む部分ハッシュ空間を持つ仮想サーバが管理する。一般的に、仮想サーバが管理する部分ハッシュ空間と実際のノード(以下「実ノード」とする)をマッピングすることで仮想サーバへのアクセス要求が実ノードと関連付けられ、データへのアクセス要求はマッピングされた実ノードが処理する。仮想サーバ方式は、システムの実ノードの負荷分布状態に基づいて、仮想サーバと実ノードのマッピングを変更することにより負荷分布を調節する。
Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels, "Dynamo:Amazon's Highly Available Key-value Store", SOSP'07, 2007, p.205-220 Brighten Godfrey, Karthik Lakshminarayanan, Sonesh Surana, Richard Karp and Ion stoica, "Load Balancing in Dynamic Structured P2P Systems", INFOCOM 2004. Twenty-third AnnalJoint Conference of the IEEE Computer and Communications Societies, 2004, Vol.4, p2253-2262
Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels, "Dynamo:Amazon's Highly Available Key-value Store", SOSP'07, 2007, p.205-220 Brighten Godfrey, Karthik Lakshminarayanan, Sonesh Surana, Richard Karp and Ion stoica, "Load Balancing in Dynamic Structured P2P Systems", INFOCOM 2004. Twenty-third AnnalJoint Conference of the IEEE Computer and Communications Societies, 2004, Vol.4, p2253-2262
仮想サーバ方式は、ノードの負荷情報だけに基づいて、システム全体の性能が最大限に発揮できるよう資源を管理している。システムの資源を均等に使用するために、ユーザのデータは全仮想サーバに分散格納され、一つの仮想サーバには異なるユーザのデータが一緒に格納されるので、DHTデータ管理機構の資源をユーザ毎に最適に管理することが不可能となる。例えば、あるユーザが継続的に負荷の高いアクセス要求をあるデータに対して行う場合、システムは、負荷を分散するために、そのデータを格納している仮想サーバを負荷の少ない別の実ノードに移動させる。これにより、システム全体の性能を向上させることはできるが、そのユーザが資源を独占することとなり、システムに負担を掛けていない他のユーザの資源の利用を制限することになる。
また、あるユーザが必要な資源が保証できなくて、そのユーザのために実ノードを追加しようとした場合、ユーザのデータはシステムの全実ノードに格納されるため、そのユーザのためのピンポイントな資源の投入が難しいという問題がある。既存のシステムでは、システム全体の性能を向上させるために、あるユーザが必要とする資源以上の実ノードを追加するしかない。
このように、従来のDHTデータ管理機構では、ユーザ毎に使用可能な資源を管理することができなかった。
本発明は、上記に鑑みてなされたものであり、その課題とするところは、多数のユーザが共同利用するDHTデータ管理機構において、ユーザ毎に使用可能な資源を管理することにある。
第1の本発明に係るアクセス方法は、複数のノードによりP2Pネットワークを構成し、分散ハッシュテーブルを利用してノードを管理する分散データ管理装置へのアクセス方法であって、管理手段により、ノードを仮想的に表す仮想ノードのクラスタをユーザ毎に設定し、分散データ管理装置が格納するデータへのアクセス処理を仮想ノードのいずれかに分散して割り振るステップと、マッピング手段により、仮想ノードにノードを関連付けるステップと、を有することを特徴とする。
本発明にあっては、ユーザ毎に複数の仮想ノードを設定し、データへのアクセス処理を各仮想ノードに振り分け、仮想ノードと実際にデータを管理するノードとを関連付けることにより、ユーザが利用するノードを限定することができ、仮想ノードの数、あるいは、仮想ノードとノードとの関連付け(マッピング)を調整することで、ユーザが分散データ管理装置において使用可能な資源を管理することができる。
また、アクセス処理の振り分けを分散データ管理装置外(ユーザ側)で行うことにより、分散データ管理装置にアクセスするユーザが増加しても分散データ管理装置の負荷の増加を抑えることができる。
上記アクセス方法において、割り振るステップは、クラスタにハッシュ空間を与え、仮想ノードのそれぞれにハッシュ空間を分割した部分ハッシュ空間を割り当て、データのハッシュ値に基づいてアクセス処理を割り振ることを特徴とする。
本発明にあっては、仮想ノードに部分ハッシュ空間を割り当て、データのハッシュ値に基づいてそのデータを管理する仮想ノードを決定することにより、データを仮想ノードに一様に分散して管理させることが可能となる。
第2の本発明に係るアクセス装置は、複数のノードによりP2Pネットワークを構成し、分散ハッシュテーブルを利用してノードを管理する分散データ管理装置へのアクセス装置であって、ノードを仮想的に表す仮想ノードのクラスタをユーザ毎に設定し、分散データ管理装置が格納するデータへのアクセス処理を仮想ノードのいずれかに分散して割り振る管理手段と、仮想ノードにノードを関連付けるマッピング手段と、を有することを特徴とする。
上記アクセス装置において、管理手段は、クラスタにハッシュ空間を与え、仮想ノードのそれぞれにハッシュ空間を分割した部分ハッシュ空間を割り当て、データのハッシュ値に基づいてアクセス処理を割り振ることを特徴とする。
第3の本発明に係る分散データ管理システムは、分散データ管理装置とその分散データ管理装置へのアクセスに用いるアクセス装置とを備えた分散データ管理システムであって、分散データ管理装置は、データを格納させる複数のノードを備え、複数のノードによりP2Pネットワークを構成し、分散ハッシュテーブルを利用してノードを管理するものであって、アクセス装置は、ノードを仮想的に表す仮想ノードのクラスタをユーザ毎に設定し、分散データ管理装置が格納するデータへのアクセス処理を仮想ノードのいずれかに分散して割り振る管理手段と、仮想ノードにノードを関連付けるマッピング手段と、を有することを特徴とする。
上記分散データ管理システムにおいて、管理手段は、クラスタにハッシュ空間を与え、仮想ノードのそれぞれにハッシュ空間を分割した部分ハッシュ空間を割り当て、データのハッシュ値に基づいてアクセス処理を割り振ることを特徴とする。
本発明によれば、多数のユーザが共同利用するDHTデータ管理機構において、ユーザ毎に使用可能な資源を管理することができる。
以下、本発明の実施の形態について図面を用いて説明する。
図1は、本実施の形態におけるアクセス装置を用いてデータ管理システムに格納されたデータにアクセスするシステムの構成を示す全体構成図である。同図に示すアクセス装置10は、クライアント端末1に備えられ、データ管理システム2に格納されたデータにアクセスするものである。クライアント端末1、データ管理システム2は、ネットワーク4に接続されており、TCPなどの相互通信可能な通信プロトコルを用いて通信を行う。
データ管理システム2は、それぞれがネットワーク4に接続された複数のノード20を持つP2P(Peer-to-peer)ネットワークで構成されている。各ノード20に、それぞれが担当する部分ハッシュ空間を割り当て、分散ハッシュテーブル(DHT:Distributed Hash Table)を用いてデータの格納位置を管理する分散ハッシュ法を利用する。部分ハッシュ空間は、ハッシュ空間全体をノード20の個数分に分割したものであり、各ノード20それぞれに別々の部分ハッシュ空間が割り当てられる。
ノード20は、負荷分散装置21、ルーティング装置22、I/O管理装置23およびローカルストレージ24を備える。ノード20の備える負荷分散装置21、ルーティング装置22およびI/O管理装置23は、演算処理装置、記憶装置、メモリ等を備えた計算機により構成して、各部の処理をプログラムによって実行させるものとしてもよい。通常、パーソナルコンピュータ、サーバコンピュータなどをノード20として利用するが、ローカルストレージ24を備える計算機であれば、携帯電話機などもノード20として利用可能である。
負荷分散装置21は、ノード20の負荷情報、性能情報を管理し、ノード20間の負荷が偏った場合、負荷分散政策に基づき、負荷の高いノード20から負荷の低いノード20にデータを移動させることによりデータ管理システム2全体の負荷を分散させる装置である。データを移動させた場合、DHTの規則に従って、ノード20の受け持つ部分ハッシュ空間の変更処理を行う。
ルーティング装置22は、あるノード20に到達したアクセス要求がそのノード20が担当しないデータに対する要求である場合、つまり、そのデータのハッシュ値がノード20が受け持つ部分ハッシュ空間に含まれない場合、そのアクセス要求を該当するデータを管理するノード20に到達するように再伝送する。あるノード20に到達したアクセス要求が担当するデータに対する要求である場合、自分の位置をクライアント端末1に通知する。そして、クライアント端末1は、そのノード20のI/O管理装置23を介してデータにアクセスする。ルーティング装置22は、Chord, Pastry などのDHTルーティングアルゴリズムを用いてルーティング処理を行う。
I/O管理装置23は、クライアント端末1からデータを受け取りローカルストレージ24に記録する。また、クライアント端末1が要求するデータをローカルストレージ24から読み出し、クライアント端末1に送信する。
クライアント端末1は、アクセス装置10を備える。アクセス装置10は、演算処理装置、記憶装置、メモリ等を備えた計算機により構成して、各部の処理をプログラムによって実行させるものとしてもよい。パーソナルコンピュータなどをクライアント端末1として利用するが、サーバコンピュータ、携帯電話機などを利用することも可能である。アクセス装置10は、クライアント端末1の要求に応じ、データが格納されているノード20を特定し、I/O管理装置23を介してデータにアクセスする装置である。アクセス装置10は、管理部11およびマッピング部12を備える。
管理部11は、内部でユーザ毎に仮想ノードのクラスタを設定し、ユーザのアクセス要求を処理すべき仮想ノードを決定する。仮想ノード自身は、データを格納するものではなく、ユーザのデータを各ノード20に振り分けるための機構である。
マッピング部12は、仮想ノードと実際にデータを格納するノード20とを関連付ける。
管理部11によりデータを格納する仮想ノードを振り分け、マッピング部12により仮想ノードと実際のノード20とを関連付けて、関連付けられたノード20にデータを格納させる。管理部11、マッピング部12の詳細については後述する。
認証システム3がネットワーク4に接続されており、ユーザに関する情報を管理する。ユーザに関する情報としては、例えば、後述する仮想ノード情報がある。ユーザは、ユニークなユーザIDで識別される。認証システム3としては、例えば、Kerberos システム等を用いる。
次に、ユーザの登録について説明する。データ管理システム2の利用を開始するユーザは、利用を開始する前にユーザの登録を行う。ユーザの登録は、データ管理システム2の管理者が行う。ユーザ登録時に、ユーザの要望に応じてユーザが利用可能なノード20の上限を決め、その上限と同じ数の仮想ノード情報を作成する。作成された仮想ノード情報は、認証システム3に格納される。仮想ノード情報は、アクセス装置10の管理部11で管理される仮想ノードに関する情報であり、アクセス装置10は、ユーザ認証後に、この仮想ノード情報を読み込んで仮想ノードを構成する。
仮想ノード情報は、図2に示すように、ユーザID、ノードID、部分ハッシュ空間、現在使用容量および最大容量で構成される。
ユーザIDは、ユーザを識別する文字列データである。
ノードIDは、仮想ノードを識別する数値データである。ノードIDの値は、0以上の整数であり、同一ユーザのノードIDは重複しない。
部分ハッシュ空間は、仮想ノードが受け持つ部分ハッシュ空間の範囲を示しており、部分ハッシュ空間の始まりの値と終わりの値のペアで構成される。ユーザがN個の仮想ノードを利用する場合、ハッシュ空間の全体を連続したN個の部分ハッシュ空間に分割し、仮想ノードのそれぞれに各部分ハッシュ空間を割り当てる。つまり、管理部11に構成される仮想ノードのクラスタにハッシュ空間を与え、そのハッシュ空間を分割した部分ハッシュ空間を仮想ノードのそれぞれに割り当てる。本実施の形態では、ハッシュ空間全体では、データ管理システム2が使用するハッシュ空間と同じ大きさである。
現在使用容量は、ユーザがその仮想ノードに関連付けられたノード20に格納しているデータの総量を示す数値データである。単位は、MB,GB,TBなどが設定可能である。
最大容量は、ユーザがその仮想ノードに関連付けられたノード20に格納可能なデータの総量を示す数値データである。単位は、現在使用容量と同じものを用いる。
次に、ユーザ登録時における仮想ノード情報の作成について説明する。図3は、仮想ノード情報を作成する処理の流れを示すフローチャートである。
まず、ユーザは、利用可能な最大ノード数Nと仮想ノードの最大容量Cを設定する(ステップ301)。最大容量Cは、ユーザ別、仮想ノード別に設定することも可能であるが、本実施の形態においては、全ての仮想ノードにおいて同じ値を持つものとする。最大ノード数Nは、ユーザの要望に応じて設定可能である。資源を多く必要とするユーザに大きい値を与える。
続いて、ハッシュ空間全体をN個の部分ハッシュ空間に分割する(ステップ302)。部分ハッシュ空間は、互いに重複する範囲がなく、全ての部分ハッシュ空間をユニオンすると元のハッシュ空間が生成可能となるように分割する。また、本実施の形態では、部分ハッシュ空間それぞれの大きさが等しくなるように分割する。
続いて、仮想ノード情報を作成する(ステップ303)。仮想ノード情報のユーザIDに登録するユーザのIDを代入し、部分ハッシュ空間にまだ仮想ノード情報に代入されていない部分ハッシュ空間を代入し、他のノードIDと重複しないようにノードIDを設定する。現在使用容量には0を、最大容量には最大容量Cを代入する。そして、N個の仮想ノード情報を作成したか否かを判断し(ステップ304)、すべて作成していない場合には、ステップ303に戻り次の仮想ノード情報の作成を行う。
N個の仮想ノード情報を作成し終えたら、作成した仮想ノード情報を認証システム3に格納する(ステップ305)。このとき、作成した仮想ノード情報のそれぞれに対応する各ノード20にも、仮想ノード情報を格納する。仮想ノードとノード20との対応は、後述するマッピング部12で用いるマッピングアルゴリズムにより特定することができる。
なお、本実施の形態においては、認証システム3に仮想ノード情報を格納したが、データ管理システム2に仮想ノード情報をデータとして格納してもよい。このとき、ユーザIDを1からL回まで連鎖的にハッシュさせてL個のハッシュ値を作成し、そのハッシュ値に対応するノード20に仮想ノード情報を格納する。これにより、仮想ノード情報がL個複製されてデータ管理システム2に格納されることになる。Lは任意に設定可能であり、データ管理システム2で全ユーザに共通の値である。
ユーザ登録を行った後は、ユーザが認証システム3にアクセスして認証することで、仮想ノード情報がアクセス装置10に読み込まれてデータ管理システム2にアクセスが可能となる。
次に、アクセス装置10の管理部11について説明する。
図4は、管理部11の処理を説明するための説明図である。同図に示すように、管理部11は、データIDを入力し、そのデータを管理する仮想ノードのノードIDを出力する。データIDは、データの識別(例えば、データ名など)をハッシュ関数でハッシュした値である。ハッシュ関数としては、例えば、SHA-1 を利用する。
まず、ユーザが認証システム3により認証されると、管理部11は、認証システム3に格納された仮想ノード情報を読み込み、管理部11のメモリ上に仮想ノードリストを構成する。仮想ノードリストは、仮想ノード情報に従って生成された仮想ノードのリストであり、仮想ノードを、その仮想ノードに割り当てられた部分ハッシュ空間の始まりの値の順に整列させている。この仮想ノードリストは、管理部11が備えたメモリ上で管理され、一定時間毎(例えば、約20分毎)に内容を更新する。
管理部11にデータIDが入力されると、そのデータIDを管理すべき仮想ノードを検索する。具体的には、入力されたデータIDを含む部分ハッシュ空間を管理する仮想ノードを検索する。検索には二分探索アルゴリズムを用いる。そして、管理部11は、検索された仮想ノードのノードIDを出力する。
このように、データの識別をハッシュさせたデータIDを用いてそのデータを管理する仮想ノードを決定するので、データが仮想ノードに一様に分散して格納される。
次に、アクセス装置10のマッピング部12について説明する。
図5は、マッピング部12の処理を説明するための説明図である。同図に示すように、マッピング部12は、ユーザIDと仮想ノードのノードIDとを入力し、仮想ノードに対応する実IDを出力する。実IDは、データ管理システム2が各ノード20に割り当てたハッシュ空間全体の範囲内の値である。データ管理システム2は、この実IDを利用してノード20を探す。
マッピング部12が出力する実IDによりデータが管理されるノード20が決定するので、データをなるべく均等に分散させるために、マッピング部12は、以下の2つの要件を満たすように実IDを決める。
1.実IDがハッシュ空間において一様に分布すること。
2.ユーザIDとノードIDが分かれば同じ実IDを計算可能であること。
本実施の形態においては、SHA-1 アルゴリズムを用いて、ユーザIDをノードID回連鎖的にハッシュした値を実IDとして利用する。
このマッピング部12により仮想ノードは、ノード20のいずれかに関連付けられる。ノード20は、同一ユーザの仮想ノードを複数関連付けられるものでもよい。もちろん他のユーザの仮想ノードを関連付けられてもよい。例えば、あるノード20の負荷が増大したときに、そのノード20は負荷分散装置21を用いて、仮想ノードのデータをまるごと別のノード20に移動させることで負荷を減少することができる。
次に、クライアント端末がデータを格納しているノードを検索するプロセスについて説明する。図6は、ノードを検索するプロセスを説明するための説明図である。
まずクライアント端末1は、アクセスするデータの識別(データ名)をアクセス装置10に通知する。そして、アクセス装置10は、データ名をハッシュ関数でハッシュしてデータIDを生成し、生成したデータIDを管理部11に入力する。管理部11は、データIDに対応する仮想ノードのノードIDを検索して出力する。そして、マッピング部12は、ユーザID、仮想ノードのノードIDを入力し、その仮想ノードに対応する実IDを出力する。
アクセス装置10は、データ管理システム2の任意のノード20に対して、得られた実IDにより、所望のデータが格納されているノード20の位置の検索を要求する。ノード20は、DHTルーティングアルゴリズムを用いて実IDに対応するノード20を検索する。
クライアント端末1は、データが格納されたノード20の位置が特定されたら、そのノード20に対してデータへのアクセス(更新/参照)を要求し、データの書き込み、読み出しなどの処理を行う。
図7は、本実施の形態におけるI/O管理装置23を説明するための説明図である。同図に示すように、I/O管理装置23は、ユーザ毎の仮想ノードを管理するユーザ別仮想ノードリストをメモリ上に構成する。ユーザ別仮想ノードリストは、そのノード20に対応する仮想ノードをユーザ毎に関連付けたものであり、ユーザ毎の仮想ノードに対するデータの検索やアクセス要求を容易にするものである。ユーザ別仮想ノードリストは、ユーザ登録時に格納される仮想ノード情報に基づいて構成される。
ユーザ別仮想ノードリストは2段階で構成される。一段階目は、ノード20に対応する仮想ノードの情報をユーザ別にまとめたものである。ユーザ毎に、仮想ノードのノードIDをKeyとした二分探索木である。二段階目は、ユーザIDとそのユーザIDに対応する上記二分探索木へのポインタとのペアで構成された、ユーザIDをKeyとした二分探索木である。
I/O管理装置23は、ユーザ別仮想ノードリストの一段階目の階層と同じ構造のディレクトリ構造をローカルストレージ24に作成する。データディレクトリの下に、ユーザIDを名前としたディレクトリを作成し、そのディレクトリの下に仮想ノードのノードIDを名前としてディレクトリを作成する。例えば、ユーザAの、ノードIDが 2 の仮想ノードのデータは、"/Data/ユーザA/2/" というディレクトリの下に格納される。このディレクトリ以下の使用容量を調べることで仮想ノードの現在使用容量を算出することができる。これらのディレクトリの作成は、ユーザ登録時に格納される仮想ノード情報に基づいて行う。
ここで、クライアント端末1からデータ更新要求が来た場合のI/O管理装置23の動作について説明する。
クライアント端末1は、更新したいデータを格納するノード20の位置を得た後、実ID、ユーザID、ノードID、データIDと更新するデータの内容をそのノード20に伝送する。ノード20のI/O管理装置23は、ユーザIDとノードIDを用いてユーザ別仮想ノードリストから仮想ノードを探索する。ここで、仮想ノードが無い場合は、エラーを返す。仮想ノードが存在する場合は、ローカルストレージ24に格納されているデータを更新する。
データを更新した後、そのデータが格納されていたディレクトリ以下の使用容量が変化した場合は、ユーザ別仮想ノードリストの対応する仮想ノードの現在使用容量を変更する。そして、クライアント端末1に成功メッセージとともに現在使用容量を通知する。クライアント端末1のアクセス装置10は、通知された現在使用容量を用いて対応する仮想ノードの現在使用容量を変更する。
クライアント端末1からの参照要求も上記更新要求と同様の処理が行われる。
次に、仮想ノードの追加について説明する。ユーザは、当初の予定より資源が必要な場合、システムの管理者に対して仮想ノードの追加を要求する。仮想ノードの追加は、管理者が仮想ノード情報を追加することにより行う。
図8は、仮想ノード情報を追加する処理の流れを示すフローチャートである。まず、管理者は、仮想ノードを追加するユーザの仮想ノード情報を認証システム3から読み出す(ステップ501)。
ユーザからの要請に基づいて追加する仮想ノード数P、最大容量Cを決める(ステップ502)。本実施の形態では、ユーザ登録時に設定した最大容量Cをそのまま用いる。
続いて、ハッシュ空間をN+P個の部分ハッシュ空間に分割する(ステップ503)。現在の仮想ノード数NにP個の仮想ノードを追加するので、部分ハッシュ空間の個数がN+Pになるように分割する。本実施の形態では、ハッシュ空間を分割する方法としては、以下の2つの方式のいずれか1つを管理者が選択する。
方式1は、ハッシュ空間全体をN+P個の連続した部分ハッシュ空間に分割するものである。このとき、部分ハッシュ空間は互いに重複する部分がなく、全ての部分ハッシュ空間をユニオンすると元のハッシュ空間が生成できる。また、部分ハッシュ空間それぞれの大きさが等しくなるように分割する。
方式2は、既存の部分ハッシュ空間をP個選択し、それぞれを半分に分割するものである。N<Pの場合、つまり、既存の部分ハッシュ空間の数がP個より少ない場合は方式1を用いる。
N+P個の部分ハッシュ空間を作成したら、まず既存の仮想ノードに部分ハッシュ空間を割り当てる。例えば、既存の仮想ノードへの割り当ては、部分ハッシュ空間にID(0から始まる整数)を順番に与え、既存の仮想ノードには、その仮想ノードのノードIDと同じ値を持つ部分ハッシュ空間のIDを割り当てることにより行う。
既存の仮想ノードへの部分ハッシュ空間の割り当てが完了したら、新たな仮想ノード情報を追加する(ステップ504)。追加した仮想ノード情報のユーザID、ノードIDを設定し、追加した仮想ノード情報の部分ハッシュ空間には、まだ仮想ノードに割り当てられていない部分ハッシュ空間を割り当てる。現在使用容量には0を、最大容量には最大容量Cを代入する。そして、P個の仮想ノード情報を追加したか否かを判断し(ステップ505)、まだ追加する仮想ノード情報がある場合には、ステップ504へ戻る。
P個の仮想ノード情報を追加し終えたら、変更した仮想ノード情報を認証システム3に格納する(ステップ506)。
最後に、部分ハッシュ空間が変更された影響を受けるデータを移動する(ステップ507)。既存の仮想ノードに割り当てられた部分ハッシュ空間が変更されるため、一部のデータについては、そのデータIDに基づいて決定される仮想ノードが変更される。仮想ノードが変更されることにより、そのデータを格納するノード20が変わる場合がある。このようにデータIDに基づいて決定される仮想ノードが変更されるデータは、新たな仮想ノードに対応するノード20に移動させる必要がある。ノード20間のデータ移動は、データ管理システム2の負荷分散装置21を用いて行う。
図9に仮想ノードの追加に伴う部分ハッシュ空間の範囲が変更される様子を示した。同図では、12時の方向を全体ハッシュ空間の始まりと終わりの点として全体ハッシュ空間を円で表し、各仮想ノードを、その仮想ノードに割り当てられた部分ハッシュ空間の始まりの値に対応する位置に配置した。時計回りにハッシュ値が大きくなっている。同図に示す各仮想ノードから出ている矢印は各仮想ノードが担当する部分ハッシュ空間の範囲を示している。
図9では、仮想ノード1,2に仮想ノード3,4を追加した様子を示している。仮想ノード3は、追加前の仮想ノード1に割り当てられた部分ハッシュ空間に配置され、仮想ノード4は、追加前の仮想ノード2に割り当てられた部分ハッシュ空間に配置された。よって、仮想ノード1,2が管理していたデータの一部は、仮想ノード3,4が管理することとなるので、それらのデータを移動する必要がある。
まず、各仮想ノードは、仮想ノード追加以前に自身が担当していた部分ハッシュ空間の終わりの値(以下、「以前値」とする)と、仮想ノード追加後に自身が担当する部分ハッシュ空間の終わりの値(以下、「現在値」とする)を比べる。現在値が以前値より小さい場合は、現在値から以前値の範囲のデータをその範囲を担当する仮想ノードに移動する。
データを移動するときには、(ユーザID,移動元ノードID,移動先ノードID,移動データ範囲)の情報を作成する。移動元ノードIDは、移動させるデータを管理する仮想ノードのノードIDである。移動先ノードIDは、データを移動する先の仮想ノードのノードIDである。移動データ範囲は、現在値と以前値のペアであり、現在値が範囲の始まり、以前値が範囲の終わりを示す。移動元ノードIDと移動先ノードIDにマッピングアルゴリズムを適用してそれぞれの実IDを得る。そして、得られた実IDに対応するノード20の負荷分散装置21によりデータを移動する。
次に、仮想ノードの削除について説明する。仮想ノードの削除も追加と同様に、管理者が仮想ノード情報の削除することにより行う。
図10は、仮想ノード情報を削除する処理の流れを示すフローチャートである。まず、削除する仮想ノード数Mを決め(ステップ701)、削除する仮想ノード数Mが現在の仮想ノード数Nよりも小さく、N個の仮想ノードの現在使用容量の合計が(N−M)×最大容量より少ない場合(ステップ702)、仮想ノードを削除する処理を続ける。
管理者は、仮想ノード情報を認証システム3から読み出す(ステップ703)。
続いて、削除する仮想ノード情報を決定する(ステップ704)。基本的に、ノードIDが大きい順に削除するM個の仮想ノード情報を選ぶ。
続いて、ハッシュ空間をN−M個の部分ハッシュ空間に分割する(ステップ705)。本実施の形態では、以下の2つの方式のいずれか1つを管理者が選択する。
方式1は、ハッシュ空間全体をN−M個の連続した部分ハッシュ空間に分割する。このとき、部分ハッシュ空間は互いに重複する部分がなく、全ての部分ハッシュ空間をユニオンすると元のハッシュ空間が生成できる。また、部分ハッシュ空間それぞれの大きさが等しくなるように分割する。
方式2は、削除する仮想ノードに割り当てられた部分ハッシュ空間を、その部分ハッシュ空間の前の部分を割り当てられた仮想ノードの部分ハッシュ空間とユニオンさせる。
そして、部分ハッシュ空間が変更された影響を受けるデータを移動する(ステップ706)。仮想ノードの追加と同様に、仮想ノードの削除においてもノード20間で一部のデータ移動が必要となる。
データの移動が終了したら、仮想ノード情報を削除する(ステップ707)。仮想ノード情報を削除する場合、ノード20に格納された仮想ノード情報も削除する。ローカルストレージ24に作成されたディレクトリも削除する。M個の仮想ノード情報を削除したら(ステップ708)、変更した仮想ノード情報を認証システム3に格納する(ステップ709)。
図11では、仮想ノード1,2,3,4から仮想ノード3,4を削除した様子を示している。図11の見方は、図9と同様である。
削除時のデータの移動は、二段階で行われる。まず一段階目は、削除する仮想ノードが受け持っていたデータを図11のハッシュ空間において反時計回りで最初に出会う仮想ノード(削除されないもの)に移動させる。図11の例では、仮想ノード3のデータは仮想ノード1に移動され、仮想ノード4のデータは仮想ノード2に移動される。
続いて、二段階目は、削除される仮想ノードから移動されたデータのうち、その仮想ノードに割り当てられた新しい部分ハッシュ空間の終わりの値よりも大きなデータIDを持つもの、つまり、その仮想ノードに割り当てられた部分ハッシュ空間内に無いデータを担当する仮想ノードに移動する。
データの移動は、ノードの追加時と同様に、(ユーザID,移動元ノードID,移動先ノードID,移動データ範囲)の情報を作成し、各ノードIDを実IDに変換して負荷分散装置21により行う。
なお、二段階でデータを移動させなくとも、データ移動コストを削減するために、移動すべきデータの移動先になる仮想ノードを先に計算し、データの移動を一回で行ってもよい。
したがって、本実施の形態によれば、管理部11が仮想ノードを設定し、データ管理システム2に格納されたデータへのアクセス処理を各仮想ノードに振り分け、マッピング部12により仮想ノードとデータ管理システム2のノード20とを関連付けることにより、ユーザが利用するノード20を仮想ノード数以下に限定することができる。さらに、仮想ノード数、仮想ノードとノード20のマッピングを調整することで、ユーザがデータ管理システム2において使用可能な資源を管理することができる。
本実施の形態によれば、アクセス処理の振り分けをクライアント端末1のアクセス装置10により行うことで、データ管理システム2の負荷を軽減することが可能となる。
本実施の形態によれば、管理部11は、仮想ノードに部分ハッシュ空間を割り当て、データの識別のハッシュ値に基づいてそのデータを管理する仮想ノードを決定することにより、データを仮想ノードに一様に分散して管理させることが可能となり、実際にデータを格納するノードにおいてもデータを分散して管理させることができる。したがって、特定のノードがボトルネックとはならず、システム全体の資源使用効率もよい。
このように、本実施の形態によれば、ユーザ(アクセス装置10)毎に資源を管理することができるので、例えば、メールやログの格納の為にデータ管理システム2を使用するユーザは、大容量の格納空間を必要とするが、大量のアクセス処理資源は必要としないので、仮想ノードを少数のノード20にマッピングしておく。一方、大容量の格納空間と大量のアクセス処理を必要とする動画参照サービスの為にデータ管理システム2を使用するユーザに対しては、多くの仮想ノードを多くのノード20にマッピングする、というようにユーザの利用形態に合わせてシステムの資源を管理することができる。
また、あるユーザの為に資源を投入する必要がある場合、データ管理システム2にノード20を追加した後、そのユーザの仮想ノードのマッピングを変更することにより、特定のユーザに対して必要な資源をピンポイントで追加することが可能となる。
1…クライアント端末
2…データ管理システム
3…認証システム
4…ネットワーク
10…アクセス装置
11…管理部
12…マッピング部
20…ノード
21…負荷分散装置
22…ルーティング装置
23…管理装置
24…ローカルストレージ
2…データ管理システム
3…認証システム
4…ネットワーク
10…アクセス装置
11…管理部
12…マッピング部
20…ノード
21…負荷分散装置
22…ルーティング装置
23…管理装置
24…ローカルストレージ
Claims (6)
- 複数のノードによりP2Pネットワークを構成し、分散ハッシュテーブルを利用して前記ノードを管理する分散データ管理装置へのアクセス方法であって、
管理手段により、前記ノードを仮想的に表す仮想ノードのクラスタをユーザ毎に設定し、前記分散データ管理装置が格納するデータへのアクセス処理を前記仮想ノードのいずれかに分散して割り振るステップと、
マッピング手段により、前記仮想ノードに前記ノードを関連付けるステップと、
を有することを特徴とするアクセス方法。 - 前記割り振るステップは、前記クラスタにハッシュ空間を与え、前記仮想ノードのそれぞれに前記ハッシュ空間を分割した部分ハッシュ空間を割り当て、前記データのハッシュ値に基づいて前記アクセス処理を割り振ることを特徴とする請求項1記載のアクセス方法。
- 複数のノードによりP2Pネットワークを構成し、分散ハッシュテーブルを利用して前記ノードを管理する分散データ管理装置へのアクセス装置であって、
前記ノードを仮想的に表す仮想ノードのクラスタをユーザ毎に設定し、前記分散データ管理装置が格納するデータへのアクセス処理を前記仮想ノードのいずれかに分散して割り振る管理手段と、
前記仮想ノードに前記ノードを関連付けるマッピング手段と、
を有することを特徴とするアクセス装置。 - 前記管理手段は、前記クラスタにハッシュ空間を与え、前記仮想ノードのそれぞれに前記ハッシュ空間を分割した部分ハッシュ空間を割り当て、前記データのハッシュ値に基づいて前記アクセス処理を割り振ることを特徴とする請求項3記載のアクセス装置。
- 分散データ管理装置とその分散データ管理装置へのアクセスに用いるアクセス装置とを備えた分散データ管理システムであって、
前記分散データ管理装置は、
データを格納させる複数のノードを備え、
前記複数のノードによりP2Pネットワークを構成し、分散ハッシュテーブルを利用して前記ノードを管理するものであって、
前記アクセス装置は、
前記ノードを仮想的に表す仮想ノードのクラスタをユーザ毎に設定し、前記分散データ管理装置が格納するデータへのアクセス処理を前記仮想ノードのいずれかに分散して割り振る管理手段と、
前記仮想ノードに前記ノードを関連付けるマッピング手段と、
を有することを特徴とする分散データ管理システム。 - 前記管理手段は、前記クラスタにハッシュ空間を与え、前記仮想ノードのそれぞれに前記ハッシュ空間を分割した部分ハッシュ空間を割り当て、前記データのハッシュ値に基づいて前記アクセス処理を割り振ることを特徴とする請求項5記載の分散データ管理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008151077A JP2009295127A (ja) | 2008-06-09 | 2008-06-09 | アクセス方法、アクセス装置及び分散データ管理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008151077A JP2009295127A (ja) | 2008-06-09 | 2008-06-09 | アクセス方法、アクセス装置及び分散データ管理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009295127A true JP2009295127A (ja) | 2009-12-17 |
Family
ID=41543222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008151077A Pending JP2009295127A (ja) | 2008-06-09 | 2008-06-09 | アクセス方法、アクセス装置及び分散データ管理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009295127A (ja) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012060465A1 (ja) * | 2010-11-02 | 2012-05-10 | 日本電気株式会社 | 情報処理装置、システム、制御方法およびプログラム |
JP2013065203A (ja) * | 2011-09-16 | 2013-04-11 | Panasonic Corp | データ格納システム |
JP2014036274A (ja) * | 2012-08-07 | 2014-02-24 | Nippon Telegr & Teleph Corp <Ntt> | マルチキャスト配信制御方法、および、配信ルータ |
JP2016507813A (ja) * | 2012-12-27 | 2016-03-10 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | パーティション拡張方法および装置 |
US9424325B2 (en) | 2011-09-02 | 2016-08-23 | Fujitsu Limited | Recording medium, distribution controlling method, and information processing device |
JP2016157368A (ja) * | 2015-02-26 | 2016-09-01 | 日本電気株式会社 | 記憶システム、記憶方法、及び、プログラム |
JP2016173826A (ja) * | 2012-11-08 | 2016-09-29 | ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. | コンシステントハッシュ法を用いたネームスペースのための方法およびシステム |
CN109933284A (zh) * | 2019-02-26 | 2019-06-25 | 启迪云计算有限公司 | 一种分布式块存储系统的数据分布算法 |
CN111414422A (zh) * | 2020-03-19 | 2020-07-14 | 上海达梦数据库有限公司 | 一种数据分布方法、装置、设备和存储介质 |
CN111488178A (zh) * | 2019-01-29 | 2020-08-04 | 戴尔产品有限公司 | 用于解决方案集成标记的方法和系统 |
CN111522811A (zh) * | 2020-03-18 | 2020-08-11 | 大箴(杭州)科技有限公司 | 数据库的处理方法及装置、存储介质、终端 |
US10824460B2 (en) | 2017-12-28 | 2020-11-03 | Fujitsu Limited | Information processing apparatus, information processing method for reducing network traffic, and storage medium |
-
2008
- 2008-06-09 JP JP2008151077A patent/JP2009295127A/ja active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8973015B2 (en) | 2010-11-02 | 2015-03-03 | Nec Corporation | Information processing device, system, control method, and program |
WO2012060465A1 (ja) * | 2010-11-02 | 2012-05-10 | 日本電気株式会社 | 情報処理装置、システム、制御方法およびプログラム |
US9424325B2 (en) | 2011-09-02 | 2016-08-23 | Fujitsu Limited | Recording medium, distribution controlling method, and information processing device |
JP2013065203A (ja) * | 2011-09-16 | 2013-04-11 | Panasonic Corp | データ格納システム |
JP2014036274A (ja) * | 2012-08-07 | 2014-02-24 | Nippon Telegr & Teleph Corp <Ntt> | マルチキャスト配信制御方法、および、配信ルータ |
JP2016173826A (ja) * | 2012-11-08 | 2016-09-29 | ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. | コンシステントハッシュ法を用いたネームスペースのための方法およびシステム |
US9665284B2 (en) | 2012-12-27 | 2017-05-30 | Huawei Technologies Co., Ltd. | Partition extension method and apparatus |
JP2016507813A (ja) * | 2012-12-27 | 2016-03-10 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | パーティション拡張方法および装置 |
JP2016157368A (ja) * | 2015-02-26 | 2016-09-01 | 日本電気株式会社 | 記憶システム、記憶方法、及び、プログラム |
US10824460B2 (en) | 2017-12-28 | 2020-11-03 | Fujitsu Limited | Information processing apparatus, information processing method for reducing network traffic, and storage medium |
CN111488178A (zh) * | 2019-01-29 | 2020-08-04 | 戴尔产品有限公司 | 用于解决方案集成标记的方法和系统 |
CN111488178B (zh) * | 2019-01-29 | 2023-09-05 | 戴尔产品有限公司 | 用于解决方案集成标记的方法和系统 |
CN109933284A (zh) * | 2019-02-26 | 2019-06-25 | 启迪云计算有限公司 | 一种分布式块存储系统的数据分布算法 |
CN111522811A (zh) * | 2020-03-18 | 2020-08-11 | 大箴(杭州)科技有限公司 | 数据库的处理方法及装置、存储介质、终端 |
CN111522811B (zh) * | 2020-03-18 | 2023-04-07 | 大箴(杭州)科技有限公司 | 数据库的处理方法及装置、存储介质、终端 |
CN111414422A (zh) * | 2020-03-19 | 2020-07-14 | 上海达梦数据库有限公司 | 一种数据分布方法、装置、设备和存储介质 |
CN111414422B (zh) * | 2020-03-19 | 2023-09-29 | 上海达梦数据库有限公司 | 一种数据分布方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009295127A (ja) | アクセス方法、アクセス装置及び分散データ管理システム | |
US10291696B2 (en) | Peer-to-peer architecture for processing big data | |
KR101130387B1 (ko) | 부분 복제를 사용한 웹 컨텐츠 분배 호스팅 | |
Cai et al. | Maan: A multi-attribute addressable network for grid information services | |
US20150215405A1 (en) | Methods of managing and storing distributed files based on information-centric network | |
Zhang et al. | Distributed hash table: Theory, platforms and applications | |
JP5600573B2 (ja) | 負荷分散装置及びプログラム | |
US8296420B2 (en) | Method and apparatus for constructing a DHT-based global namespace | |
US20070079004A1 (en) | Method and apparatus for distributed indexing | |
JP2007514995A (ja) | エンタープライズ・ストレージ・システムを管理するためのコンピュータ・システム、方法、およびプログラム | |
Xu et al. | Efficient and scalable metadata management in EB-scale file systems | |
US20140244794A1 (en) | Information System, Method and Program for Managing the Same, Method and Program for Processing Data, and Data Structure | |
Li et al. | Write-only oblivious RAM-based privacy-preserved access of outsourced data | |
US8621182B1 (en) | Management of object mapping information corresponding to a distributed storage system | |
Hassanzadeh-Nazarabadi et al. | Laras: Locality aware replication algorithm for the skip graph | |
Xu et al. | Adaptive and scalable load balancing for metadata server cluster in cloud-scale file systems | |
CN114879907A (zh) | 一种数据分布确定方法、装置、设备及存储介质 | |
Yu et al. | Granary: A sharing oriented distributed storage system | |
Confais et al. | Data location management protocol for object stores in a fog computing infrastructure | |
Datta et al. | On de Bruijn routing in distributed hash tables: there and back again | |
CN112422611A (zh) | 基于分布式对象存储的虚拟桶存储处理方法和系统 | |
George et al. | Hadoop mapreduce for tactical clouds | |
Vijayakumar et al. | FIR3: A fuzzy inference based reliable replica replacement strategy for cloud Data Centre | |
Confais et al. | A tree-based approach to locate object replicas in a fog storage infrastructure | |
CN108965387B (zh) | 一种提高p2p数据存储抗毁性的均衡方法及系统 |