Einige Inhalte dieser Anwendung sind momentan nicht verfügbar.
Wenn diese Situation weiterhin besteht, kontaktieren Sie uns bitte unterFeedback&Kontakt
1. (WO2019008748) DATA PROCESSING SYSTEM AND DISTRIBUTION DATA SYSTEM USING SAME
Document

明 細 書

発明の名称 データ処理システムおよびこれを用いた分散データシステム

技術分野

0001  

背景技術

0002  

先行技術文献

特許文献

0003  

発明の概要

発明が解決しようとする課題

0004  

課題を解決するための手段

0005  

発明の効果

0006  

図面の簡単な説明

0007  

発明を実施するための形態

実施例 1

0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021  

符号の説明

0022  

請求の範囲

1   2   3   4   5   6  

図面

1   2   3   4   5   6   7   8   9  

明 細 書

発明の名称 : データ処理システムおよびこれを用いた分散データシステム

技術分野

[0001]
 本発明は、複数あるデータ管理サーバのいずれかが故障しても、任意の所定数のサーバを用いることで元のファイルを再生することができる分散データシステムに関するものである。

背景技術

[0002]
 従来、データ保護における堅牢性とデータ保存容量における高効率性をもつランダムネットワークコーディングを用いたデータシステムはエンコードされたデータへのアクセスの難しさのために、実用化が難しい技術であった。
 例えば、特開2015-35182の分散データシステムでは、クラスタを構成するデータ管理サーバが故障等した場合に、データ欠損を検出し、その欠損したデータのキーのハッシュ値の範囲を特定するための発明であり、分散データシステムが備える欠損データ特定装置は、データを保存するデータ管理サーバそれぞれと対になるダミーデータを生成し、振り分けサーバを介して各データ管理サーバに記憶しておく。欠損データ特定装置は、データ管理装置の増減を管理する分散ハッシュ情報の変更通知を受信すると、変更前後の分散ハッシュ情報を比較し、データ管理サーバの増減を判定する。そして、欠損データ特定装置は、データ管理サーバが削除された場合は、そのデータ管理サーバに向けてダミーデータの削除要求を、振り分けサーバを介して送信し、登録したダミーデータを削除できないことにより、データの欠損を検出し、変更前の分散ハッシュ情報に基づき、欠損データのキーの範囲を特定する構成からなっている。
 このようにすることで、クラスタを構成する複数のデータ管理サーバが故障等した場合に、原本データと所定の複製数の複製データが失われたことによる、データの欠損を検出することができる。また、損失データ特定装置が、旧世代の分散ハッシュ情報を記憶しておくことにより、減少したデータ管理装置の担当範囲に基づき、欠損したデータのキーのハッシュ値の範囲を特定することができる。
 上記構成ではデータ管理サーバが故障した場合に、データの欠損を復元させるために、多くの時間を費やす必要があり、復元したデータを用いてデコードするためには、従来同様に、一定条件を有する所定の原本データまたは複製データを有する複数の管理サーバを用いてデータ全体のデコードを行う必要があった。
 大規模データの分散データ処理システムとして、例えば、従来のHadoopでは、一つの元のファイルX0を複数(N)個(図示例ではX1、X2、X3の3つ)のブロックに区切り、各ブロックの複製を複数のサーバS1、S2、S3、・・に分配する(図9参照)構成が知られている。
 そして、一クラスターにおいて、R台のサーバがアクセス不能の状況下にあるとすると、1+R倍のデータ保存容量を必要とする。
 このことは、元のファイルの複製をそのまま前記サーバに分配する従来のGlusterFSの場合も同様で、1+R倍の保存容量が必要とされていた。

先行技術文献

特許文献

[0003]
特許文献1 : 特開2012-2214192号公報

発明の概要

発明が解決しようとする課題

