(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6642651
(24)【登録日】2020年1月8日
(45)【発行日】2020年2月12日
(54)【発明の名称】ユーザアクセスプリファレンスモデルを用いたストレージ方法
(51)【国際特許分類】
G06F 16/13 20190101AFI20200130BHJP
G06F 16/182 20190101ALI20200130BHJP
G06F 16/185 20190101ALI20200130BHJP
【FI】
G06F16/13 100
G06F16/182
G06F16/185
【請求項の数】1
【全頁数】9
(21)【出願番号】特願2018-147290(P2018-147290)
(22)【出願日】2018年8月4日
(65)【公開番号】特開2019-204474(P2019-204474A)
(43)【公開日】2019年11月28日
【審査請求日】2018年10月25日
(31)【優先権主張番号】201810500258.6
(32)【優先日】2018年5月22日
(33)【優先権主張国】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】518149350
【氏名又は名称】広東技術師範学院
(73)【特許権者】
【識別番号】518056748
【氏名又は名称】新華三技術有限公司
【氏名又は名称原語表記】NEW H3C TECHNOLOGIES CO., LTD.
(73)【特許権者】
【識別番号】518279336
【氏名又は名称】広東交通職業技術学院
(74)【代理人】
【識別番号】718003500
【氏名又は名称】鄒 静文
(72)【発明者】
【氏名】魏文国
(72)【発明者】
【氏名】黄雄
(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】
ユーザアクセスプリファレンスモデルを用いたストレージ方法であって、HDFSが以下を実行する方法:
ステップA:クライアントがストレージされるファイルをアップロードした後で、HDFSのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを用いて前記ストレージされるファイルの関連ファイルセットを見つけ、ここで、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものである、ステップB:前記関連ファイルセットのミドルファイルと前記ストレージされるファイルをマージするキューに追加し、ステップC:前記マージするキューのすべてのファイルの総サイズが128 MBを超えるかどうかを判断し、イエスであれば、ステップDに進み、そうでなければ、ステップEに進み、ステップD:マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップBに進み、ステップE:前記関連ファイルセットのファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップFに進み、そうでなければ、ステップBに戻り、ステップF:マージしたすべてのデータブロックをHDFSシステムにストレージし、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものであり、具体的には:前記ユーザアクセスログレコードからアクティブユーザセットを統計し、前記アクティブユーザセットにアクセスされた小さなファイルをbeanオブジェクトで表し、前記小さなファイルがサイズが2MB又は2MB以下のファイルであり、その中に、前記beanオブジェクトのプロパティが該小さなファイルにアクセスしたユーザID、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、JDBCテクノロジを用いて、前記beanオブジェクトをMysqlデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つの異なるアクセス動作のユーザが類似ユーザであり、類似ユーザのIDレコードを記録して関連ファイルセットによってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には:アクセスされたソースの接尾辞がjpgであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、前記レコード行がユーザID、アクセスページURL、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、ビジターIPを前記二次元配列でトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、前記HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、前記HashMapコレクションをValue値の降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージし、アクティブユーザセットとしてマークすることを特徴とするユーザアクセスプリファレンスモデルを用いたストレージ方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータテクノロジー分野に関し、具体的には、
ユーザアクセスプリファレンスモデルを用いたストレージ方法に関する。
【背景技術】
【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】中国特許出願公開第103500077号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施例は
ユーザアクセスプリファレンスモデルを用いたストレージ方法を提供し、小さなファイルの読み取り効率を向上させ、HDFSシステムのnamenodeメモリの消費を削減する。
【課題を解決するための手段】
【0006】
本発明の実施例は
ユーザアクセスプリファレンスモデルを用いたストレージ方法を提供し、具体的には:
【0007】
ステップA:クライアントがストレージされるファイルをアップロードした後で、HDFSのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデル
を用いて前記ストレージされるファイルの関連ファイルセット
を見つけ、ここで、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものである。
【0008】
ステップB:前記関連ファイルセットのミドルファイルと前記ストレージされるファイルをマージするキューに追加し、
【0009】
ステップC:前記マージするキューのすべてのファイルの総サイズが128 MBを超えるかどうかを判断し、イエスであれば、ステップDに進み、そうでなければ、ステップEに進み、
【0010】
ステップD:マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップBに進み、
【0011】
ステップE:前記関連ファイルセットのファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップFに進み、そうでなければ、ステップBに戻り、
【0012】
ステップF:マージしたすべてのデータブロックをHDFSシステムにストレージする。
【0013】
更に、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものであり、
【0014】
具体的には:
【0015】
前記ユーザアクセスログレコードからアクティブユーザセットを統計し、
【0016】
前記アクティブユーザセットにアクセスされた小さなファイルをbeanオブジェクトで表し、前記小さなファイルがサイズが2MB又は2MB以下のファイルであり、その中に、前記beanオブジェクトのプロパティが該小さなファイルにアクセスしたユーザID、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、
【0017】
JDBCテクノロジを用いて、前記beanオブジェクトをMysqlデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、
【0018】
任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つの異なるアクセス動作のユーザが類似ユーザであり、類似ユーザのIDレコードを記録して関連ファイルセットによってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、
【0019】
前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する。
【0020】
更に、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には:
【0021】
アクセスされたソースの接尾辞がjpgであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、前記レコード行がユーザID、アクセスページURL、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、
【0022】
レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、
【0023】
ビジターIPを前記二次元配列でトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、前記HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、
【0024】
前記HashMapコレクションをValue値の降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージし、アクティブユーザセットとしてマークし、
【0025】
本発明の実施例を実施すると、以下の有益効果が出る:
【0026】
本発明の実施例が提供するユーザアクレスプリファレンスモデル
を用いた大量の小さなファイルの
ストレージ方法は、ユーザアクセスプリファレンスモデル
を用いて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが128MBを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが128MB以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをHDFSシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、HDFSシステムでのnamenodeメモリの消費を削減できる。
【発明の効果】
【0027】
本発明の実施例を実施すると、以下の有益効果が出る:
【0028】
本発明の実施例が提供するユーザアクレスプリファレンスモデル
を用いた大量の小さなファイルの
ストレージ方法は、ユーザアクセスプリファレンスモデル
を用いて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが128MBを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが128MB以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをHDFSシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、HDFSシステムでのnamenodeメモリの消費を削減できる。
【図面の簡単な説明】
【0029】
【
図1】
図1は本発明の提供するユーザアクセスプリファレンスモデル
を用いた大量 の小さなファイルの
ストレージ方法の実施例のプロセス見取り図である。
【発明を実施するための形態】
【0030】
下記に本発明の実施例の中の附図を交え、本発明の実施例の技術方案を明確にはっきり説明し、説明した実施例がただ本発明の一部分の実施例で、全部の実施例ではないである。本発明の実施例に基づいて、本領域の普通技術者が創造的な労働を払わないことを前提に得る全部のその他の実施例は本発明の保護範囲に所属する
【0031】
図1を参照し、本発明の提供する
ユーザアクセスプリファレンスモデルを用いたストレージ方法であり、該メソッドがステップAからステップFまでを含み、各ステップは以下のように:
【0032】
ステップA:クライアントがストレージされるファイルをアップロードした後で、HDFSのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを組み合わせて、ストレージされるファイルの関連ファイルコレクションを見つけ、その中に、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードに基づいている。
【0033】
本実施例の中で、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードに基づいて統計されたもので、具体的には:ユーザアクセスログレコードからアクティブユーザセットを統計し、beanオブジェクトがアクティブユーザセットによってアクセスされた小さなファイルを表すために使用され、小さなファイルがサイズが2MBまたは2MB以上のファイルを指し、その中に、beanオブジェクトのプロパティが該小さなファイルをアクセスするユーザID、ユーザがアクセスした小さなファイルの名前及び該小さなファイルがアクサスされた回数を含み、JDBCテクノロジによって、beanオブジェクトを永続にMysqlデータベースにストレージし、ストレージされたデータにしたがって、任意の二つの異なるアクセス動作の類似性を計算し、任意の二つの異なるアクセス動作の類似性が正の場合、任意の二つのアクセス動作のユーザが類似ユーザであり、類似ユーザのIDを記録し、関連ファイルコレクションを使って、類似ユーザによってアクサスされ、関連付けられたファイル情報をストレージし、関連ファイルコレクションにしたがって、ユーザアクセスプリファレンスモデルを構築する。
【0034】
本実施例の中で、ユーザアクセスログレコードよりアクティブユーザセットを統計し、具体的には:アクセスされたソースの接尾辞がjpgであるレコード行をユーザアクセスログレコードからフィルタリングし、その中に、レコード行がユーザID、アクセスページURL、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成してレコード行を解析し、二次元配列を使用してビジターIPと小さなファイルの名前をストレージし、二次元配列のビジターIPをトラバースし、HashMapコレクションを使用して各ビジターIPのトラフィックを統計し、HashMapコレクションのKey値がビジターIPであり、Value値がトラフィックであり、HashMapコレクションをValue値の降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションを使用して該IPサブセットをストレージし、アクティブユーザセットとしてマークする。
【0035】
本発明のモデルの構築過程をもっとよく説明するために、下記の例えにより説明し、具体的な実現する過程が以下のように:
【0036】
(1)正規表現を使用してアクセスされたソースの接尾辞がjpgであるレコード行をフィルタリングする。
【0037】
(2)ログ解析クラスを作成してレコード行の五つのコンポーネントを別々に解析し、二次元配列を使ってビジターIPと小さなファイルの名前をストレージする。
【0038】
(3)二次元配列のビジターIP要素をトラバースし、各ビジターIPのトラフィックをカウンタするカウンタを設計する。HashMapコレクションを使って、ビジターIPをKey値とし、Value値が該ビジターのトラフィックである。
【0039】
(4)ステップ3で生成されたHashMapコレクションをValue値にしたがって降順でソートし、ビジターIPの上位20%をフィルタリングし、ArrayListコレクションで該IPサブセットをストレージし、アクティブユーザセットとしてマークする。
【0040】
(5)一つのbeanオブジェクトによってアクティブユーザセットにアクセスされた小さなファイルを抽象に表し、オブジェクトのプロパティが該小さなファイルをアクセスしたユーザID、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含む。メソッドはプロパティを取得するget及びsetメソッドである。
【0041】
(6)JDBCテクノロジbeanオブジェクトをMysqlデータベースに結合して永続にストレージし、以下の形式のテーブルが形成される:
【0042】
(7)20行の二行の間にデータを取り込み、数式
によって二つの異なるユーザアクセス作動の類似性をカウンタする。その中に、本発明はピアソン相関係数を使用して類似のユーザを決定し、スコアリング行列Rを指定し、ユーザaとユーザbの類似性をsim(a,b)で表し、ra及びrbが「ユーザ−トラフィック」ストアリングマトリックスのストアリングデータである。
【0043】
(8)ここで、sim(a,b)の値が正の値であれば、二人の異なるユーザが類似ユーザであると判定され、そのユーザIDが記録される。
【0044】
(9)類似ユーザのユーザIDに基づいて、一つのコレクションを使用して、類似ユーザにアクセスされ、関連付けられているすべてのファイル情報をストレージする。
【0045】
ステップB:関連ファイルコレクションのミドルファイルとストレージされるファイルを順にマージするキューに追加する。
【0046】
ステップC:マージするキューのすべてのファイルの総サイズが128 MBを超えるかどうかを判断し、イエスであれば、ステップDに進み、そうでなければ、ステップEに進む。
【0047】
ステップD:マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップBに戻る。
【0048】
ステップE:関連ファイルコレクションのミドルファイルとストレージされるファイルが全部マージするキューに追加されたかどうかを判断し、イエスであれば、マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップFに進み、そうでなければ、ステップBに進む。
【0049】
ステップF:すべてのマージしたデータブロックをHDFSシステムにストレージする。
【0050】
本発明の実施例が提供するユーザアクレスプリファレンスモデル
を用いた大量の小さなファイルの
ストレージ方法は、ユーザアクセスプリファレンスモデル
を用いて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが128MBを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが128MB以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをHDFSシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、HDFSシステムでのnamenodeメモリの消費を削減できる。
【0051】
更に、本発明には、複数の関連付けられた小さなファイルが一つの大きなファイルにマージされてシステムにストレージされ、システムのnamenodeノードが大きなファイルに対応するメタデータのみをストレージし、namenodeノードの維持するメタデータが大きく減少し、メモリの消費も減少になる。
【0052】
更に、本発明のマージメソッドは、関連付けられたファイルを同じの大きなファイルにマージして、マージされたファイルが同じのデータノードの同じのデータブロックにストレージされる。ユーザからファイルへのリクエストに強く関連性があると、すなわちユーザに絶えずにアクセスされた小さなファイルが同じ大きなファイルにマージされば、ファイルアクセスの原理によれば、システムがより近いdatanodeノードのデータブロックを読み取り、つまり、同じdatanodeのデータブロックカラデータを読み取るということであり、こうして異なるファイルにアクセス時に異なるデータノードの間にジャンプしなくで済み、ディスクアドレッシングのオーバーヘッドが削減され、占められるシステムリソースが比較的に少なくなり、ファイルの読み込み効率を大きく高める。
【0053】
当業者は、上記の実施形態を実施するプロセスの全部または一部を理解することができ、コンピュータプログラムによって関連するハードウェアを指示することで完了することができ、のプログラムがコンピュター可読記憶媒体にストレージされることができ、該プログラムが実行される時に、上記の各メソッドの実施例のプロセスが含まれる。その中に、の記憶媒体が磁気ディスク、光ディスク、読み出し専用メモリ(Read−Only Memory,ROM)またはランダムアクセスメモリ(Random Access Memory,RAM)であってもよい。
【0054】
以上に述べたのは本発明の優先された実施形態であり、注意すべきのは、本技術分野の一般的な技術員にとって、本発明の原理から離れないことを前提として、若干な改善や飾りができ、これらの改善や飾りも本発明の保護範囲に含まれる。