(57)【要約】【課題】本発明はユーザアクセスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドを開示した。【解決手段】ユーザアクセスプリファレンスモデルを合わせて関連ファイルセットを見つけ、ユーザアクセスプリファレンスモデルを合わせて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、マージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。【選択図】図１
2019204474.tif 000002
【特許請求の範囲】
【請求項１】
ユーザアクセスプリファレンスモデルのストレージメソッドはいかを含む：ステップＡ：クライアントがストレージされるファイルをアップロードした後で、ＨＤＦＳのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを合わせて前記ストレージされるファイルの関連ファイルセットを見つけ、その中に、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものである、ステップＢ：前記関連ファイルセットのミドルファイルと前記ストレージされるファイルをマージするキューに追加し、ステップＣ：前記マージするキューのすべてのファイルの総サイズが１２８  ＭＢを超えるかどうかを判断し、イエスであれば、ステップＤに進み、そうでなければ、ステップＥに進み、ステップＤ：マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＢに進み、ステップＥ：前記関連ファイルセットのファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＦに進み、そうでなければ、ステップＢに戻り、ステップＦ：マージしたすべてのデータブロックをＨＤＦＳシステムにストレージし、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものであり、具体的には：前記ユーザアクセスログレコードからアクティブユーザセットを統計し、前記アクティブユーザセットにアクセスされた小さなファイルをｂｅａｎオブジェクトで表し、前記小さなファイルがサイズが２ＭＢ又は２ＭＢ以下のファイルであり、その中に、前記ｂｅａｎオブジェクトのプロパティが該小さなファイルにアクセスしたユーザＩＤ、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、ＪＤＢＣテクノロジを合わせ、前記ｂｅａｎオブジェクトをＭｙｓｑｌデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つの異なるアクセス動作のユーザが類似ユーザであり、類似ユーザのＩＤレコードを記録して関連ファイルセットによってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には：アクセスされたソースの接尾辞がｊｐｇであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、前記レコード行がユーザＩＤ、アクセスページＵＲＬ、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターＩＰと小さなファイルの名前を���トレージし、ビジターＩＰを前記二次元配列でトラバースし、ＨａｓｈＭａｐコレクションを使用して各ビジターＩＰのトラフィックを統計し、前記ＨａｓｈＭａｐコレクションのＫｅｙ値がビジターＩＰであり、Ｖａｌｕｅ値がトラフィックであり、前記ＨａｓｈＭａｐコレクションをＶａｌｕｅ値の降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションを使用して該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークする。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータテクノロジー分野に関し、具体的には、ユーザアクセスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドに関する。
【背景技術】
【０００２】
Ｈａｄｏｏｐは２００５年にＡｐａｃｈｅ  ＦｏｕｎｄａｔｉｏｎによってＬｕｃｅｎｅのサブプロジェクトであるＮｕｔｃｈの一部分として正式に導入されたものである。Ｈａｄｏｏｐの最も重要な二つの設計はＨＤＦＳとＭａｐＲｅｄｕｃｅである。ＨＤＦＳは大量なデータをストレージし、ファイルがデータブロックの形でシステムにストレージされる。また、ＨＤＦＳのデータブロックは通常のディスクに定義されたデータブロック（通常は５１２Ｂ）よりも遥かに大きく、ＨＤＦＳの現在のデフォルトブロックサイズは１２８ＭＢである。もしＨＤＦＳにストレージされたファイルのサイズが１２８に超えると、ＨＤＦＳは該ファイルを複数のブロックサイズのブロックに分割し、別々にストレージする。また、ＨＤＦＳが絶えずに小さなファイルをＴＢひいてはＰＢレベルまでストレージし続けると、小さなファイルの問題が発生し、此れは、大量のメタデータがＨＤＦＳのプライマリノードのｎａｍｅｎｏｄｅにストレージされるため、ｎａｍｅｎｏｄｅの負荷が大幅に増加し、システムの読み取りパフォーマンスに影響するためである。その中に、小さなファイルのサイズが２ＭＢに定義され、つまり、ＨＤＦＳがファイルをストレージする中で、ファイルのサイズが２Ｍまたは２Ｍ以下であると、小さなファイルとして定義される。
【０００３】
大量な小さなファイルの処理について、現有の技術においては、若干の小さなファイルを一つのブロックサイズの大きなファイルにマージすることであり、ファイル間の関連性を考慮せず、小さなファイルの読み込み効率が望ましくなくなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】中国特許出願公開第１０３５０００７７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施例はユーザアクセスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドを提供し、小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムのｎａｍｅｎｏｄｅメモリの消費を削減する。
【課題を解決するための手段】
【０００６】
本発明の実施例はユーザアクセスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドを提供し、具体的には：
【０００７】
ステップＡ：クライアントがストレージされるファイルをアップロードした後で、ＨＤＦＳのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを合わせて前記ストレージされるファイルの関連ファイルセットを見つけ、その中に、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものである。
【０００８】
ステップＢ：前記関連ファイルセットのミドルファイルと前記ストレージされるファイルをマージするキューに追加し、
【０００９】
ステップＣ：前記マージするキューのすべてのファイルの総サイズが１２８  ＭＢを超えるかどうかを判断し、イエスであれば、ステップＤに進み、そうでなければ、ステップＥに進み、
【００１０】
ステップＤ：マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＢに進み、          
【００１１】
ステップＥ：前記関連ファイルセットのファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＦに進み、そうでなければ、ステップＢに戻り、
【００１２】
ステップＦ：マージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。
【００１３】
更に、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものであり、
【００１４】
具体的には：
【００１５】
前記ユーザアクセスログレコードからアクティブユーザセットを統計し、
【００１６】
前記アクティブユーザセットにアクセスされた小さなファイルをｂｅａｎオブジェクトで表し、前記小さなファイルがサイズが２ＭＢ又は２ＭＢ以下のファイルであり、その中に、前記ｂｅａｎオブジェクトのプロパティが該小さなファイルにアクセスしたユーザＩＤ、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、
【００１７】
ＪＤＢＣテクノロジを合わせ、前記ｂｅａｎオブジェクトをＭｙｓｑｌデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、
【００１８】
任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つの異なるアクセス動作のユーザが類似ユーザであり、類似ユーザのＩＤレコードを記録して関連ファイルセットによってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、
【００１９】
前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する。
【００２０】
更に、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には：
【００２１】
アクセスされたソースの接尾辞がｊｐｇであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、前記レコード行がユーザＩＤ、アクセスページＵＲＬ、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、
【００２２】
レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターＩＰと小さなファイルの名前をストレージし、
【００２３】
ビジターＩＰを前記二次元配列でトラバースし、ＨａｓｈＭａｐコレクションを使用して各ビジターＩＰのトラフィックを統計し、前記ＨａｓｈＭａｐコレクションのＫｅｙ値がビジターＩＰであり、Ｖａｌｕｅ値がトラフィックであり、
【００２４】
前記ＨａｓｈＭａｐコレクションをＶａｌｕｅ値の降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションを使用して該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークし、
【００２５】
本発明の実施例を実施すると、以下の有益効果が出る：
【００２６】
本発明の実施例が提供するユーザアクレスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドは、ユーザアクセスプリファレンスモデルを合わせて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。
【発明の効果】
【００２７】
本発明の実施例を実施すると、以下の有益効果が出る：
【００２８】
本発明の実施例が提供するユーザアクレスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドは、ユーザアクセスプリファレンスモデルを合わせて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。
【図面の簡単な説明】
【００２９】
【図１】図１は本発明の提供するユーザアクセスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドの実施例のプロセス見取り図である。
【発明を実施するための形態】
【００３０】
下記に本発明の実施例の中の附図を交え、本発明の実施例の技術方案を明確にはっきり説明し、説明した実施例がただ本発明の一部分の実施例で、全部の実施例ではないである。本発明の実施例に基づいて、本領域の普通技術者が創造的な労働を払わないことを前提に得る全部のその他の実施例は本発明の保護範囲に所属する
【００３１】
図１を参照し、本発明の提供するユーザアクセスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドであり、該メソッドがステップＡからステップＦまでを含み、各ステップは以下のように：
【００３２】
ステップＡ：クライアントがストレージされるファイルをアップロードした後で、ＨＤＦＳのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを組み合わせて、ストレージされるファイルの関連ファイルコレクションを見つけ、その中に、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードに基づいている。
【００３３】
本実施例の中で、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードに基づいて統計されたもので、具体的には：ユーザアクセスログレコードからアクティブユーザセットを統計し、ｂｅａｎオブジェクトがアクティブユーザセットによってアクセスされた小さなファイルを表すために使用され、小さなファイルがサイズが２ＭＢまたは２ＭＢ以上のファイルを指し、その中に、ｂｅａｎオブジェクトのプロパティが該小さなファイルをアクセスするユーザＩＤ、ユーザがアクセスした小さなファイルの名前及び該小さなファイルがアクサスされた回数を含み、ＪＤＢＣテクノロジによって、ｂｅａｎオブジェクトを永続にＭｙｓｑｌデータベースにストレージし、ストレージされたデータにしたがって、任意の二つの異なるアクセス動作の類似性を計算し、任意の二つの異なるアクセス動作の類似性が正の場合、任意の二つのアクセス動作のユーザが類似ユーザであり、類似ユーザのＩＤを記録し、関連ファイルコレクションを使って、類似ユーザによってアクサスされ、関連付けられたファイル情報をストレージし、関連ファイルコレクションにしたがって、ユーザアクセスプリファレンスモデルを構築する。
【００３４】
本実施例の中で、ユーザアクセスログレコードよりアクティブユーザセットを統計し、具体的には：アクセスされたソースの接尾辞がｊｐｇであるレコード行をユーザアクセスログレコードからフィルタリングし、その中に、レコード行がユーザＩＤ、アクセスページＵＲＬ、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成してレコード行を解析し、二次元配列を使用してビジターＩＰと小さなファイルの名前をストレージし、二次元配列のビジターＩＰをトラバースし、ＨａｓｈＭａｐコレクションを使用して各ビジターＩＰのトラフィックを統計し、ＨａｓｈＭａｐコレクションのＫｅｙ値がビジターＩＰであり、Ｖａｌｕｅ値がトラフィックであり、ＨａｓｈＭａｐコレクションをＶａｌｕｅ値の降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションを使用して該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークする。
【００３５】
本発明のモデルの構築過程をもっとよく説明するために、下記の例えにより説明し、具体的な実現する過程が以下のように：
【００３６】
（１）正規表現を使用してアクセスされたソースの接尾辞がｊｐｇであるレコード行をフィルタリングする。
【００３７】
（２）ログ解析クラスを作成してレコード行の五つのコンポーネントを別々に解析し、二次元配列を使ってビジターＩＰと小さなファイルの名前をストレージする。
【００３８】
（３）二次元配列のビジターＩＰ要素をトラバースし、各ビジターＩＰのトラフィックをカウンタするカウンタを設計する。ＨａｓｈＭａｐコレクションを使って、ビジターＩＰをＫｅｙ値とし、Ｖａｌｕｅ値が該ビジターのトラフィックである。
【００３９】
（４）ステップ３で生成されたＨａｓｈＭａｐコレクションをＶａｌｕｅ値にしたがって降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションで該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークする。
【００４０】
（５）一つのｂｅａｎオブジェクトによってアクティブユーザセットにアクセスされた小さなファイルを抽象に表し、オブジェクトのプロパティが該小さなファイルをアクセスしたユーザＩＤ、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含む。メソッドはプロパティを取得するｇｅｔ及びｓｅｔメソッドである。
【００４１】
（６）ＪＤＢＣテクノロジｂｅａｎオブジェクトをＭｙｓｑｌデータベースに結合して永続にストレージし、以下の形式のテーブルが形成される：
【００４２】
2019204474.tif 000003
【００４３】
（７）２０行の二行の間にデータを取り込み、数式
2019204474.tif 000004
によって二つの異なるユーザアクセス作動の類似性をカウンタする。その中に、本発明はピアソン相関係数を使用して類似のユーザを決定し、スコアリング行列Ｒを指定し、ユーザａとユーザｂの類似性をｓｉｍ（ａ，ｂ）で表し、ｒａ及びｒｂが「ユーザ−トラフィック」ストアリングマトリックスのストアリングデータである。
【００４４】
（８）ここで、ｓｉｍ（ａ，ｂ）の値が正の値であれば、二人の異なるユーザが類似ユーザであると判定され、そのユーザＩＤが記録される。
【００４５】
（９）類似ユーザのユーザＩＤに基づいて、一つのコレクションを使用して、類似ユーザにアクセスされ、関連付けられているすべてのファイル情報をストレージする。
【００４６】
ステップＢ：関連ファイルコレクションのミドルファイルとストレージされるファイルを順にマージするキューに追加する。
【００４７】
ステップＣ：マージするキューのすべてのファイルの総サイズが１２８  ＭＢを超えるかどうかを判断し、イエスであれば、ステップＤに進み、そうでなければ、ステップＥに進む。
【００４８】
ステップＤ：マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＢに戻る。
【００４９】
ステップＥ：関連ファイルコレクションのミドルファイルとストレージされるファイルが全部マージするキューに追加されたかどうかを判断し、イエスであれば、マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＦに進み、そうでなければ、ステップＢに進む。
【００５０】
ステップＦ：すべてのマージしたデータブロックをＨＤＦＳシステムにストレージする。
【００５１】
本発明の実施例が提供するユーザアクレスプリファレンスモデルに基づく大量の小さなファイルのストレージメソッドは、ユーザアクセスプリファレンスモデルを合わせて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。
【００５２】
更に、本発明には、複数の関連付けられた小さなファイルが一つの大きなファイルにマージされてシステムにストレージされ、システムのｎａｍｅｎｏｄｅノードが大きなファイルに対応するメタデータのみをストレージし、ｎａｍｅｎｏｄｅノードの維持するメタデータが大きく減少し、メモリの消費も減少になる。
【００５３】
更に、本発明のマージメソッドは、関連付けられたファイルを同じの大きなファイルにマージして、マージされたファイルが同じのデータノードの同じのデータブロックにストレージされる。ユーザからファイルへのリクエストに強く関連性があると、すなわちユーザに絶えずにアクセスされた小さなファイルが同じ大きなファイルにマージされば、ファイルアクセスの原理によれば、システムがより近いｄａｔａｎｏｄｅノードのデータブロックを読み取り、つまり、同じｄａｔａｎｏｄｅのデータブロックカラデータを読み取るということであり、こうして異なるファイルにアクセス時に異なるデータノードの間にジャンプしなくで済み、ディスクアドレッシングのオーバーヘッドが削減され、占められるシステムリソースが比較的に少なくなり、ファイルの読み込み効率を大きく高める。
【００５４】
当業者は、上記の実施形態を実施するプロセスの全部または一部を理解することができ、コンピュータプログラムによって関連するハードウェアを指示することで完了することができ、のプログラムがコンピュター可読記憶媒体にストレージされることができ、該プログラムが実行される時に、上記の各メソッドの実施例のプロセスが含まれる。その中に、の記憶媒体が磁気ディスク、光ディスク、読み出し専用メモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＲＯＭ）またはランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ，ＲＡＭ）であってもよい。
【００５５】
以上に述べたのは本発明の優先された実施形態であり、注意すべきのは、本技術分野の一般的な技術員にとって、本発明の原理から離れないことを前提として、若干な改善や飾りができ、これらの改善や飾りも本発明の保護範囲に含まれる。
【図１】
2019204474.tif 000005
【手続補正書】
【提出日】令和1年9月11日(2019.9.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザアクセスプリファレンスモデルを用いたストレージ方法であって、ＨＤＦＳが以下を実行する方法：
ステップＡ：クライアントがストレージされるファイルをアップロードした後で、ＨＤＦＳのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを用いて前記ストレージされるファイルの関連ファイルセットを見つけ、ここで、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものである、ステップＢ：前記関連ファイルセットのミドルファイルと前記ストレージされるファイルをマージするキューに追加し、ステップＣ：前記マージするキューのすべてのファイルの総サイズが１２８  ＭＢを超えるかどうかを判断し、イエスであれば、ステップＤに進み、そうでなければ、ステップＥに進み、ステップＤ：マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＢに進み、ステップＥ：前記関連ファイルセットのファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＦに進み、そうでなければ、ステップＢに戻り、ステップＦ：マージしたすべてのデータブロックをＨＤＦＳシステムにストレージし、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものであり、具体的には：前記ユーザアクセスログレコードからアクティブユーザセットを統計し、前記アクティブユーザセットにアクセスされた小さなファイルをｂｅａｎオブジェクトで表し、前記小さなファイルがサイズが２ＭＢ又は２ＭＢ以下のファイルであり、その中に、前記ｂｅａｎオブジェクトのプロパティが該小さなファイルにアクセスしたユーザＩＤ、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、ＪＤＢＣテクノロジを用いて、前記ｂｅａｎオブジェクトをＭｙｓｑｌデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つの異なるアクセス動作のユーザが類似ユーザであり、類似ユーザのＩＤレコードを記録して関連ファイルセットによってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には：アクセスされたソースの接尾辞がｊｐｇであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、前記レコード行がユーザＩＤ、アクセスページＵＲＬ、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターＩＰと小さなファイルの名前をストレージし、ビジターＩＰを前記二次元配列でトラバースし、ＨａｓｈＭａｐ���レクションを使用して各ビジターＩＰのトラフィックを統計し、前記ＨａｓｈＭａｐコレクションのＫｅｙ値がビジターＩＰであり、Ｖａｌｕｅ値がトラフィックであり、前記ＨａｓｈＭａｐコレクションをＶａｌｕｅ値の降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションを使用して該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークすることを特徴とするユーザアクセスプリファレンスモデルを用いたストレージ方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータテクノロジー分野に関し、具体的には、ユーザアクセスプリファレンスモデルを用いたストレージ方法に関する。
【背景技術】
【０００２】
Ｈａｄｏｏｐは２００５年にＡｐａｃｈｅ  ＦｏｕｎｄａｔｉｏｎによってＬｕｃｅｎｅのサブプロジェクトであるＮｕｔｃｈの一部分として正式に導入されたものである。Ｈａｄｏｏｐの最も重要な二つの設計はＨＤＦＳとＭａｐＲｅｄｕｃｅである。ＨＤＦＳは大量なデータをストレージし、ファイルがデータブロックの形でシステムにストレージされる。また、ＨＤＦＳのデータブロックは通常のディスクに定義されたデータブロック（通常は５１２Ｂ）よりも遥かに大きく、ＨＤＦＳの現在のデフォルトブロックサイズは１２８ＭＢである。もしＨＤＦＳにストレージされたファイルのサイズが１２８に超えると、ＨＤＦＳは該ファイルを複数のブロックサイズのブロックに分割し、別々にストレージする。また、ＨＤＦＳが絶えずに小さなファイルをＴＢひいてはＰＢレベルまでストレージし続けると、小さなファイルの問題が発生し、此れは、大量のメタデータがＨＤＦＳのプライマリノードのｎａｍｅｎｏｄｅにストレージされるため、ｎａｍｅｎｏｄｅの負荷が大幅に増加し、システムの読み取りパフォーマンスに影響するためである。その中に、小さなファイルのサイズが２ＭＢに定義され、つまり、ＨＤＦＳがファイルをストレージする中で、ファイルのサイズが２Ｍまたは２Ｍ以下であると、小さなファイルとして定義される。
【０００３】
大量な小さなファイルの処理について、現有の技術においては、若干の小さなファイルを一つのブロックサイズの大きなファイルにマージすることであり、ファイル間の関連性を考慮せず、小さなファイルの読み込み効率が望ましくなくなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】中国特許出願公開第１０３５０００７７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施例はユーザアクセスプリファレンスモデルを用いたストレージ方法を提供し、小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムのｎａｍｅｎｏｄｅメモリの消費を削減する。
【課題を解決するための手段】
【０００６】
本発明の実施例はユーザアクセスプリファレンスモデルを用いたストレージ方法を提供し、具体的には：
【０００７】
ステップＡ：クライアントがストレージされるファイルをアップロードした後で、ＨＤＦＳのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを用いて前記ストレージされるファイルの関連ファイルセットを見つけ、ここで、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものである。
【０００８】
ステップＢ：前記関連ファイルセットのミドルファイルと前記ストレージされるファイルをマージするキューに追加し、
【０００９】
ステップＣ：前記マージするキューのすべてのファイルの総サイズが１２８  ＭＢを超えるかどうかを判断し、イエスであれば、ステップＤに進み、そうでなければ、ステップＥに進み、
【００１０】
ステップＤ：マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＢに進み、          
【００１１】
ステップＥ：前記関連ファイルセットのファイルと前記ストレージされるファイルが全部前記マージするキューに追加されたかどうかを判断し、イエスであれば、前記マージするキューのすべてのファイルを一つのデータブロックにマージし、前記マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＦに進み、そうでなければ、ステップＢに戻り、
【００１２】
ステップＦ：マージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。
【００１３】
更に、前記ユーザアクセスプリファレンスモデルがユーザアクセスログレコードから統計されたものであり、
【００１４】
具体的には：
【００１５】
前記ユーザアクセスログレコードからアクティブユーザセットを統計し、
【００１６】
前記アクティブユーザセットにアクセスされた小さなファイルをｂｅａｎオブジェクトで表し、前記小さなファイルがサイズが２ＭＢ又は２ＭＢ以下のファイルであり、その中に、前記ｂｅａｎオブジェクトのプロパティが該小さなファイルにアクセスしたユーザＩＤ、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含み、
【００１７】
ＪＤＢＣテクノロジを用いて、前記ｂｅａｎオブジェクトをＭｙｓｑｌデータベースに永続化してストレージし、ストレージされたデータによって、任意の二つの異なるアクセス動作の類似性をアカウントし、
【００１８】
任意の二つの異なるアクセス動作の類似性が正の場合、前記任意の二つの異なるアクセス動作のユーザが類似ユーザであり、類似ユーザのＩＤレコードを記録して関連ファイルセットによってすべての類似ユーザにアクセスされ、関連付けられたファイル情報をストレージし、
【００１９】
前記関連ファイルセットによって、前記ユーザアクセスプリファレンスモデルを構築する。
【００２０】
更に、前記前記ユーザアクセスログレコードからアクティブユーザセットを統計するについて、具体的には：
【００２１】
アクセスされたソースの接尾辞がｊｐｇであるレコード行を前記ユーザアクセスログレコードからフィルタリングし、前記レコード行がユーザＩＤ、アクセスページＵＲＬ、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、
【００２２】
レコード解析クラスを作成して前記レコード行を解析し、二次元配列を使用してビジターＩＰと小さなファイルの名前をストレージし、
【００２３】
ビジターＩＰを前記二次元配列でトラバースし、ＨａｓｈＭａｐコレクションを使用して各ビジターＩＰのトラフィックを統計し、前記ＨａｓｈＭａｐコレクションのＫｅｙ値がビジターＩＰであり、Ｖａｌｕｅ値がトラフィックであり、
【００２４】
前記ＨａｓｈＭａｐコレクションをＶａｌｕｅ値の降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションを使用して該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークし、
【００２５】
本発明の実施例を実施すると、以下の有益効果が出る：
【００２６】
本発明の実施例が提供するユーザアクレスプリファレンスモデルを用いた大量の小さなファイルのストレージ方法は、ユーザアクセスプリファレンスモデルを用いて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。
【発明の効果】
【００２７】
本発明の実施例を実施すると、以下の有益効果が出る：
【００２８】
本発明の実施例が提供するユーザアクレスプリファレンスモデルを用いた大量の小さなファイルのストレージ方法は、ユーザアクセスプリファレンスモデルを用いて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。
【図面の簡単な説明】
【００２９】
【図１】図１は本発明の提供するユーザアクセスプリファレンスモデルを用いた大量    の小さなファイルのストレージ方法の実施例のプロセス見取り図である。
【発明を実施するための形態】
【００３０】
下記に本発明の実施例の中の附図を交え、本発明の実施例の技術方案を明確にはっきり説明し、説明した実施例がただ本発明の一部分の実施例で、全部の実施例ではないである。本発明の実施例に基づいて、本領域の普通技術者が創造的な労働を払わないことを前提に得る全部のその他の実施例は本発明の保護範囲に所属する
【００３１】
図１を参照し、本発明の提供するユーザアクセスプリファレンスモデルを用いたストレージ方法であり、該メソッドがステップＡからステップＦまでを含み、各ステップは以下のように：
【００３２】
ステップＡ：クライアントがストレージされるファイルをアップロードした後で、ＨＤＦＳのすべてのファイルをトラバースし、ユーザアクセスプリファレンスモデルを組み合わせて、ストレージされるファイルの関連ファイルコレクションを見つけ、その中に、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードに基づいている。
【００３３】
本実施例の中で、ユーザアクセスプリファレンスモデルがユーザアクセスログレコードに基づいて統計されたもので、具体的には：ユーザアクセスログレコードからアクティブユーザセットを統計し、ｂｅａｎオブジェクトがアクティブユーザセットによってアクセスされた小さなファイルを表すために使用され、小さなファイルがサイズが２ＭＢまたは２ＭＢ以上のファイルを指し、その中に、ｂｅａｎオブジェクトのプロパティが該小さなファイルをアクセスするユーザＩＤ、ユーザがアクセスした小さなファイルの名前及び該小さなファイルがアクサスされた回数を含み、ＪＤＢＣテクノロジによって、ｂｅａｎオブジェクトを永続にＭｙｓｑｌデータベースにストレージし、ストレージされたデータにしたがって、任意の二つの異なるアクセス動作の類似性を計算し、任意の二つの異なるアクセス動作の類似性が正の場合、任意の二つのアクセス動作のユーザが類似ユーザであり、類似ユーザのＩＤを記録し、関連ファイルコレクションを使って、類似ユーザによってアクサスされ、関連付けられたファイル情報をストレージし、関連ファイルコレクションにしたがって、ユーザアクセスプリファレンスモデルを構築する。
【００３４】
本実施例の中で、ユーザアクセスログレコードよりアクティブユーザセットを統計し、具体的には：アクセスされたソースの接尾辞がｊｐｇであるレコード行をユーザアクセスログレコードからフィルタリングし、その中に、レコード行がユーザＩＤ、アクセスページＵＲＬ、アクセス開始時刻、アクセス状況、アクセストラフィックを含み、レコード解析クラスを作成してレコード行を解析し、二次元配列を使用してビジターＩＰと小さなファイルの名前をストレージし、二次元配列のビジターＩＰをトラバースし、ＨａｓｈＭａｐコレクションを使用して各ビジターＩＰのトラフィックを統計し、ＨａｓｈＭａｐコレクションのＫｅｙ値がビジターＩＰであり、Ｖａｌｕｅ値がトラフィックであり、ＨａｓｈＭａｐコレクションをＶａｌｕｅ値の降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションを使用して該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークする。
【００３５】
本発明のモデルの構築過程をもっとよく説明するために、下記の例えにより説明し、具体的な実現する過程が以下のように：
【００３６】
（１）正規表現を使用してアクセスされたソースの接尾辞がｊｐｇであるレコード行をフィルタリングする。
【００３７】
（２）ログ解析クラスを作成してレコード行の五つのコンポーネントを別々に解析し、二次元配列を使ってビジターＩＰと小さなファイルの名前をストレージする。
【００３８】
（３）二次元配列のビジターＩＰ要素をトラバースし、各ビジターＩＰのトラフィックをカウンタするカウンタを設計する。ＨａｓｈＭａｐコレクションを使って、ビジターＩＰをＫｅｙ値とし、Ｖａｌｕｅ値が該ビジターのトラフィックである。
【００３９】
（４）ステップ３で生成されたＨａｓｈＭａｐコレクションをＶａｌｕｅ値にしたがって降順でソートし、ビジターＩＰの上位２０％をフィルタリングし、ＡｒｒａｙＬｉｓｔコレクションで該ＩＰサブセットをストレージし、アクティブユーザセットとしてマークする。
【００４０】
（５）一つのｂｅａｎオブジェクトによってアクティブユーザセットにアクセスされた小さなファイルを抽象に表し、オブジェクトのプロパティが該小さなファイルをアクセスしたユーザＩＤ、ユーザにアクセスされた小さなファイルの名前及び該小さなファイルがアクセスされた回数を含む。メソッドはプロパティを取得するｇｅｔ及びｓｅｔメソッドである。
【００４１】
（６）ＪＤＢＣテクノロジｂｅａｎオブジェクトをＭｙｓｑｌデータベースに結合して永続にストレージし、以下の形式のテーブルが形成される：
【００４２】
（７）２０行の二行の間にデータを取り込み、数式
によって二つの異なるユーザアクセス作動の類似性をカウンタする。その中に、本発明はピアソン相関係数を使用して類似のユーザを決定し、スコアリング行列Ｒを指定し、ユーザａとユーザｂの類似性をｓｉｍ（ａ，ｂ）で表し、ｒａ及びｒｂが「ユーザ−トラフィック」ストアリングマトリックスのストアリングデータである。
【００４３】
（８）ここで、ｓｉｍ（ａ，ｂ）の値が正の値であれば、二人の異なるユーザが類似ユーザであると判定され、そのユーザＩＤが記録される。
【００４４】
（９）類似ユーザのユーザＩＤに基づいて、一つのコレクションを使用して、類似ユーザにアクセスされ、関連付けられているすべてのファイル情報をストレージする。
【００４５】
ステップＢ：関連ファイルコレクションのミドルファイルとストレージされるファイルを順にマージするキューに追加する。
【００４６】
ステップＣ：マージするキューのすべてのファイルの総サイズが１２８  ＭＢを超えるかどうかを判断し、イエスであれば、ステップＤに進み、そうでなければ、ステップＥに進む。
【００４７】
ステップＤ：マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＢに戻る。
【００４８】
ステップＥ：関連ファイルコレクションのミドルファイルとストレージされるファイルが全部マージするキューに追加されたかどうかを判断し、イエスであれば、マージするキューのすべてのファイルを一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除して、ステップＦに進み、そうでなければ、ステップＢに進む。
【００４９】
ステップＦ：すべてのマージしたデータブロックをＨＤＦＳシステムにストレージする。
【００５０】
本発明の実施例が提供するユーザアクレスプリファレンスモデルを用いた大量の小さなファイルのストレージ方法は、ユーザアクセスプリファレンスモデルを用いて関連ファイルセットを見つけてマージするキューに順に追加し、マージするキューのファイルのサイズが１２８ＭＢを超えると、キューにあるファイルをすべて一つのデータブロックにマージし、マージするキューのファイル情報をクリアし、マージしたファイルのソースファイルを削除し、すべてのファイルがマージするキューに追加された時、マージするキューにあるファイルのサイズが１２８ＭＢ以下であれば、該キューのすべてのファイルを一つのデータブロックにマージし、マージするキューにあるファイル情報をクリアし、マージしたファイルのソースファイルを削除して、最後にマージしたすべてのデータブロックをＨＤＦＳシステムにストレージする。小さなファイル間の関連性を考慮しない既存の技術と比べて、本発明の技術プランが小さなファイルの読み取り効率を向上させ、ＨＤＦＳシステムでのｎａｍｅｎｏｄｅメモリの消費を削減できる。
【００５１】
更に、本発明には、複数の関連付けられた小さなファイルが一つの大きなファイルにマージされてシステムにストレージされ、システムのｎａｍｅｎｏｄｅノードが大きなファイルに対応するメタデータのみをストレージし、ｎａｍｅｎｏｄｅノードの維持するメタデータが大きく減少し、メモリの消費も減少になる。
【００５２】
更に、本発明のマージメソッドは、関連付けられたファイルを同じの大きなファイルにマージして、マージされたファイルが同じのデータノードの同じのデータブロックにストレージされる。ユーザからファイルへのリクエストに強く関連性があると、すなわちユーザに絶えずにアクセスされた小さなファイルが同じ大きなファイルにマージされば、ファイルアクセスの原理によれば、システムがより近いｄａｔａｎｏｄｅノードのデータブロックを読み取り、つまり、同じｄａｔａｎｏｄｅのデータブロックカラデータを読み取るということであり、こうして異なるファイルにアクセス時に異なるデータノードの間にジャンプしなくで済み、ディスクアドレッシングのオーバーヘッドが削減され、占められるシステムリソースが比較的に少なくなり、ファイルの読み込み効率を大きく高める。
【００５３】
当業者は、上記の実施形態を実施するプロセスの全部または一部を理解することができ、コンピュータプログラムによって関連するハードウェアを指示することで完了することができ、のプログラムがコンピュター可読記憶媒体にストレージされることができ、該プログラムが実行される時に、上記の各メソッドの実施例のプロセスが含まれる。その中に、の記憶媒体が磁気ディスク、光ディスク、読み出し専用メモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＲＯＭ）またはランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ，ＲＡＭ）であってもよい。
【００５４】
以上に述べたのは本発明の優先された実施形態であり、注意すべきのは、本技術分野の一般的な技術員にとって、本発明の原理から離れないことを前提として、若干な改善や飾りができ、これらの改善や飾りも本発明の保護範囲に含まれる。