[0004]
 この発明が解決しようとする問題点は、分散データシステムにおいて、多数のデータサーバに配布されるファイルを元のファイル容量の1/Nでエンコードして保存すると共に、前記多数のサーバの中から任意のN台のサーバを選択して元のファイルを再製することができるデータ処理システムおよびこれを用いたデータ分散システムを提供することにある。

課題を解決するための手段

[0005]
 本発明は、上記課題を達成するために、データ処理システムでは、
 元のファイルをN個の異なるブロックファイルに分けて N台以上の多数のサーバに分散配布するデータ処理システムにおいて
 コンピュータが、各サーバ毎にN個のブロックファイルに関連づけられた異なるN個の係数を1セットとして決定する係数決定手段と、
 前記元のファイルのデータを同一サイズ間隔で多数に区切り、各区切られたデータを前記サイズより更に小さい同一サイズでN個に再区切りし、該再区切りされてN個のブロックファイルを構成するN個のデータに、それぞれ関連づけられた前記1セットの係数をそれぞれ乗算してN個の積を求め、該N個の積を合算して1個のデータに圧縮する処理を繰り返して、元のファイルを1/Nのサイズのファイルにエンコードして前記サーバ配布用のファイルとするエンコード手段と、
 コンピュータが、N台のサーバに配布されたN個のファイルと、前記N台のサーバ毎に定められた前記係数とを用いて、N個の未知数を用いたN個の一次方程式の組からなる連立一次方程式を生成し、該連立一次方程式を解いてN個のブロックファイルを復元するデコード手段と、
 該復元されたN個のブロックファイルを連結して元のファイルを再生するファイル連結手段とを有することを特徴とする。
 また、請求項4のデータ分散システムでは、
 元のファイルをN個の異なるブロックファイルに分けて N台以上の多数のサーバに前記ファイルを分散配布する分散データシステムにおいて、
 各サーバ毎にN個のブロックファイルに関連づけられた異なるN個の係数を1セットとして決定し、該係数を保存する係数決定手段と、
 前記元のファイルのデータを同一サイズ間隔で多数に区切り、各区切られたデータを前記サイズより更に小さい同一サイズでN個に再区切りし、該再区切りされてN個のブロックファイルを構成するN個のデータに、それぞれ関連づけられた前記1セットの係数をそれぞれ乗算してN個の積を求め、該N個の積を合算して1個のデータに圧縮する処理を繰り返して、元のファイルを1/Nのサイズのファイルにエンコードして前記サーバ配布用のファイルとするエンコード手段と、
 該エンコードされたデータを前記配布予定のサーバに配布して保存する分散保存手段と、
 多数のサーバの中から任意のN台のサーバを選択するサーバ選択手段と、
 選択されたN台のサーバに配布されたN個のファイルと、前記N台のサーバ毎に定められた前記係数とを用いて、N個の未知数を用いたN個の一次方程式の組からなる連立一次方程式を生成し、該連立一次方程式を解いてN個のブロックファイルを復元しするデコード手段と、
 該復元されたN個のブロックファイルを連結して元のファイルを再製するファイル連結手段とを有し、
 前記エンコード手段およびデコード手段での演算は、ガロア体(有限体)を用いて演算されていることを特徴とする。
 前記Nは2または3であることが望ましい。

発明の効果

[0006]
 この発明によれば、元のファイルをN個のブロックのファイルに分け、各サーバ毎に異なる一次方程式を作成することができるようにエンコードされる。
 エンコード、デコードの演算はガロア体演算ライブラリーを用いるので、短時間で処理することができる。
 エンコードに際しては、元のファイルに対して1/Nのサイズに圧縮することができる。
 そして、デコードに際しては、任意のN台のサーバを選択し、N個の一次方程式を連立して解くことで元のファイルを再製することができ、デコードするサーバの台数以外を特定する必要がない。

図面の簡単な説明

