特許第6642650号(P6642650)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 広東技術師範学院の特許一覧

特許6642650Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法
<>
  • 特許6642650-Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法 図000015
  • 特許6642650-Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法 図000016
  • 特許6642650-Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法 図000017
  • 特許6642650-Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6642650
(24)【登録日】2020年1月8日
(45)【発行日】2020年2月5日
(54)【発明の名称】Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法
(51)【国際特許分類】
   G06F 16/13 20190101AFI20200127BHJP
   G06F 16/182 20190101ALI20200127BHJP
   G06F 16/185 20190101ALI20200127BHJP
【FI】
   G06F16/13 100
   G06F16/182
   G06F16/185
【請求項の数】1
【全頁数】15
(21)【出願番号】特願2018-147289(P2018-147289)
(22)【出願日】2018年8月4日
(65)【公開番号】特開2019-204473(P2019-204473A)
(43)【公開日】2019年11月28日
【審査請求日】2018年11月19日
(31)【優先権主張番号】201810500092.8
(32)【優先日】2018年5月22日
(33)【優先権主張国】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】518149350
【氏名又は名称】広東技術師範学院
(74)【代理人】
【識別番号】718003500
【氏名又は名称】鄒 静文
(72)【発明者】
【氏名】謝桂園
(72)【発明者】
【氏名】魏文国
(72)【発明者】
【氏名】蔡君
(72)【発明者】
【氏名】趙慧民
(72)【発明者】
【氏名】彭建烽
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特表2013−541057(JP,A)
【文献】 中国特許出願公開第104731921(CN,A)
【文献】 中国特許出願公開第103678491(CN,A)
【文献】 中国特許出願公開第103577123(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/13
G06F 16/182
G06F 16/185
(57)【特許請求の範囲】
【請求項1】
Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法であって、前記HDFSが以下を実行する:
ユーサーによってインプットされる小さなファイルの書き込みコマンドを受信し、前記書き込みコマンド中にユーザIDと小さなファイルの名前を含み、ユーザIDと前記小さなファイルの名前によって前記HBaseキャッシュモジュールを照会し、対応するファイル内容が出たら、前記HBaseキャッシュモジュールによって照会された第一のファイルコンテンツに前記小さなファイルを書き込み、小さなファイルの書き込まれた第一のファイルコンテンツを前記HBaseキャッシュモジュールにアップロードして更新し、対応するファイル内容が出ないと、前記小さなファイルのファイル名によって前記HDFSシステムのデータベースを照会して対応するファイルコンテツが照会されたかどうかを判断し、イエスであれば、前記データベースに照会された第二のファイルコンテンツに前記小さなファイルを書き込み、前記小さなファイルの書き込まれた第二のファイルコンテンツを前記データベースにアップロードして更新し、そうでなければ、HadooparchiveツールのAPIを呼び出して前記小さなファイルのファイル名と対応するHARファイルにアクセスし、前記小さなファイルを書き込み、前記小さなファイルの書き込まれたHARファイルを前記データベースにアップロードして更新し、前記データマージモジュールが採用するデータマージメソッドは以下を含む:ステップA:クライアントがストレージされるファイルをアップロードした後で、HDFSのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを用いて、前記ストレージされるファイルの関連ファイルコレクションを見つけ、ここで、前記ユーザアクセスプリファレンスモデルはユーザアクセスログレコードに基づいている、ステップB:前記関連ファイルコレクションのミドルファイルと前記ストレージされるファイルを順にマージするキューに追加し、ステップC:前記マージするキューのすべてのファイルの総サイズが128 MBを超えるかどうかを判断し、イエスであれば、ステップDに進み、そうでなければ、ステップEに進み、ステップD:前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップBに戻り、ステップE:前記関連ファイルコレクションのミドルファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップFに進み、そうでなければ、ステップBに進む。ステップF:すべてのマージしたデータブロックをHDFSシステムにストレージする。前記プリファレンスモデルがユーザアクセスログレコードから統計されたもので、具体的には:前記ユーザアクセスログレコードからアクティブユーザセットを統計し、前記アクティブユーザセットにアクセスされた小さなファイルをBeanオブジェクトで表し、前記小さなファイルがサイズが2MB又は2MB以下のファイルに指し、その中に、前記オブジェクトのプロパティが該小さなファイルにアクセスユーザID、ユーザにアクセスされた小さなファイル名及び該小さなファイルがアクセスされた回数を含み、JDBCテクノロジを用いて、前記beanオブジェクトをMysqlデーターベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つのアクセス動作のユーザが類似ユーザであり、類似ユーザのIDを記録して関連ファイルセットによって類似ユーザにアクセスされ、関連付けられたファイルの情報をストレージし、前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築し、前記HBaseキャッシュモジュールが採用するキャッシュメソッドは:ユーザアクセスログレコードを取得し、前記ユーザアクセスログレコードからアクティブユーザセットを統計し、対数線形モデルを用いて、前記アクティブユーザセットの各アクテイブユーザにアクセスされたファイルの人気予測値をアカウントし、人気予測値によって各ファイルを降順でソートし、ファイルの上位20%をホットスポットファイルとしてマークし、前記ホットスポットファイルを取得し、Hbaseデータベースを使って前記ホットスポットファイルの関連情報をキャッシュする。前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には:アクセスされたソースの接尾辞がjpgであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、その中に、前記レコード行がユーザID、アクセスページURL、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、ビジターIPを前記二次元配列でトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、前記HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、前記HashMapコレクションをValue値の降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージし、アクティブユーザセットとしてマークし、対数線形モデルをあわせて、前記アクティブユーザセットの各アクティブユーザにアクサスされたファイルの人気予測値をアカウントして、人気予測値によって各ファイルを降順にソートし、ファイルの上位20%をホットスポットファイルとしてマークし、具体的には:ArrayListコレクションから抽出されたビジターIPを、前記二次元配列から抽出されたビジターIPと照合し、一致が出たら、合致するビジターIPをキーワードとして、各ユーザのアクセス開始時刻を照会して、対数線形モデルを用いて、前記アクティブユーザセットの各アクティブユーザにアクセスされたファイルの人気予測値をアカウントし、人気予測値によって各ファイルを降順にソートし、ファイルの上位20%をホットスポットファイルとしてマークし、前記対数線形モデルは:
であり、その中に、
がファイルiの人気予測値であり、
がファイルiが観測期間中のトラフィックであり、観測期間の長さがtである。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータテクノロジー分野に関し、具体的には、Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法に関する。
【背景技術】
【0002】
Hadoopは2005年にApache FoundationによってLuceneのサブプロジェクトであるNutchの一部分として正式に導入されたものである。Hadoopの最も重要な二つの設計はHDFSとMapReduceである。HDFSは大量なデータをストレージし、ファイルがデータブロックの形でシステムにストレージされる。また、HDFSのデータブロックは通常のディスクに定義されたデータブロック(通常は512B)よりも遥かに大きく、HDFSの現在のデフォルトブロックサイズは128MBである。もしHDFSにストレージされたファイルのサイズが128に超えると、HDFSは該ファイルを複数のブロックサイズのブロックに分割し、別々にストレージする。また、HDFSが絶えずに小さなファイルをTBひいてはPBレベルまでストレージし続けると、小さなファイルの問題が発生し、此れは、大量のメタデータがHDFSのプライマリノードのnamenodeにストレージされるため、namenodeの負荷が大幅に増加し、システムの読み取りパフォーマンスに影響するためである。その中に、小さなファイルのサイズが2MBに定義され、つまり、HDFSがファイルをストレージする中で、ファイルのサイズが2Mまたは2M以下であると、小さなファイルとして定義される。
【0003】
大量な小さなファイルの処理について、現有の技術においては、若干の小さなファイルを一つのブロックサイズの大きなファイルにマージすることであり、ファイル間の関連性を考慮せず、小さなファイルの読み込み効率が望ましくなくなる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】中国特許出願公開第103605479号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施例が提供するHadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法は、小さなファイルのマージ及びHBaseキャッシングメカニズムと合わせた後で、書き込まれた小さなファイルの読み取りをもっと容易くし、小さなファイルの読み取り効率を向上させることができる。
【課題を解決するための手段】
【0006】
本発明の実施例が提供するHadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法については、前記書き込みメソッドがデータマージモジュールとHBaseキャッシュモジュールを備えるHDFSシステムに適用され、前記書き込みメソッドが:
【0007】
ユーサーによってインプットされる小さなファイルの書き込みコマンドを受信し、前記書き込みコマンド中にユーザIDと小さなファイルの名前を含み、
【0008】
ユーザIDと前記小さなファイルの名前によって前記HBaseキャッシュモジュールを照会し、
【0009】
対応するファイル内容が出たら、前記HBaseキャッシュモジュールによって照会された第一のファイルコンテンツに前記小さなファイルを書き込み、小さなファイルの書き込まれた第一のファイルコンテンツを前記HBaseキャッシュモジュールにアップロードして更新し、対応するファイル内容が出ないと、前記小さなファイルのファイル名によって前記HDFSシステムのデータベースを照会し、対応するファイルコンテツが照会されたかどうかを判断し、
【0010】
イエスであれば、前記データベースに照会された第二のファイルコンテンツに前記小さなファイルを書き込み、前記小さなファイルの書き込まれた第二のファイルコンテンツを前記データベースにアップロードして更新し、
【0011】
そうでなければ、HadooparchiveツールのAPIを呼び出して前記小さなファイルのファイル名と対応するHARファイルにアクセスし、前記小さなファイルを書き込み、前記小さなファイルの書き込まれたHARファイルを前記データベースにアップロードして更新する。
【0012】
更に、前記データマージモジュールが採用するデータマージメソッドは:
【0013】
ステップA:クライアントがストレージされるファイルをアップロードした後で、HDFSのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを用いて、前記ストレージされるファイルの関連ファイルコレクションを見つけ、ここで、前記ユーザアクセスプリファレンスモデルはユーザアクセスログレコードに基づいている、
【0014】
ステップB:前記関連ファイルコレクションのミドルファイルと前記ストレージされるファイルを順にマージするキューに追加する。
【0015】
ステップC:前記マージするキューのすべてのファイルの総サイズが128 MBを超えるかどうかを判断し、イエスであれば、ステップDに進み、そうでなければ、ステップEに進み、
【0016】
ステップD:前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップBに戻り、
【0017】
ステップE:前記関連ファイルコレクションのミドルファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップFに進み、そうでなければ、ステップBに進む。
【0018】
ステップF:すべてのマージしたデータブロックをHDFSシステムにストレージする。
【0019】
更に、その特徴は、前記プリファレンスモデルがユーザアクセスログレコードから統計されたもので、具体的には:
【0020】
前記ユーザアクセスログレコードからアクティブユーザセットを統計し、
【0021】
前記アクティブユーザセットにアクセスされた小さなファイルをBeanオブジェクトで表し、前記小さなファイルがサイズが2MB又は2MB以下のファイルに指し、その中に、前記オブジェクトのプロパティが該小さなファイルにアクセスユーザID、ユーザにアクセスされた小さなファイル名及び該小さなファイルがアクセスされた回数を含み、
【0022】
JDBCテクノロジを用いて、前記beanオブジェクトをMysqlデーターベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、
【0023】
任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つのアクセス動作のユーザが類似ユーザであり、類似ユーザのIDを記録して関連ファイルセットによって類似ユーザにアクセスされ、関連付けられたファイルの情報をストレージし、
【0024】
前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する。
【0025】
更に、その特徴は、前記HBaseキャッシュモジュールが採用するキャッシュメソッドは:
【0026】
ユーザアクセスログレコードを取得し、前記ユーザアクセスログレコードからアクティブユーザセットを統計し、
【0027】
対数線形モデルを用いて、前記アクティブユーザセットの各アクテイブユーザにアクセスされたファイルの人気予測値をアカウントし、人気予測値によって各ファイルを降順でソートし、ファイルの上位20%をホットスポットファイルとしてマークし、
【0028】
前記ホットスポットファイルを取得し、Hbaseデータベースを使って前記ホットスポットファイルの関連情報をキャッシュする。
【0029】
更に、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には:
【0030】
アクセスされたソースの接尾辞がjpgであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、その中に、前記レコード行がユーザID、アクセスページURL、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、
【0031】
レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、
【0032】
ビジターIPを前記二次元配列でトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、前記HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、
【0033】
前記HashMapコレクションをValue値の降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージし、アクティブユーザセットとしてマークし、
【0034】
更に、対数線形モデルをあわせて、前記アクティブユーザセットの各アクティブユーザにアクサスされたファイルの人気予測値をアカウントして、人気予測値によって各ファイルを降順にソートし、ファイルの上位20%をホットスポットファイルとしてマークし、具体的には:
【0035】
ArrayListコレクションから抽出されたビジターIPを、前記二次元配列から抽出されたビジターIPと照合し、
【0036】
一致が出たら、合致するビジターIPをキーワードとして、各ユーザのアクセス開始時刻を照会して、対数線形モデルを用いて、前記アクティブユーザセットの各アクティブユーザにアクセスされたファイルの人気予測値をアカウントし、人気予測値によって各ファイルを降順にソートし、ファイルの上位20%をホットスポットファイルとしてマークし、
【0037】
前記対数線形モデルは:
であり、
【0038】
その中に、
がファイルiの人気予測値であり、
がファイルiが観測期間中のトラフィックであり、観測期間の長さがtである。
【0039】
本発明の実施例を実施すると、以下の有益効果が出る:
【0040】
本発明の実施例が提供するHadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法については、該書き込みメソッドはデータマージモジュールとHBaseキャッシュモジュールを備えるHDFSシステムに適用され、該読み込みメソッドは:ユーサーによってインプットされる小さなファイルの書き込みコマンドを受信し、前記書き込みコマンド中にユーザIDと小さなファイルの名前によってHBaseキャッシュモジュールを照会し、対応する最初のファイルコンテンツが照会されたら、最初のファイルコンテンツに戻り、小さなファイルを書き込み、小さなファイルの書き込まれた第一のファイルコンテンツをHBaseキャッシュモジュールにアップロードして更新し、対応する最初のファイルコンテンツが照会されなかったら、HDFSデータベースを照会し、成功すれば、照会された第二のファイルコンテンツに戻り、小さなファイルの書き込まれた第二のファイルコンテンツをデータベースにアップロードして更新し、失敗すれば、HadooparchiveツールのAPIを呼び出して対応するHARファイルにアクセスし、小さなファイルを書き込み、小さなファイルの書き込まれたHARファイルをデータベースにアップロードして更新する。小さなファイル間の関連性とホットスポットファイルを考慮しない既存技術と比べ、本発明の書き込みメソッドは小さなファイルのマージ及びHBaseキャッシングメカニズムと合わせた後で、書き込まれた小さなファイルの読み取りをもっと容易くし、小さなファイルの読み取り効率を向上させることができる。
【発明の効果】
【0041】
本発明の実施例を実施すると、以下の有益効果が出る:
【0042】
本発明の実施例が提供するHadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法については、該書き込みメソッドはデータマージモジュールとHBaseキャッシュモジュールを備えるHDFSシステムに適用され、該読み込みメソッドは:ユーサーによってインプットされる小さなファイルの書き込みコマンドを受信し、前記書き込みコマンド中にユーザIDと小さなファイルの名前によってHBaseキャッシュモジュールを照会し、対応する最初のファイルコンテンツが照会されたら、最初のファイルコンテンツに戻り、小さなファイルを書き込み、小さなファイルの書き込まれた第一のファイルコンテンツをHBaseキャッシュモジュールにアップロードして更新し、対応する最初のファイルコンテンツが照会されなかったら、HDFSデータベースを照会し、成功すれば、照会された第二のファイルコンテンツに戻り、小さなファイルの書き込まれた第二のファイルコンテンツをデータベースにアップロードして更新し、失敗すれば、HadooparchiveツールのAPIを呼び出して対応するHARファイルにアクセスし、小さなファイルを書き込み、小さなファイルの書き込まれたHARファイルをデータベースにアップロードして更新する。小さなファイル間の関連性とホットスポットファイルを考慮しない既存技術と比べ、本発明の書き込みメソッドは小さなファイルのマージ及びHBaseキャッシングメカニズムと合わせた後で、書き込まれた小さなファイルの読み取りをもっと容易くし、小さなファイルの読み取り効率を向上させることができる。
【図面の簡単な説明】
【0043】
図1図1は本発明の提供するHadoopに基づく大量の小さなファイルの書き 込みメソッドの実施例のプロセス見取り図である。
図2図2は本発明の提供するデータマージメソッドの実施例のプロセス見取り図である。
図3図3は本発明の提供するキャッシュメソッドの実施例のプロセス見取り図である。
図4図4は本発明の提供するキャッシュメソッドのもう一つの実施例のプロセス見取り図である。
【発明を実施するための形態】
【0044】
下記に本発明の実施例の中の附図を交え、本発明の実施例の技術方案を明確にはっきり説明し、説明した実施例がただ本発明の一部分の実施例で、全部の実施例ではないである。本発明の実施例に基づいて、本領域の普通技術者が創造的な労働を払わないことを前提に得る全部のその他の実施例は本発明の保護範囲に所属する
【0045】
図1を参照し、本発明の提供するHadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法の実施例のプロセス見取り図であり、該メソッドがステップ101からステップ106までを含む。該書き込みメソッドはデータマージモジュールとHBaseキャッシュモジュールを備えるHDFSシステムに適用され、各ステップは以下を含む:
【0046】
ステップ101:ユーサーによってインプットされる小さなファイルの書き込みコマンドを受信し、前記書き込みコマンド中にユーザIDと小さなファイルの名前を含む。
【0047】
ステップ102:ユーザIDと前記小さなファイルの名前によって前記HBaseキャッシュモジュールを照会し、対応するファイルコンテンツが照会されたかどうかを判断し、イエスであれば、ステップ105に進み、そうでなければ、ステップ103に進む。
【0048】
ステップ103:小さなファイルの名前により前記HDFSシステムのデータベースを照会し、対応する第二のファイルコンテンツが照会されたかどうかを判断し、イエスであれば、ステップ106に進み、そうでなければ、ステップ104に進む。
【0049】
ステップ104:HadooparchiveツールのAPIを呼び出して小さなファイルのファイル名と対応するHARファイルにアクセスし、小さなファイルの書き込まれたHARファイルをデータベースにアップロードして更新する。
【0050】
ステップ105:最初のファイルコンテンツに戻り、小さなファイルを書き込み、小さなファイルの書き込まれた第一のファイルコンテンツをHBaseキャッシュモジュールにアップロードして更新する。
【0051】
ステップ106:データベースに照会された第二のファイルコンテンツに戻り、小さなファイルを書き込み、小さなファイルの書き込まれた第二のファイルコンテンツをデータベースにアップロードして更新する。
【0052】
図2を参照し、図2は本発明の提供するデータマージメソッドの実施例のプロセス見取り図であり、本発明のデータマージモジュールには図2の示すデータマージメソッドが採用され、ステップAからステップFまでを含み、各ステップは以下のように:
【0053】
ステップA:クライアントがストレージされるファイルをアップロードした後で、HDFSのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを用いて、前記ストレージされるファイルの関連ファイルコレクションを見つけ、ここで、前記ユーザアクセスプリファレンスモデルはユーザアクセスログレコードに基づいている、
【0054】
本実施例において、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたもので、具体的には:ユーザアクセスログレコードからアクティブユーザセットを統計し、アクティブユーザセットにアクセスされた小さなファイルをbeanオブジェクトで表し、小さなファイルがサイズが2MB又は2MB以下のファイルであり、その中に、beanオブジェクトのプロパティが該小さなファイルにアクセスしたユーザID、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、JDBCテクノロジを用いて、beanオブジェクトをMysqlデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、任意の二つの異なるアクセス動作の類似性が正であれば、任意の二つのアクセス動作のユーザが類似ユーザであり、類似ユーザのIDを記録して関連ファイルセットを使ってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、関連ファイルセットによって、ユーザアクセスプリファレンスモデルを構築する。
【0055】
本実施例において、ユーザアクセスログレコードからアクティブユーザセットを統計し、具体的には:アクセスされたソースの接尾辞がjpgであるレコード行をユーザアクセスログレコードからフィルタリングし、その中に、レコード行がユーザID、アクセスページURL、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、ビジターIPを二次元配列でトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、HashMapコレクションをValue値の降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージし、アクティブユーザセットとしてマークする。
【0056】
本発明のモデルの構築過程をもっとよく説明するために、下記の例えにより説明し、具体的な実現する過程が以下のように:
【0057】
(1)正規表現を使用してアクセスされたソースの接尾辞がjpgであるレコード行をフィルタリングする。
【0058】
(2)ログ解析クラスを作成してレコード行の五つのコンポーネントを別々に解析し、二次元配列を使ってビジターIPと小さなファイルの名前をストレージする。
【0059】
(3)二次元配列のビジターIP要素をトラバースし、各ビジターIPのトラフィックをカウンタするカウンタを設計する。HashMapコレクションを使って、ビジターIPをKey値とし、Value値が該ビジターのトラフィックである。
【0060】
(4)ステップ3で生成されたHashMapコレクションをValue値にしたがって降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションで該IPサブセットをストレージし、アクティブユーザセットとしてマークする。
【0061】
(5)一つのbeanオブジェクトによってアクティブユーザセットにアクセスされた小さなファイルを抽象に表し、オブジェクトのプロパティが該小さなファイルをアクセスしたユーザID、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含む。メソッドはプロパティを取得するget及びsetメソッドである。
【0062】
(6)JDBCテクノロジbeanオブジェクトをMysqlデータベースに結合して永続にストレージし、以下の形式のテーブルが形成される:
【0063】
【0064】
(7)20行の二行の間にデータを取り込み、数式
によって二つの異なるユーザアクセス作動の類似性をカウンタする。その中に、本発明はピアソン相関係数を使用して類似のユーザを決定し、スコアリング行列Rを指定し、ユーザaとユーザbの類似性をsim(a,b)で表し、ra及びrbが「ユーザ−トラフィック」ストアリングマトリックスのストアリングデータである。
【0065】
(8)ここで、sim(a,b)の値が正の値であれば、二人の異なるユーザが類似ユーザであると判定され、そのユーザIDが記録される。
【0066】
(9)類似ユーザのユーザIDに基づいて、一つのコレクションを使用して、類似ユーザにアクセスされ、関連付けられているすべてのファイル情報をストレージする。
【0067】
ステップB:関連ファイルコレクションのミドルファイルとストレージされるファイルを順にマージするキューに追加する。
【0068】
ステップC:マージするキューのすべてのファイルの総サイズが128 MBを超えるかどうかを判断し、イエスであれば、ステップDに進み、そうでなければ、ステップEに進む。
【0069】
ステップD:マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップBに戻る。
【0070】
ステップE:関連ファイルコレクションのミドルファイルとストレージされるファイルが全部マージするキューに追加されたかどうかを判断し、イエスであれば、マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップFに進み、そうでなければ、ステップBに進む。
【0071】
ステップF:すべてのマージしたデータブロックをHDFSシステムにストレージする。
【0072】
図3を参照し、図3は本発明が提供するキャッシュメソッドの実施例のプロセス見取り図である。本発明のHBaseキャッシュモデルが図3のキャッシュメソッドを採用し、該メソッドはステップ301からステップ303までを含み、各ステップが以下のように:
【0073】
ステップ301:ユーザアクセスログレコードを取得し、ユーザアクセスログレコードからアクティブユーザセットを統計する。
【0074】
本実施例の中に、ステップ301においてユーザアクセスログレコードからアクティブユーザセットを統計し、具体的には:アクセスされたソースの接尾辞がjpgであるレコード行をユーザアクセスログレコードからフィルタリングし、その中に、レコード行がユーザIP、アクセスページURL、アクセス開始時刻、アクセス状況及びアクセストラフィックを含み、ログ解析クラスを作成してレコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、二次元配列のビジターIPをトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、HashMapコレクションをValue値によって降順にソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージしてアクティブユーザセットとしてマークする。
【0075】
本発明のステップ301においてアクティブユーザセットをカウントする目的は、小さなファイルへのユーザのアクセスが均一なランダムではなくパレート分布法則に近いのである。すなわち、ほとんどのI/Oが少量の人気データへのアクセスをリクエストし、トラフィックの80%がデータの20%に集中している。したがって、ファイルシステムにストレージされた大量の小さなファイルからモデルを介してホットスポットファイルを予測してキャッシュすることができれば、ユーザのデータへのアクセスの効率を上げられる。
【0076】
ステップ302:対数線形モデルをあわせて、アクティブユーザセットの各アクティブユーザにアクサスされたファイルの人気予測値をアカウントして、人気予測値によって各ファイルを降順にソートし、ファイルの上位20%をホットスポットファイルとしてマークする。
【0077】
本実施例において、ステップ302は具体的には:ArrayListコレクションから抽出されたビジターIPを、二次元配列から抽出されたビジターIPと照合し、一致が出たら、合致するビジターIPをキーワードとして、各ユーザのアクセス開始時刻を照会して、対数線形モデルを用いて、アクティブユーザセットの各アクティブユーザにアクセスされたファイルの人気予測値をアカウントし、人気予測値によって各ファイルを降順にソートし、ファイルの上位20%をホットスポットファイルとしてマークする。
【0078】
対数線形モデルは:
であり、
【0079】
その中に、
がファイルiの人気予測値であり、
がファイルiが観測期間中のトラフィックであり、観測期間の長さがtである。

が線形関係の関連パラメータであり、線形回帰法によって最適値をアカウントすることが
できる。
【0080】
本発明の対数線形モデルにおいて記載された観測期間の長さtの定義は:ユーザアクセスログレコードのレコード行のアクセス開始時刻要素とユーザアクセスログレコードを収集した時刻との時間差である。例えば、収集されたユーザアクセスログレコードの時点が30/Jan/2018:17:38:20で、ユーザアクセスログレコードのレコード行のアクセス開始時刻が29/Jan/2018:10:35:15で、観測期間の長さが29/Jan/2018:10:35:15から30/Jan/2018:17:38:20までの時間差であり、アカウントしやすいために、期間の長さが時間単位にする。
【0081】
ステップ303:ホットスポットファイルを取得し、Hbaseデータベースを採用してホットスポットファイルの関連情報をキャッシュする。
【0082】
本実施例においては、Hbaseデータベースを採用してホットスポットファイルの関連情報をキャッシュし、HBaseのテーブル名値がビジターIDであり、HBaseのRowKeyが小さなファイルの名前であり、HBaseのファミリ名が「ファイルコンテンツ」であり、Value値すなわちセル値が小さなファイルのコンテンツである。ユーザがHBaseの小さなファイルにアクセス時に、ユーザIDをテーブル名とし、アクセスする小さなファイルの名前をHBaseのget()メソッドのパラメータとすれば、対応する小さなファイルのコンテンツを取得できる。
【0083】
本発明のキャッシュメソッドをもっと詳しく説明するため、図4を参照し、図4は本発明の提供するキャッシュメソッドのもう一つの実施例のプロセス見取り図である。図4が示すように、該プロセスが:ユーザアクセスレコードセット→正規表現が需要するレコード行をフィルタリングする→レコード行を解析する→beanオブジェクトでレコード行情報をカプセル化する→JDBC APIを調査研究してbeanオブジェクトをMysqlデータベースに永続化する→二次元配列によってビジターIPと小さなファイルの名前情報をストレージする→配列をトラバースし、ビジタートラフィックを統計する→ビジタートラフィックによってサーとし、ArrayListコレクションを使ってアクティブユーザセットのユーザIPをストレージする→二次元配列をアクティブユーザセットのビジターIPと照合する→一致が出たら、ビジターIPをキーワードとして、ユーザアクセス開始時刻とトラフィックを抽出する→ファイル人気予測数式によってファイル人気値をアカウントする→ファイル人気値をサートし、ホットスポットファイルをマークする→HBaseによってホットスポットファイルの関連情報をキャッシュする。
【0084】
上記からわかったことは、本発明の実施例の提供するHadoopに基づく大量の小さなファイルの読み込みメソッドにおいて、該読み込みメソッドがデータマージモジュールとHBaseキャッシュモジュールを備えるHDFSシステムに適用される。該読み込みメソッドは、ユーサーによってインプットされる小さなファイルの読み込みコマンドを受信し、前記書き込みコマンド中にユーザIDと小さなファイルの名前を含み、ユーザIDと小さなファイルの名前でHBaseキャッシュモジュールを照会し、対応するファイルコンテンツが出たら、照会されたファイルコンテンツに戻り、対応するファイルコンテンツが出ないと、HDFSシステムのデータベースを照会し、成功したら、照会されたファイルコンテンツに戻り、失敗したら、HadooparchiveツールのAPIを呼び出し、対応するHARファイルにアクセスしてHARファイルに戻る。現有技術と比べて、小さなファイルの間のアソシエーションとホットスポットファイルを問わず、本発明の読み込みメソッドは小さなファイルとHBaseキャッシングメカニズムがマージされた後で、小さなファイルの読み込み効率を上げられる。
【0085】
更に、本発明はデータマージメソッドを提供し、小さなファイルの読み込み効率を高め、HDFSシステムでのnamenodeメモリの消費を削減する。
【0086】
更に、本発明のデータマージメソッドには、複数の関連付けられた小さなファイルが一つの大きなファイルにマージされてシステムにストレージされ、システムのnamenodeノードが一つの大きなファイルの対応するメタデータをストレージし、namenodeノードの維持する必要のあるメタデータの量が大幅に減少し、メモリ消費量も減少になる。
【0087】
更に、本発明のデータマージメソッドには、関連ファイルが同じの一つの大きなファイルにストレージされ、ファイルがマージされた後で同じデータノードの同じデータブロックの中にストレージされる。ファイルへのユーザのリクエストに強い関連性があれば、すなわち、ユーザに耐えずにアクセスされた小さなファイルが同じ大きなファイルにマージされば、ファイルアクセスの原則によると、システムはより近いdatanodeノードのデータブロックを読み込み、つまり絶えずに同じdatanodeのデータブロックからデータを読み込み、こうして異なるファイルにアクセス時に異なるデータノードの間にジャンプしなくで済み、ディスクアドレッシングのオーバーヘッドが削減され、占められるシステムリソースが比較的に少なくなり、ファイルの読み込み効率を大きく高める。
【0088】
更に、本発明が提供するキャッシュメソッドには、現有技術と比べてユーザにアクセスされたホットスポットファイルを考慮せず、本発明はHBaseによってホッとスポットファイルをキャッシュし、キャッシュヒット率を高めるだけでなく、ファイルの読み込み効率も上げる。
【0089】
当業者は、上記の実施形態を実施するプロセスの全部または一部を理解することができ、コンピュータプログラムによって関連するハードウェアを指示することで完了することができ、前記のプログラムがコンピュター可読記憶媒体にストレージされることができ、該プログラムが実行される時に、上記の各メソッドの実施例のプロセスが含まれる。その中に、前記の記憶媒体が磁気ディスク、光ディスク、読み出し専用メモリ(Read−Only Memory,ROM)またはランダムアクセスメモリ(Random Access Memory,RAM)であってもよい。
【0090】
以上に述べたのは本発明の優先された実施形態であり、注意すべきのは、本技術分野の一般的な技術員にとって、本発明の原理から離れないことを前提として、若干な改善や飾りができ、これらの改善や飾りも本発明の保護範囲に含まれる。
図1
図2
図3
図4