(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-15
(54)【発明の名称】アクセスドッキングコンポーネント、システム、並びに、そのアクセスドッキングコンポーネントを用いた方法及び装置
(51)【国際特許分類】
G06F 16/182 20190101AFI20221108BHJP
【FI】
G06F16/182
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022515990
(86)(22)【出願日】2020-08-14
(85)【翻訳文提出日】2022-03-10
(86)【国際出願番号】 CN2020109079
(87)【国際公開番号】W WO2021057317
(87)【国際公開日】2021-04-01
(31)【優先権主張番号】201910898500.4
(32)【優先日】2019-09-23
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】517404197
【氏名又は名称】チャイナ ユニオンペイ カンパニー リミテッド
(74)【代理人】
【識別番号】100118784
【氏名又は名称】桂川 直己
(72)【発明者】
【氏名】ツー リジュン
(72)【発明者】
【氏名】ユェン ハン
(72)【発明者】
【氏名】ワン インジュオ
(72)【発明者】
【氏名】リー シューナン
(72)【発明者】
【氏名】ジャン チャオ
(72)【発明者】
【氏名】リョ ジーフェイ
(72)【発明者】
【氏名】ワン タオ
(57)【要約】
本発明は、アクセスドッキングコンポーネント、システム、並びに、そのアクセスドッキングコンポーネントを用いた方法及び装置を提供する。ここで、当該アクセスドッキングコンポーネントは、Hadoop計算サーバに配置されるとともに、Hadoopのファイルシステムインタフェースを互換的に実現して、Hadoop計算サービスコンポーネントとのアクセスドッキングを実現するための互換性インタフェースレイヤーと、互換性インタフェースレイヤーに対して第1のインタフェース関数を与えることで、ファイルシステムインタフェースにおいてHadoop計算サービスコンポーネントに必要なファイル操作を実現する操作実現レイヤーと、操作実現レイヤーに対して第2のインタフェース関数を与えることで、ファイル操作を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換するストレージアクセスレイヤーと、を備える。上記アクセスドッキングコンポーネントが用いられたことで、Hadoop計算サービスとストレージサービスのデカップリング分離を実現することができ、分散ストレージにおけるオブジェクトストレージに直接にアクセスすることが可能となる。
【特許請求の範囲】
【請求項1】
Hadoop計算サーバに配置されるとともに、
Hadoopのファイルシステムインタフェースを互換的に実現して、Hadoop計算サービスコンポーネントとのアクセスドッキングを実現するための互換性インタフェースレイヤーと、
前記互換性インタフェースレイヤーに対して第1のインタフェース関数を与えることで、前記ファイルシステムインタフェースにおいて前記Hadoop計算サービスコンポーネントに必要なファイル操作を実現する操作実現レイヤーと、
前記操作実現レイヤーに対して第2のインタフェース関数を与えることで、前記ファイル操作を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換するストレージアクセスレイヤーと、を備える、ことを特徴とするアクセスドッキングコンポーネント。
【請求項2】
前記分散ストレージは、Cephクラスターである、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項3】
前記オブジェクトストレージのアクセス操作は、Cephクラスターにおけるradosクラスターへのアクセス操作である、ことを特徴とする請求項2に記載のアクセスドッキングコンポーネント。
【請求項4】
前記ストレージアクセスレイヤーは、
CephクラスターにおけるMonノードとの通信を確立してCephクラスターのCrush Mapを取得するとともに、Crushアルゴリズムにより、Cephクラスターにおけるオブジェクトストレージ機器OSDの位置を計算するためのCrush計算ユニットと、
Cephクラスターにおけるオブジェクトストレージ機器OSDとのSocket通信を確立して、Cephクラスターへのアクセス操作を実現するためのファイル読書きユニットと、を含む、ことを特徴とする請求項3に記載のアクセスドッキングコンポーネント。
【請求項5】
前記ファイル操作は、少なくとも、
ファイル及びフォルダーをリストすること、フォルダーを作成すること、フォルダーを削除すること、ファイルの状態情報を取得すること、ファイルをリネームすること、フォルダーへ戻ること、ファイルへのポインタをオープンすること、データストリームを、オープンしたファイルに書き込むこと、オープンしたファイルのデータを読み取ること、ユーザ認証を実現することのうちの1つ又は複数を含む、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項6】
前記ストレージアクセスレイヤーは、Hadoop指定ディレクトリに配置されるダイナミックリンクライブラリファイルによって実現され、且つ、前記第2のインタフェース関数は、前記ダイナミックリンクライブラリファイルにおけるパッケージ化された、前記CephクラスターにおけるradosクラスターへアクセスするためのC++インタフェース関数である、ことを特徴とする請求項3に記載のアクセスドッキングコンポーネント。
【請求項7】
前記操作実現レイヤーは、Hadoop指定ディレクトリに配置される第2のJavaパケットによって実現され、前記第2のJavaパケットは、前記ダイナミックリンクライブラリファイルにおけるパッケージ化されたC++インタフェース関数をJavaインタフェース関数に変換するためのものであり、前記Javaインタフェース関数は前記第1のインタフェース関数である、ことを特徴とする請求項6に記載のアクセスドッキングコンポーネント。
【請求項8】
前記第2のJavaパケットは、JNIによって前記Javaインタフェース関数と前記C++インタフェース関数の間の変換を実現する、ことを特徴とする請求項7に記載のアクセスドッキングコンポーネント。
【請求項9】
前記互換性インタフェースレイヤーは、Hadoop指定ディレクトリに配置される第1のJavaパケットによって実現される、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項10】
前記ファイルシステムインタフェースの操作は、Hadoop分散ファイルシステムの実現を多重化する、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項11】
前記互換性インタフェースレイヤーは、さらに、HadoopのYarnコンポーネントに対して、運行中、前記第1のJavaパケットにおける機能関数を呼び出せるために用いられる、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項12】
前記アクセスドッキングコンポーネントは、Hadoop計算サーバクラスターにおける各計算サーバノードに配置される、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項13】
Hadoopの配置ファイルコンテンツcore-site.xmlには、前記アクセスドッキングコンポーネントのメインクラス情報が含まれる、ことを特徴とする請求項1に記載のアクセスドッキングコンポーネント。
【請求項14】
Hadoop計算サーバクラスターと分散ストレージを含むアクセスドッキングシステムであって、
前記Hadoop計算サーバクラスターにおける各計算サーバノードには、請求項1~13のいずれか1項に記載のアクセスドッキングコンポーネントが配置されて、各計算サーバノードを前記分散ストレージにドッキングするために用いられる、ことを特徴とするアクセスドッキングシステム。
【請求項15】
前記分散ストレージは、空きストレージインタフェースにより、前記Hadoop計算サーバクラスター以外の計算プラットフォームに対してストレージサービスを提供する、ことを特徴とする請求項15に記載のアクセスドッキングシステム。
【請求項16】
前記分散ストレージは、Cephクラスターであり、且つ、前記空きストレージインタフェースは、ブロック機器ストレージインタフェースとファイルシステムストレージインタフェースを含む、ことを特徴とする請求項15に記載のアクセスドッキングシステム。
【請求項17】
アクセスドッキングコンポーネントを用いた方法であって、
Hadoop計算サービスコンポーネントからのアクセス要求を受信し、
請求項1~13のいずれか1項に記載のアクセスドッキングコンポーネントを用いて、前記アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換することを含む、ことを特徴とする方法。
【請求項18】
Hadoop計算サービスコンポーネントからのアクセス要求を受信する前に、
Hadoopの配置ファイルコンテンツcore-site.xmlを用いて、前記アクセスドッキングコンポーネントのメインクラス情報を取得することをさらに含む、ことを特徴とする請求項17に記載の方法。
【請求項19】
アクセスドッキングコンポーネントを用いた装置であって、
Hadoop計算サービスコンポーネントからのアクセス要求を受信するための受信モジュールと、
請求項1~13のいずれか1項に記載のアクセスドッキングコンポーネントを用いて、前記アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換するためのアクセスモジュールとを備える、ことを特徴とする装置。
【請求項20】
Hadoopの配置ファイルコンテンツcore-site.xmlを用いて、前記アクセスドッキングコンポーネントのメインクラス情報を取得するためのロードモジュールをさらに備える、ことを特徴とする請求項19に記載の装置。
【請求項21】
アクセスドッキングコンポーネントを用いた装置であって、
1つまたは複数のマルチコアプロセッサと、
1つまたは複数のプログラムを記憶するためのメモリと、を含み、
前記1つまたは複数のプログラムが前記1つまたは複数のマルチコアプロセッサによって実行されると、前記1つまたは複数のマルチコアプロセッサに請求項17または18に記載の方法を実現させる、ことを特徴とする装置。
【請求項22】
プログラムが記憶されており、前記プログラムがマルチコアプロセッサによって実行されると、請求項17または18に記載の方法を前記マルチコアプロセッサに実行させる、ことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ストレージの技術分野に関し、具体的には、アクセスドッキングコンポーネント、システム、並びに、そのアクセスドッキングコンポーネントを用いた方法及び装置に関する。
【背景技術】
【0002】
本部分は、特許請求の範囲に記載の本発明の実施形態のために、背景又は上下文を提供することを意図したものである。ここでの記載は、本部分に含まれることが原因で従来技術として認められるものではない。
【0003】
ビッグデータ技術の発展が進んでいることに伴い、Hadoop計算サービスとストレージサービスのデカップリング分離は、(1)ストレージリソースの技術アーキテクチャを相対的に安定化させることで、計算コンポーネントに対する頻繁なアップグレード又は拡張による影響を回避することができる点、(2)ストレージリソースの共有化を容易にさせる点、という2つの利点を有するため、徐々に新しい発展傾向になっている。
【0004】
しかしながら、従来技術では、上述したHadoop計算サービスとストレージサービスのデカップリング分離を実現することができる、高性能で利用可能性が高い解決策はない。
【発明の概要】
【0005】
上述したような従来技術に存在するHadoop計算サービスとストレージサービスのデカップリング分離を実現することが困難であった問題に対し、本発明は、その問題を解決できる、アクセスドッキングコンポーネント、システム、並びに、そのアクセスドッキングコンポーネントを用いた方法及び装置を提供する。
【0006】
本発明では、以下の方案が提案されている。
【0007】
第1の態様では、Hadoop計算サーバに配置されるとともに、Hadoopのファイルシステムインタフェースを互換的に実現して、Hadoop計算サービスコンポーネントとのアクセスドッキングを実現するための互換性インタフェースレイヤーと、互換性インタフェースレイヤーに対して第1のインタフェース関数を与えることで、ファイルシステムインタフェースにおいてHadoop計算サービスコンポーネントに必要なファイル操作を実現する操作実現レイヤーと、操作実現レイヤーに対して第2のインタフェース関数を与えることで、ファイル操作を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換するストレージアクセスレイヤーと、を備えるアクセスドッキングコンポーネントを提供する。
【0008】
可能性のある幾つかの実施形態では、分散ストレージは、Cephクラスターである。
【0009】
可能性のある幾つかの実施形態では、オブジェクトストレージのアクセス操作は、Cephクラスターにおけるradosクラスターへのアクセス操作である。
【0010】
可能性のある幾つかの実施形態では、ストレージアクセスレイヤーは、CephクラスターにおけるMonノードとの通信を確立してCephクラスターのCrush Mapを取得するとともに、Crushアルゴリズムにより、Cephクラスターにおけるオブジェクトストレージ機器OSDの位置を計算するためのCrush計算ユニットと、Cephクラスターにおけるオブジェクトストレージ機器OSDとのSocket通信を確立して、Cephクラスターへのアクセス操作を実現するためのファイル読書きユニットと、を含む。
【0011】
可能性のある幾つかの実施形態では、ファイル操作は、少なくとも、ファイル及びフォルダーをリストすること、フォルダーを作成すること、フォルダーを削除すること、ファイルの状態情報を取得すること、ファイルをリネームすること、フォルダーへ戻ること、ファイルへのポインタをオープンすること、データストリームを、オープンしたファイルに書き込むこと、オープンしたファイルのデータを読み取ること、ユーザ認証を実現することのうちの1つ又は複数を含む。
【0012】
可能性のある幾つかの実施形態では、ストレージアクセスレイヤーは、Hadoop指定ディレクトリに配置されるダイナミックリンクライブラリファイル(Libcephrgw.so)によって実現され、且つ、第2のインタフェース関数は、ダイナミックリンクライブラリファイルLibcephrgw.soにおけるパッケージ化された、CephクラスターにおけるradosクラスターへアクセスするためのC++インタフェース関数である。
【0013】
可能性のある幾つかの実施形態では、操作実現レイヤーは、Hadoop指定ディレクトリに配置される第2のJavaパケット(cephlibrgw.jar)によって実現され、第2のJavaパケット(cephlibrgw.jar)は、ダイナミックリンクライブラリファイル(Libcephrgw.so)におけるパッケージ化されたC++インタフェース関数をJavaインタフェース関数に変換するためのものであり、第1のインタフェース関数はJavaインタフェース関数である。
【0014】
可能性のある幾つかの実施形態では、第2のJavaパケット(cephlibrgw.jar)は、JNIによってJavaインタフェース関数とC++インタフェース関数の間の変換を実現する。
【0015】
可能性のある幾つかの実施形態では、互換性インタフェースレイヤーは、Hadoop指定ディレクトリに配置される第1のJavaパケット(CephRgwFileSystem.jar)によって実現される。
【0016】
可能性のある幾つかの実施形態では、ファイルシステムインタフェースの操作は、HDFSの実現を多重化する。
【0017】
可能性のある幾つかの実施形態では、互換性インタフェースレイヤーは、さらに、HadoopのYarnコンポーネントに対して、運行中、第1のJavaパケット(CephRgwFileSystem.jar)における機能関数を呼び出せるために用いられる。
【0018】
可能性のある幾つかの実施形態では、アクセスドッキングコンポーネントは、Hadoop計算サーバクラスターにおける各計算サーバノードに配置される。
【0019】
可能性のある幾つかの実施形態では、Hadoopの配置ファイルコンテンツcore-site.xmlには、アクセスドッキングコンポーネントのメインクラス情報が含まれる。
【0020】
第2の態様では、Hadoop計算サーバクラスターと分散ストレージを含むアクセスドッキングシステムであって、Hadoop計算サーバクラスターにおける各計算サーバノードには、上記第1の態様におけるアクセスドッキングコンポーネントが配置されて、各計算サーバノードを前記分散ストレージにドッキングするために用いられるアクセスドッキングシステムを提供する。
【0021】
可能性のある幾つかの実施形態では、分散ストレージは、空きストレージインタフェースにより、Hadoop計算サーバクラスター以外の計算プラットフォームに対してストレージサービスを提供する。
【0022】
可能性のある幾つかの実施形態では、分散ストレージは、Cephクラスターであり、且つ、空きストレージインタフェースは、ブロック機器ストレージインタフェースとファイルシステムストレージインタフェースを含む。
【0023】
第3の態様では、アクセスドッキングコンポーネントを用いた方法であって、Hadoop計算サービスコンポーネントからのアクセス要求を受信し、上記第1の態様におけるアクセスドッキングコンポーネントを用いて、アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換することを含む方法を提供する。
【0024】
可能性のある幾つかの実施形態では、Hadoop計算サービスコンポーネントからのアクセス要求を受信する前に、Hadoopの配置ファイルコンテンツcore-site.xmlを用いて、アクセスドッキングコンポーネントのメインクラス情報を取得することをさらに含む。
【0025】
第4の態様では、アクセスドッキングコンポーネントを用いた装置であって、Hadoop計算サービスコンポーネントからのアクセス要求を受信するための受信モジュールと、上記第1の態様におけるアクセスドッキングコンポーネントを用いて、アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換するためのアクセスモジュールとを備える装置を提供する。
【0026】
可能性のある幾つかの実施形態では、Hadoopの配置ファイルコンテンツcore-site.xmlを用いて、アクセスドッキングコンポーネントのメインクラス情報を取得するためのロードモジュールをさらに備える。
【0027】
第5の態様では、アクセスドッキングコンポーネントを用いた装置であって、1つまたは複数のマルチコアプロセッサと、1つまたは複数のプログラムを記憶するためのメモリと、を含み、1つまたは複数のプログラムが1つまたは複数のマルチコアプロセッサによって実行されると、1つまたは複数のマルチコアプロセッサに上記第3の態様における方法を実現させる装置を提供する。
【0028】
第6の態様では、プログラムが記憶されており、プログラムがマルチコアプロセッサによって実行されると、上記第3の態様における方法をマルチコアプロセッサに実行させる、コンピュータ可読記憶媒体を提供する。
【0029】
本願の実施例で用いられる上記少なくとも1つの技術案によれば、以下のような有益な効果が得られる。上記アクセスドッキングコンポーネントにおける互換性インタフェースレイヤー、操作実現レイヤー、および、オブジェクトアクセスレイヤーによる協働で、Hadoopストレージサービスや管理レイヤー以上のインタフェースとソフトウェアの実現を何も変化させないままで、Hadoopの計算サービスとストレージサービスのヘテロジニアスなデカップリングをサポートすることができ、Hadoopの計算サービスコンポーネントがオブジェクトストレージのアクセス操作の方式により、ヘテロジニアスな分散ストレージへ直接にアクセスすることが可能となり、性能や利用可能が向上した。上記分散ストレージは、例えば、Cephクラスターである。
【0030】
理解すべきなのは、上記説明は、本発明の技術手段をより明瞭に理解してもらうための、本発明の技術案の概要に過ぎず、明細書の内容を基にして実施することが可能である。また、本発明の上記目的及び他の目的、特徴、及びメリットをさらに明瞭的で分かりやすくするために、以下は、特に、本発明の具体的な実施の形態を例示して説明する。
【図面の簡単な説明】
【0031】
以下の例示的な実施例の詳細を閲覧したうえで、当業者は、本明細書に記載の利点や有益な効果、および、他の利点や有益な効果を理解することができる。添付図面は、例示的な実施例の目的を示すためのものに過ぎず、本発明を制限するものとして見なされない。しかも、全ての添付図面において、同一の部材は同一の記号で示される。添付図面は以下の通りである。
【
図1】本発明の一実施例に係るアクセスドッキングコンポーネントの構造概略図。
【
図2】本発明の一実施例に係るFileSystemインタフェースの概略図。
【
図3】本発明の一実施例に係るアクセスドッキングコンポーネントを用いた方法のフロー概略図。
【
図4】本発明の一実施例に係るアクセスドッキングコンポーネントを用いた装置の構造概略図。
【
図5】本発明の別の実施例に係るアクセスドッキングコンポーネントを用いた装置の構造概略図。
【
図6】本発明の一実施例に係るコンピュータ可読記憶媒体の概略図。 添付図面において、同一又は対応な部分は、同一または対応な記号で示される。
【発明を実施するための形態】
【0032】
以下は、添付図面を参照しながら、本開示の例示的な実施例をより詳しく説明する。添付図面には、本開示の例示的な実施例が示されたが、本開示は、種々な形式で実現することができ、ここに記載の実施例により限られたものではないと、理解すべきである。逆に、それらの実施例を提供する目的は、本開示をさらに明瞭に理解できるようにすることであって、本開示の範囲を当業者に完全に伝えることができることである。
【0033】
本発明では、理解すべきなのは、例えば、「含む」や「備える」のような用語は、本発明により開示された特徴、数字、工程、行為、部材、部分又はそれらの組み合わせの存在を示すためのものであり、1つまたは複数の他の特徴、数字、工程、行為、部材、部分又はそれらの組み合わせの存在の可能性を排除することを意図しない。
【0034】
本発明を説明する前に、まず、本明細書に記載の若干の技術用語について簡単に説明する。
【0035】
Hadoopは、Apache財団によって開発された分散システムの基礎となるアーキテクチャである。ユーザは、分散ボトムレイヤーの詳細を知らないままで、分散プログラムを開発することができる。クラスターの機能を十分に生かして高速な演算やストレージを可能にする。Hadoopは、現在、最も幅広く応用されている分散計算プラットフォームであり、MapReduce分散計算モデルを用いて、一連のインタフェース及びフレームを提供し、ユーザによる分散クラスターの計算リソースへの高効率な利用を支援し、計算の並行性を向上させる。
【0036】
Cephは、信頼性と拡張可能性のために設計された統合された、分散ファイルシステムであり、優れている性能を有するものである。
【0037】
Object Storageは、オブジェクトストレージであり、オブジェクトに基づくストレージとも呼ばれるが、離散ユニットの方法を解決し、処理することを記述するための汎用的な技術用語である。これらの離散ユニットは、オブジェクトとも呼ばれる。ファイルと同様に、オブジェクトは、データを含むものであるが、ファイルとの相違点といえば、オブジェクトが1つのレイヤー構造において階層的な構造を有しない点が挙げられる。各オブジェクトは、ストレージプールと呼ばれるフラットなアドレス空間における同一の階層にあるものである。1つのオブジェクトは、もう1つのオブジェクトの次の階層にあるわけがない。
【0038】
なお、説明すべきなのは、衝突しない場合、本発明における実施例及び実施例に記載の特徴は互いに組み合わされてもよい。以下は、添付図面を参照しながら、実施例を組み合わせて本願発明を詳しく説明する。
【0039】
図1に示されるように、本実施例は、アクセスドッキングコンポーネント100を提供する。当該アクセスドッキングコンポーネント100は、Hadoop計算サーバに配置され、且つ、アクセスドッキングコンポーネント100は、互換性インタフェースレイヤー101、操作実現レイヤー102、および、ストレージアクセスレイヤー103を含む。ここでは、互換性インタフェースレイヤー101は、Hadoop計算サーバに配置されるとともに、Hadoopのファイルシステムインタフェースを互換的に実現して、Hadoop計算サービスコンポーネントとのアクセスドッキングを実現するためのものである。操作実現レイヤー102は、互換性インタフェースレイヤー101に対して第1のインタフェース関数を与えることで、ファイルシステムインタフェースにおいてHadoop計算サービスコンポーネントに必要なファイル操作を実現する。ストレージアクセスレイヤー103は、操作実現レイヤー102に対して第2のインタフェース関数を与えることで、ファイル操作を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換して、分散ストレージとのアクセスドッキングを実現させる。
【0040】
可能性のある幾つかの実施形態では、上記分散ストレージは、Cephクラスターであることが好ましい。理解すべきなのは、本実施例は、HadoopとCephクラスター以外の他の分散ストレージ機器とのドッキングを実現するために適用されてもよい。本実施例は、Cephクラスターを例にして説明しているが、それに限られていない。CephラスターをHadoopドッキング用の分散ストレージとして用いることにより、Hadoopの場合からすると、ファイルへの読書き性能を効果的に向上させ、ファイルへのアクセス効率を高めることができる。同時に、Hadoop内のデータは、Cephによってユーザスペースにロードされることが可能となるため、データへの多様化された管理を実現した。Cephクラスターの場合からすると、HadoopプラットフォームによるCephクラスターへのアクセスによれば、Cephクラスターに対してJavaプログラミング言語のアクセスインタフェースを提供し、Cephの応用場面や応用範囲が更に広く拡張されるようになる。
【0041】
可能性のある幾つかの実施形態では、Hadoopの配置ファイルコンテンツcore-site.xmlには、アクセスドッキングコンポーネントのメインクラス情報が含まれる。例を挙げると、表1に示されるように、Hadoopの配置ファイルコンテンツcore-site.xmlには、以下の配置アイテムが追加される。
【表1】
【0042】
ここで、配置アイテムのfs.cephRgw.implは、cephRgwの実現クラスを示す。配置アイテムのceph.auth.id、ceph.conf.file、ceph.auth.access ユーザのaccess key、ceph.auth.secret、ceph.auth.secret、mon hostなどは、Cephクラスターのパラメータを設定し、配置アイテムのfs.AbstractFileSystem.cephRgw.implはcephRgwの抽象的なファイルシステムの実現クラスを示す。
【0043】
さらに、AbstractFileSystemは、Hadoopにおいて、仮想ファイルシステム(VFS)のような役割を果たすものであり、Hadoopではファイルシステムのフォーマットが不明瞭である場合に用いられ、ファイル作成(create)、目次作成(mkdir)、ファイルストリーム作成(open)などの仮想方法を実現させ、Hadoopに必要な様々なファイル操作をCephに実現させるために用いられる。CephRgw機能関数は、CephRgw(URI thisUri, Configuration conf) throws IOException, URISyntaxExceptionを含み、Hadoopレイヤーコンポーネントに対して、運行中、CephRgwFileSystemクラスにおける関数を呼び出せることを示す。
【0044】
以下は、互換性インタフェースレイヤー101、操作実現レイヤー102、および、ストレージアクセスレイヤー103の機能、内部実現構造について、例示的に説明する。
【0045】
(1)互換性インタフェースレイヤー101
互換性インタフェースレイヤー101は、Hadoopのファイルシステムインタフェース(FileSystem)を互換的に実現して、Hadoop計算サービスコンポーネントとのアクセスドッキングを実現するためのものである。
【0046】
具体的には、上記互換性インタフェースレイヤー101は、CephRgwFileSystemクラスを用いてFileSystemインタフェースを実現し、さらに、FileSystemインタフェースを介してHadoop計算サービスコンポーネントとのアクセスドッキングを形成することができる。具体的に、Hadoop計算サービスコンポーネントによって呼び出されてファイルに関する方法を実行させ、又は、ファイルに関する操作を実現させることで、Hadoopファイルシステムインタフェースとして機能し、Hadoop計算サービスコンポーネントによるファイルI0への呼び出しの違いをシールドしてもよい。
【0047】
図2には、当該FileSystemインタフェースに含まれる抽象的な方法が示される。FileSystemインタフェースは、Hadoop計算サービスコンポーネントが必要に応じてファイルに関する操作を実行することをサポートする。具体的な機能として、配置ファイルによってファイルシステムを初期化すること、ファイル又はフォルダーを作成すること、ファイル又はフォルダーの情報を取得すること、ファイル又はフォルダーの権限を設定すること、ファイルの読書きデータストリームを作ること、ファイルに対して読書き操作を行うこと、および、フォルダーをリネーム又は削除すること、が含まれるが、これらに限らない。
【0048】
可能性のある幾つかの実施形態では、上記互換性インタフェースレイヤー101、即ち、CephRgwFileSystemレイヤーは、Hadoop指定ディレクトリに配置される第1のJavaパケットCephRgwFileSystem.jarによって実現されてもよい。例えば、Hadoopのshare/Hadoop/common/libにおいて、当該CephRgwFileSystem.jarを入れてもよい。また、上記CephRgwFileSystem.jarを利用して、Hadoopの呼び出しサービスコンポーネント(例えば、Yarn)によるバッファ格納位置などのような特別なファイルストレージ要求に対応するドッキングを同時に実現させることもできる。
【0049】
可能性のある幾つかの実施形態では、CephRgwFileSystemレイヤーは、さらに、HadoopのYarnコンポーネントに対して、Yarnの運行中、CephRgwFileSystemクラスにおける機能関数を呼び出せるために用いられる。例えば、Hadoopに配置されるCephRgw機能関数によって、上記機能を実現させてもよい。
【0050】
例を挙げると、当該CephRgw機能関数は、CephRgw(URI?thisUri,?Configuration?conf)?throws?IOException,?URISyntaxExceptionであってもよい。
【0051】
可能性のある幾つかの実施形態では、上記CephRgwFileSystemクラスの操作は、HDFSの実現を多重化することにより、HDFSクライアント端末におけるファイル読取操作のロジックと互換性を両立させる。そのため、CephRgwFileSystemクラスにおける機能関数を呼び出すとき、Hadoopのコンポーネントが自装置分散の方式により、Cephクラスターへアクセスすることができ、業務コードを改めて書き込む必要がなく、クライアント端末におけるコードの使用が簡素化された。
【0052】
例を挙げると、表2に示されるように、当該CephRgwFileSystemクラスに含まれる機能関数は以下の通りである。
【表2】
上述した互換性インタフェースレイヤー101から分かるように、FileSystemの新しい実現クラスFileSystemcを導入することにより、HDFSアクセスの互換性に対応して、Hadoop計算サービスコンポーネントに対するドッキングを実現することができる。
【0053】
(2)操作実現レイヤー102
操作実現レイヤー102は、上層の互換性インタフェースレイヤー101に対して第1のインタフェース関数を与えることで、FileSystemインタフェースにおいてHadoop計算サービスコンポーネントに必要なファイル操作を実現する。
【0054】
具体的には、操作実現レイヤー102、即ち、cephlibrgwレイヤーは、Hadoop指定ディレクトリに配置される第2のJavaパケットcephlibrgw.jarによって実現されてもよい。例えば、Hadoopのshare/Hadoop/common/libにおいて、当該cephlibrgw.jarを入れて、上記cephlibrgwレイヤーを実現してもよい。
【0055】
可能性のある幾つかの実施形態では、上記ファイル操作は、少なくとも、ファイル及びフォルダーをリストすること、フォルダーを作成すること、フォルダーを削除すること、ファイルの状態情報を取得すること、ファイルをリネームすること、フォルダーへ戻ること、ファイルへのポインタをオープンすること、データストリームを、オープンしたファイルに書き込むこと、オープンしたファイルのデータを読み取ること、ユーザ認証を実現することのうちの1つ又は複数を含む。
【0056】
例を挙げると、表3に示されるように、cephlibrgwレイヤーから与えられた第1のインタフェース関数はJavaインタフェース関数であり、以下のようなものを含んでもよい。
【表3】
【0057】
(3)ストレージアクセスレイヤー103
ストレージアクセスレイヤー103は、操作実現レイヤー102に対して第2のインタフェース関数を与えることで、ファイル操作を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換する。ここで、オブジェクトストレージのアクセス操作は、具体的に、Cephクラスターにおけるradosクラスターへのアクセス操作である。
【0058】
可能性のある幾つかの実施形態では、ストレージアクセスレイヤー103は、C言語レイヤーであり、Hadoop指定ディレクトリに配置されるダイナミックリンクライブラリファイルLibcephrgw.soによって実現されてもよい。例えば、Hadoopの/usr/lib64/フォルダーにおいて、libcephrgw.soを入れて上記ストレージアクセスレイヤー103を実現してもよい。
【0059】
ストレージアクセスレイヤー103から操作実現レイヤー102に対して与えられた第2のインタフェース関数は、具体的には、Libcephrgw.soにおけるパッケージ化された、CephクラスターにおけるradosクラスターへアクセスするためのC++インタフェース関数であってもよい。当該C++インタフェース関数は、ファイル作成、ファイルアクセス、ファイル読取、ファイル書き込み、ファイル更新、目次リスト、ファイル名検索、ファイル状態検索、システム状態検索などの基本的な操作の関数インタフェースを与えるとともに、初期化システムハンドル、取得操作ハンドルなどの関数を新たにパッケージ化する。ユーザは、相応なハンドルを要求してから操作関数を直接に呼び出すだけで、相応な操作を行うことができるが、Ceph内部の中間変数及びパラメータを手動で管理する必要がない。
【0060】
例を挙げると、表4に示されるように、Libcephrgw.soから与えられる第2のインタフェース関数はC++インタフェース関数であり、以下の内容を含んでもよい。
【表4】
【0061】
可能性のある幾つかの実施形態では、上記操作実現レイヤー102は、さらに、Libcephrgw.soにおけるパッケージ化されたC++インタフェース関数を呼び出して、上層の互換性インタフェースレイヤーに与えるJavaインタフェース関数、即ち、第1のインタフェース関数に変換してもよい。具体的には、操作実現レイヤー102は、JNIによってJavaインタフェース関数とC++インタフェース関数の間の変換を実現する。ここで、上記JNIにより、若干の呼び出しインタフェースが与えられて、Java言語とC++言語との通信を可能にする。理解すべきなのは、Hadoopで用いられるプログラミング言語がJava言語であり、Cephクラスターで用いられる言語がC++言語であり、Java言語ではハードウェアを直接に操作することができないので、JNIにより、C++のベース又は関数を呼び出してハードウェアを操作することができ、重複開発を回避した。
【0062】
可能性のある幾つかの実施形態では、
図1に示されるように、ストレージアクセスレイヤー103は、具体的には、CephクラスターにおけるMonノードとの通信を確立してCephクラスターのCrush Mapを取得するとともに、Crushアルゴリズムにより、Cephクラスターにおけるオブジェクトストレージ機器OSDの位置を計算するためのCrush計算ユニットと、Cephクラスターにおけるオブジェクトストレージ機器OSDとのSocket通信を確立して、Cephクラスターへのアクセス操作を実現し、即ち、Cephクラスターへのドッキングを実現するためのファイル読書きユニットと、を含む。
【0063】
可能性のある幾つかの実施形態では、アクセスドッキングコンポーネント100は、具体的に、Hadoop計算サーバクラスターにおける各Hadoop計算サーバノードに配置される。それにより、Hadoopのビッグデータ計算サービスが、余計にゲートウェイを介さずに、Cephストレージに分散して直接にアクセスすることが可能となり、アクセス経路が短くて、性能や利用可能性が向上する。
【0064】
上記アクセスドッキングコンポーネントにおける互換性インタフェースレイヤー、操作実現レイヤー、および、オブジェクトアクセスレイヤーによる協働で、Hadoopストレージサービスや管理レイヤー以上のインタフェースとソフトウェアの実現を何も変化させないままで、Hadoopの計算サービスとストレージサービスのヘテロジニアスなデカップリングをサポートすることができ、Hadoopの計算サービスコンポーネントがオブジェクトストレージのアクセス操作の方式により、ヘテロジニアスな分散ストレージへ直接にアクセスすることが可能となり、性能や利用可能が向上した。
【0065】
上記アクセスドッキングコンポーネントについて、本願の実施例では、さらに、Hadoop計算サーバクラスターと分散ストレージを含むアクセスドッキングシステムであって、Hadoop計算サーバクラスターにおける各計算サーバには、上記アクセスドッキングコンポーネントが配置されて、各計算サーバを当該分散ストレージにドッキングするために用いられるアクセスドッキングシステムを提供する。
【0066】
可能性のある幾つかの実施形態では、分散ストレージは、空きストレージインタフェースにより、Hadoop計算サーバクラスター以外の計算プラットフォームに対してストレージサービスを提供する。例えば、Cephクラスターにおけるストレージリソースは、同時にビッグデータ、仮想マシン、容器のような異なるアプリケーションに共有化されて利用されることが可能となり、ストレージリソースの共有化が図れる。
【0067】
可能性のある幾つかの実施形態では、分散ストレージは、Cephクラスターであり、且つ、空きストレージインタフェースは、ブロック機器ストレージインタフェースとファイルシステムストレージインタフェースを含む。
【0068】
説明すべきなのは、本願の実施例におけるアクセスドッキングシステムによれば、アクセスドッキングコンポーネントの実施例の各態様を実現させるとともに、同様な効果や機能を達成させることができる。ここでは説明を省略する。
【0069】
上記アクセスドッキングコンポーネントについて、本願の実施例では、さらに、アクセスドッキングコンポーネントを用いた方法を提供する。
図3は、本願の一実施例に係るアクセスドッキングコンポーネントを用いた方法のフロー概略図である。
図3に示されるように、方法300では、
【0070】
ステップS301:Hadoop計算サービスコンポーネントからのアクセス要求を受信すること、および、
【0071】
ステップS302:上記アクセスドッキングコンポーネントを用いて、アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換すること、を含む。
【0072】
可能性のある幾つかの実施形態では、方法300では、、Hadoopの配置ファイルコンテンツcore-site.xmlを用いて、アクセスドッキングコンポーネントのメインクラス情報を取得することを更に含んでもよい。
【0073】
次は、上記アクセスドッキングコンポーネントを用いた方法について、putファイルを例にしたデータアクセスプロセスを詳しく説明する。
【0074】
まず、互換性インタフェースレイヤーによって下記ステップを実行される。
ステップS41:putファイルを分割すること。
ステップS42:create関数により、putファイルをデータストリームの形式で操作実現レイヤーに伝送すること。
【0075】
ここで、Hadoopはcore-site.xmlファイルのio.file.buffer.size配置アイテムに基づいて、ファイルを分割する(デフォルト値が4096バイト)。Filesystemインタフェースにおいて定義されたcreate関数により、CephRgwOutputStreamのファイル出力ストリームを構築して、下層の操作実現レイヤーに伝送する。CephRgwOutputStreamにおいて、core-site.xmlファイルのceph.io.buffer.size配置アイテムに基づいて、バッファエリアの大きさ(デフォルト値が4M)を設定する。HadoopはCephRgwOutputStreamのWrite関数を呼び出してファイルコンテンツをcephlibrgw.jarに伝送する。
【0076】
次は、操作実現レイヤーによって下記ステップを実行される。
ステップS43:Javaインタフェース関数とC++インタフェース関数とのドッキングを可能にして、データストリームを引き続き下向きにストレージアクセスレイヤーに伝送すること。
【0077】
ここで、操作実現レイヤーは、下層のストレージアクセスレイヤーから与えられるC++インタフェース関数を呼び出して、ファイルデータストリームをストレージアクセスレイヤーに伝送する。
【0078】
更に、ストレージアクセスレイヤーによって下記ステップを実行される。
S44:Cephクラスター情報を取得するとともに、データストリームを更に分割すること。
S45:分割された各セグメントに対応するOSD位置を計算すること。
S46:OSDと直接に通信して、ファイルをアップロードすること。
【0079】
ここで、ストレージアクセスレイヤーは、その中のCrush計算ユニットによってceph monと通信して、Cephクラスター情報を取得するとともに、Cephクラスターにおける下層Objectsの大きさ(デフォルト値が4M)に基づいてファイルデータストリームを更に分割する。ストレージアクセスレイヤーは、その中のCrush計算ユニットによってceph monと通信して、Crush Mapを取得するとともに、分割されたセグメント情報に基づいてCrush計算ユニットにより、分割された各セグメントに対応するマスターOSDのip及びポート番号を計算する。ストレージアクセスレイヤーは、その中のファイル読み書き操作によって、OSDとの通信を確立してデータの非同期伝送を行い、伝送が完了すると、OSD端からその旨を返送される。
【0080】
上記アクセスドッキングコンポーネントを用いて、その中の互換性インタフェースレイヤー、操作実現レイヤー、および、オブジェクトアクセスレイヤーによる協働で、Hadoopストレージサービスや管理レイヤー以上のインタフェースとソフトウェアの実現を何も変化させないままで、Hadoopの計算サービスとストレージサービスのヘテロジニアスなデカップリングをサポートすることができ、Hadoopの計算サービスコンポーネントがオブジェクトストレージのアクセス操作の方式により、ヘテロジニアスな分散ストレージへ直接にアクセスすることが可能となり、性能や利用可能が向上した。
【0081】
上記アクセスドッキングコンポーネントについて、本願では、さらに、アクセスドッキングコンポーネントを用いた装置を提供する。
図4は、本願の一実施例に係るアクセスドッキングコンポーネントを用いた装置の構造概略図である。
図4に示されるように、装置40は、
【0082】
Hadoop計算サービスコンポーネントからのアクセス要求を受信するための受信モジュール401と、上記アクセスドッキングコンポーネントを用いて、アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換するためのアクセスモジュール402とを備える。
【0083】
可能性のある幾つかの実施例では、装置40は、Hadoopの配置ファイルコンテンツcore-site.xmlを用いて、アクセスドッキングコンポーネントをロードするロードモジュールをさらに備える。
【0084】
当業者であれば理解できるように、本発明の各態様は、デバイス、方法、又はコンピュータ可読記憶媒体によって実現されてもよい。そのため、本発明の各態様は、具体的に、完全なハードウェアによる実施形態、完全なソフトウェアによる実施形態(ファームウェア、マイクロコードなどを含む)、又は、ハードウェアとソフトウェアを組み合わせた方面の実施形態という形式によって実現されてもよく、ここでは、「回路」、「モジュール」または「デバイス」と総称されてもよい。
【0085】
可能性のある幾つかの実施形態では、本発明におけるアクセスドッキングコンポーネントを用いた装置は、少なくとも1つまたは複数のプロセッサと、少なくとも1つのメモリとを含んでもよい。ここで、メモリには、プログラムが記憶されており、プログラムがプロセッサによって実行されると、
図3に示す下記ステップをプロセッサに実行させる。
ステップS301:Hadoop計算サービスコンポーネントからのアクセス要求を受信すること、および、
ステップS302:上記アクセスドッキングコンポーネントを用いて、アクセス要求を、分散ストレージにおけるオブジェクトストレージへのアクセス操作に変換すること。
【0086】
以下は、
図5を参照しながら、本発明のそのような実施形態に係るアクセスドッキングコンポーネントを用いた装置5を説明する。
図5に示す装置5は1つの例示に過ぎず、本発明の実施例における機能及び使用範囲を規制するものではない。
【0087】
図5に示されるように、装置5は、計算デバイスの形式によって示されてもよく、少なくとも1つもプロセッサ10と、少なくとも1つのメモリ20と、異なるデバイスコンポーネントに接続されるバス60とを含むが、これらに限らない。
【0088】
バス60は、データバス、アドレスバス、および、制御バスを含む。
【0089】
メモリ20は、例えば、ランダムアクセスメモリ(RAM)21及び/又はキャッシュメモリメモリ22のような揮発性メモリを含んでもよく、リードオンリーメモリ(ROM)23をさらに含んでもよい。
【0090】
メモリ20は、プログラムモジュール24をさらに含んでもよい。そのようなプログラムモジュール24は、操作デバイス、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール及びプログラムデータを含むが、これらに限らない。これらの例示のうちの各構成又はある組合せには、ネットワーク環境の実現が含まれてもよい。
【0091】
装置5は、さらに、1つ又は複数の外部デバイス2(例えば、キーボード、ポインタデバイス、Bluetoothデバイスなど)と通信してもよく、1つ又は複数の他のデバイスと通信してもよい。そのような通信は、入出力(I/O)インタフェース40によって行われて、表示ユニット30に表示されてもよい。しかも、装置5は、ネットワークアダプター50によって1つまたは複数のネットワーク(例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、および/又は、公衆回線ネットワーク、例えば、インターネット)と通信してもよい。同図に示されるように、ネットワークアダプター50は、バス60によって装置5における他のモジュールと通信する。理解すべきなのは、添付図面に示されていないが、装置5を他のハードウェア及び/又はソフトウェアと組み合わせて使用してもよい。ここでは、他のハードウェア及び/又はソフトウェアは、マイクロコード、デバイスドライバ、冗長処理装置、外部磁気ディスク駆動行列、RAIDデバイス、磁気テープドライバ、及び、データバックアップ記憶デバイスなどを含むが、これらに限らない。
【0092】
図6には、上述したような方法を実行するためのコンピュータ可読記憶媒体が示される。
【0093】
可能性のある幾つかの実施形態では、本発明の各態様は、プログラムコードを含み、前記プログラムコードがプロセッサによって実行されると、上記説明した方法を前記プロセッサに実行させる、コンピュータ可読記憶媒体の形式によって実現されてもよい。
【0094】
以上に説明していた方法では、上記添付図面に開示または未開示の複数の操作及びステップを含むが、ここでは説明を省略する。
【0095】
前記コンピュータ可読記憶媒体は、1つまたは複数の可読媒体の任意の組合せが用いられてもよい。可読媒体は、可読信号媒体または可読記憶媒体であってもよい。可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、又は、半導体のデバイス、装置又は機器、又は、上記任意の組合せであってもよい。可読記憶媒体のより具体的な例 (非網羅的なリスト) として、1つまたは複数のワイヤを有する電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ (RAM)、読取専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ (EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読取専用メモリ(CD-ROM)、光学記憶デバイス、磁気記憶装置、又は、上記任意のデバイスの適切な組み合わせが含まれる。
【0096】
図6に示されるように、本発明の実施形態に係るコンピュータ可読記憶媒体60が説明され、コンパクトディスク読取専用メモリ(CD-ROM)を含むとともに、プログラムコードを含み、例えば、PCのような端末機器に運行可能なものが用いられてもよい。しかし、本発明におけるコンピュータ可読記憶媒体はこれらに限らず、本明細書では、可読記憶媒体は、プログラムを含むまたは記憶した任意の有形媒体であってもよく、当該プログラムがコマンド実行デバイス、デバイスまたは装置によって用いられてもよく、又は、結合して用いられてもよい。
【0097】
本発明の操作を実行するためのプログラムコードを、1つまたは複数のプログラミング言語の任意の組合せで作成してもよい。前記プログラミング言語は、オブジェクト向けのプログラミング言語(例えば、Java、C++など)を含み、一般的なプロセスプログラミング言語(例えば、「C」言語又は類似したプログラミング言語)をさらに含む。プログラムコードは、完全にユーザコンピュータにて実行されてもよいし、一部がユーザコンピュータにて一部がリモートコンピュータにて実行されてもよいし、または、完全にリモートコンピュータやサーバにて実行されてもよい。リモートコンピュータデバイスに係る場合、リモートコンピュータデバイスは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN) を含む任意の種類のネットワークを介してユーザコンピュータデバイスに接続されていてもよいし、外部コンピュータデバイスに接続されていてもよい(たとえば、インターネットサービスプロバイダを利用してインターネットで接続されてもよい)。
【0098】
また、添付図面には、本発明方法の操作が特定の順序に従って記述されているが、しかし、それらの操作が当該特定の順序に従って実行されなければならないこと、または、示された全ての操作が実行されないと、所望の結果が実現されないことを要求したり、非明示に開示したりするためのものではない。付加的または選択的に、いくつかのステップを省略したり、複数のステップを1つのステップに合併して実行したり、及び/または、1つのステップを複数のステップに分割して実行したりすることができる。
【0099】
本発明の精神と原理は、若干の具体的な実施の形態を参照して説明されているが、理解すべきなのは、本発明は、開示されている具体的な実施の形態によって限定されず、各態様の分割は、単に説明の便宜のためのものに過ぎず、これらの態様の特徴を組み合わせて利益を得ることができないことを意味しない。本発明は、添付の請求項の精神や範囲に含まれる様々な修正や同等の構成を包含することが意図される。
【手続補正書】
【提出日】2022-03-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項15
【補正方法】変更
【補正の内容】
【請求項15】
前記分散ストレージは、空きストレージインタフェースにより、前記Hadoop計算サーバクラスター以外の計算プラットフォームに対してストレージサービスを提供する、ことを特徴とする請求項
14に記載のアクセスドッキングシステム。
【国際調査報告】