[0007]
[図1] (a)は分散データシステムの概略を示す機能ブロック図、(b)はデータ処理システムのブロック図である。
[図2] エンコードされたデータの分散を示す概略図である。
[図3] 任意のサーバを選択してデコードする場合の概略図である。
[図4] エンコード時のファイルの区切を説明するブロック図である。
[図5] エンコード時の圧縮状態を説明するブロック図である。
[図6] ハッシュリングの初期状態を示す模式図である。
[図7] 同サーバ追加前を示す模式図である。
[図8] サーバ追加後の模式図である。
[図9] 従来のHadoopによるデータ分散を示す説明図である。

発明を実施するための形態

実施例 1
[0008]
 この発明の分散データシステムは、元のファイルをN個の異なるブロックファイルに分けてN台以上の多数のサーバ(データ管理サーバ)に前記ファイルを分散配布する分散データシステムであって、クライアントサーバシステムで用いることができる分散データシステムである。
 また上記分散システムに用いるデータ処理装置は、エンコード、デコ-ドにおいて同一である。
[0009]
 ここで、分散データシステム1の概略は、図1(a)のブロック図に示すように、クライアントにより決定された各サーバ毎にN個のブロックファイルに関連づけられた異なるN個の係数を1セットとして決定し、該係数を保存する係数決定手段2と、クライアントにより前記元のファイルX0のデータを同一サイズ間隔で多数に区切り、各区切られたデータを前記サイズより更に小さい同一サイズでN個に再区切りし、該再区切りされてN個のブロックファイルを構成するN個のデータに、それぞれ関連づけられた前記1セットの係数をそれぞれ乗算してN個の積を求め、該N個の積を合算して1個のデータに圧縮する処理を繰り返して、元のファイルを1/Nのサイズのファイルにエンコードして前記サーバ配布用のファイルとするエンコード手段3と、該エンコードされたデータを前記配布予定のサーバに配布して保存する分散保存手段4と、多数のサーバの中から任意のN台のサーバを選択するサーバ選択手段5と、選択されたN台のサーバに配布されたN個のファイルと、前記N台のサーバ毎に定められた前記係数とを用いて、N個の未知数を用いたN個の一次方程式の組からなる連立一次方程式を生成し、該連立一次方程式を解いてN個のブロックファイルを復元しするデコード手段6と、該復元されたN個のブロックファイルを連結して元のファイルX0を再製するファイル連結手段7とを有している。
 前記エンコード手段3およびデコード手段6での演算は、ガロア体(有限体)を用いて演算されている。
 なお、データ処理システム1’では、図1(a)の係数決定手段2と、エンコード手段3と、デコード手段6と、ファイル連結手段7とからなっているのでその説明を省略する(図1(b)参照)。
[0010]
[ランダムネットワークコーディング]
 ここで、説明の便宜上、Nを3として具体的に説明するが、この発明ではNは3に限定されることなく2でもよいし、他の自然数であってもよい。
 ランダムネットワークコーディングでは、連立一次方程式の特性を生かし、データシステムにおける高堅牢性とデータ容量の節約を両立させている。
 そこで、元のファイルX0を3つのブロック(X1、X2、X3)に区切り、X1を構成するデータをx1、X2を構成するデータをx2、X3を構成するデータをx3とする。
[0011]
 例えば、x1=3、x2=1、x3=12として、以下のように異なった係数の組み合わせで多数の一次方程式を作るとする。
   2x1+5x2+x3=13
   7x1+3x2+8x3=42
   4x1+x2+2x3=19
   5x1+4x2+9x3=33
   ・・・・・・・・(省略)
 ここで元のファイルX0を構成するX1,X2,X3を得るには、前記多数の一次方程式のうち3つの方程式があれば十分である。
 従って、ランダムネットワークコーディングでは、1つの元のファイルX0をN個、実施例ではX1、X2、X3の3個に分けて、サーバ毎の異なった組合せの係数aで、3つ以上の一次方程式を作ってエンコードが行われる。
 係数は、サーバ単位で、且つ3つに区切られたファイル(x1、x2、x3)毎に設定される。
