【課題を解決するための手段】
【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キャッシングメカニズムと合わせた後で、書き込まれた小さなファイルの読み取りをもっと容易くし、小さなファイルの読み取り効率を向上させることができる。