[0012]
 この場合、クライアントは、まず3つのブロックに区切られたデータX1、X2、X3に対して関連づけられるサーバ毎の3つの係数aを決める。
 ここで1つのサーバに用いる1セットとなる3つの係数は、3つのうち全てが異なる係数でも、2つ以上の係数が同一の係数であってもよい。
 しかし、異なるサーバ間において、同一の係数の組合せが用いられることはなく、各サーバごとに違う組み合わせの係数が割り当てられる。
 そこで、ak.1、ak.2、ak.3、∀k∈{1,2,3,4,・・・・}を決め、ak.1x1+ak.2x2+ak.3x3、∀k∈{1,2,3,4,・・・・}の式に基づいて各サーバに分散配布されるデータb1、b2、b3、b4、・・・を演算する。
   a1.1x1+a1.2x2+a1.3x3=b1
   a2.1x1+a2.2x2+a2.3x3=b2
   a3.1x1+a3.2x2+a3.3x3=b3
   a4.1x1+a4.2x2+a4.3x3=b4
   ・・・・・・・・(省略)
[0013]
 ここで、aに続く数字「1」はサーバS1を指定する数字、「.1」はサーバに保存されるx1を指定する数字であり、「a1.1」はサーバS1のx1のデータに用いる係数を示す。
 同様に「.2」はx2を指定し、「.3」はx3を指定している。
 aに続く数字「2」はサーバS2を指定する数字、「3」はサーバS3指定する数字であり、その他は同様である。
 そして、b1は、前記サーバS1に保存するファイルを構成する数値、b2はサーバS2に保存する同様の数値、b3はサーバS3で保存する同様の数値である。
 このように各サーバ毎で、区切られるファイル毎に異なる係数が予め設定される。
 ここで、前記各サーバに送られる係数aのサイズはそれぞれ2bytesであり、サーバに配布されるファイルのヘッダーに記録される。
[0014]
[エンコード]
 クライアントCは前記サーバ毎の係数をファイルサイズ,ファイルの更新された時間といった情報と共に、対応するサーバに配布し,その後にファイルのエンコードを開始する。
 エンコードは、例えば、ファイルを6bytes毎に区切り,その6bytesのデータを更に2bytes毎に区切って、前記X1,X2,X3に対応したx1、x2、x3に割り当てる(図4参照)。
 そして、前記ak.1x1+ak.2x2+ak.3x3、∀k∈{1,2,3,4,・・・・}の式をガロア体を用いて算出し、新たに求められて2bytesのデータbx(図5参照)が、前記係数に対応したサーバに送られる。
 上記一連の作業は前記ファイルの末尾に到達するまで行われる。
 本実施例では、第1次の区切りのサイズを6bytesとし、第2次の再区切りのサイズを2bytesとしたが、上記数値は特に限定されるものではない。
[0015]
 このようにエンコードされたファイルのサイズは、元のファイルXO容量の1/3となる。
 先に述べたように前記サーバに保存されるファイルには係数や,必要に応じて元のファイルの情報などがヘッダー情報として付加されるので、最終的にサーバに保存されるファイル容量のサイズは元のファイルX0の1/3よりも若干大きくなる。
 一方、エンコードで得られたb1、b2、b3、b4・・は、繰り返し計算され、その都度、前記各サーバに送信される。
[0016]
[デコード]
 デコードは、まず目的のファイルを所有しているサーバを探索する。
 ファイルの探索において、もしファイルを所有しているサーバの台数が3台未満であればデコードは失敗となる。
 もし3台以上であればクライアントCは、そのうち任意の3台のサーバを選択し、まず3台のサーバから全部の係数aを記録した係数リストを含むヘッダー情報を取得し、次いで、エンコードされたデータをダウンロードする。
 そして、2bytesに圧縮されたデータ前記bx毎に、以下の連立一次方程式からガウスの消去法を用いてx1、x2、x3を求め、これらを連結して6bytes毎の元のデータx1、x2、x3に復元する(図4参照)。
  a1.1x1+a1.2x2+a1.3x3=b1
  a2.1x1+a2.2x2+a2.3x3=b2
  a3.1x1+a3.2x2+a3.3x3=b3
[0017]
 この作業はファイルの末尾まで行われ,復元されたx1、x2、x3のデータをX1、X2、X3の3つのデータに復元し、このデータを組み合わせて元のファイルX0とすることでデコードが完了する。
 このデコードの演算についても、エンコードと同様にガロア体(有限体)演算ライブラリを用いて演算される。
[0018]
[コンシステントハッシュ法によるファイル管理]
 本実施例では、メタデータサーバのような情報を管理する特別なサーバを使用せず,コンシステントハッシュ法を用いて、どのサーバが目的のファイルを持っているかなどの情報をクライアントが直接割り出すことができる。
 例として4台のサーバと、「test.c」、「Makefile」、「Readme.txt」、「TODO」の4つのファイルが存在するとする。
 本実施例では、まず図6に見られるように、ハッシュ値を用いてリング上にサーバを割り当てる。
[0019]
 次いで同様に図7のようにリング上に前記ファイルを割り当てるが、各ファイルの所有者はそのファイルの位置から時計回りに最も近いサーバとなる。
 図7ではサーバS3が、ファイルTODOを所有することになる。
 本実施例では、例えば図8のように、サーバS5が追加されたとすると、ここでファイルの所有者が変更されるのは「TODO」ファイルのみで、「TODO」の新たな所有者はサーバS5となるが、他のファイルは影響を受けないので、それらの際にファイルを所有するサーバの変更が最低限で収まるようになっている。
[0020]
 本実施例では、各サーバS1、S2、S3・・・Snが、それぞれクラスター内の全てのサーバのホスト名のサーバリストを保持している。
 そして、クライアントが任意の1台のサーバに接続した際に、前記サーバリストを受け取る。
 クライアントは、上記そのリストを元に、図6のようなハッシュリングを作り、図7~図8のようにどのサーバが目的のファイルを持っているかを割り出す。
 本実施例では、最低3台のサーバが目的のファイルを所有していなければならないが、割り出されたサーバをS4とすると、他のサーバに関してはサーバリスト上にあるS4に続くサーバS5,S6が所有しているものと見なす。
[0021]
 サーバプログラムは、クライアントプログラムと通信し、データの送受信、読み込み、保存処理を行うプログラムと、ファイルのエンコード、デコード、サーバヘのアップロード、サーバーからのダウンロード等を実行するプログラムと、サーバに保存されたデータをファイルシステムとしてローカルなホストからアクセスできるようにするプログラムとを有している。
更に、JavaScript(登録商標)からなるプログラムとして、エンコードされたデータをサーバからダウンロードし、デコードを行いながら、データが動画であればウェブブラウザ上で再生を行うプログラムが用いられている。
 これにより、エンコードされたデータが動画データの場合、ダウンロードはXMLHttpRequest関数を用いてHTTPで行い、動画再生にはHTML5の機能を使用して再生することができ、クラウドシステムや映像・音楽ストリーミングサービスのネットワークにおけるデータの保存量を減少させることが可能になった。

符号の説明

[0022]
 1 分散データシステム
 1’ データ処理システム
 2 係数決定手段
 3 エンコード手段
 4 分散保存手段
 5 サーバ選択手段
 6 デコード手段
 7 再製手段
 S1、S2、S3、・・・サーバ
 C  クライアント

請求の範囲

[請求項1]
 元のファイルをN個の異なるブロックファイルに分けてN台以上の多数のサーバに分散配布するデータ処理システムにおいて
 コンピュータが、各サーバ毎にN個のブロックファイルに関連づけられた異なるN個の係数を1セットとして決定する係数決定手段と、
 前記元のファイルのデータを同一サイズ間隔で多数に区切り、各区切られたデータを前記サイズより更に小さい同一サイズでN個に再区切りし、該再区切りされてN個のブロックファイルを構成するN個のデータに、それぞれ関連づけられた前記1セットの係数をそれぞれ乗算してN個の積を求め、該N個の積を合算して1個のデータに圧縮する処理を繰り返して、元のファイルを1/Nのサイズのファイルにエンコードして前記サーバ配布用のファイルとするエンコード手段と、
 コンピュータが、N台のサーバに配布されたN個のファイルと、前記N台のサーバ毎に定められた前記係数とを用いて、N個の未知数を用いたN個の一次方程式の組からなる連立一次方程式を生成し、該連立一次方程式を解いてN個のブロックファイルを復元するデコード手段と、
 該復元されたN個のブロックファイルを連結して元のファイルを再生するファイル連結手段とを有することを特徴とするデータ処理システム。
[請求項2]
 Nが3であって、元のファイルがX1、X2、X3のブロックファイルからなっており、
 再区切りされた3個のデータがx1、x2、x3からなり、
 x1の係数をak.1、x2の係数をak.2、x3の係数をak.3(ここでkはサーバを指定する数)として、
ak.1x1+ak.2x2+ak.3x3、∀k∈{1,2,3,4,・・・}
を求めて1つのデータに圧縮してなることを特徴とする請求項1に記載のデータ処理システム。
[請求項3]
 エンコードおよびデコードの演算がガロア体(有限体)を用いて演算されてなることを特徴とする請求項1または2に記載のデータ処理システム。
[請求項4]
 元のファイルをN個の異なるブロックファイルに分けてN台以上の多数のサーバに前記ファイルを分散配布する分散データシステムにおいて、
 各サーバ毎にN個のブロックファイルに関連づけられた異なるN個の係数を1セットとして決定し、該係数を保存する係数決定手段と、
 前記元のファイルのデータを同一サイズ間隔で多数に区切り、各区切られたデータを前記サイズより更に小さい同一サイズでN個に再区切りし、該再区切りされてN個のブロックファイルを構成するN個のデータに、それぞれ関連づけられた前記1セットの係数をそれぞれ乗算してN個の積を求め、該N個の積を合算して1個のデータに圧縮する処理を繰り返して、元のファイルを1/Nのサイズのファイルにエンコードして前記サーバ配布用のファイルとするエンコード手段と、
 該エンコードされたデータを前記配布予定のサーバに配布して保存する分散保存手段と、
 多数のサーバの中から任意のN台のサーバを選択するサーバ選択手段と、
 選択されたN台のサーバに配布されたN個のファイルと、前記N台のサーバ毎に定められた前記係数とを用いて、N個の未知数を用いたN個の一次方程式の組からなる連立一次方程式を生成し、該連立一次方程式を解いてN個のブロックファイルを復元しするデコード手段と、
 該復元されたN個のブロックファイルを連結して元のファイルを再製するファイル連結手段とを有し、
 前記エンコード手段およびデコード手段での演算は、ガロア体(有限体)を用いて演算されていることを特徴とする分散データシステム。
[請求項5]
 Nが2または3からなることを特徴とする。請求項4に記載の分散データシステム。
[請求項6]
 Nが3であって、元のファイルがX1、X2、X3のブロックファイルからなっており、
 再区切りされた3個のデータがx1、x2、x3からなり、
 x1の係数をak.1、x2の係数をak.2、x3の係数をak.3(ここでkはサーバを指定する数)として、
ak.1x1+ak.2x2+ak.3x3、∀k∈{1,2,3,4,・・・}を求めて1つのデータに圧縮してなることを特徴とする請求項4に記載の分散データシステム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]