0

私は Hadoop の初心者です。Hadoop で小さなファイルの問題を読んでいます。今、解決すべき問題があります。始めるのを手伝ってください。

問題 :

Source Outcome :約 100 万以上 (約) の各ファイルのサイズが 1 kb に近い (サイズの作成または調整を防止することはできません)

結果のグループ化: ソースの結果は 1000 個のファイル A グループにグループ化されます。

必要なタスク:

グループ内のファイルは、1 対 1 の方法で比較されます。ファイルは、特定の標準構造 (ヘッダー、コンテンツなど) に従うバイナリの特徴点 (生体認証) ファイルです。

Source Outcome はそのうち増えると予想されるので、hadoop での比較を実装したいと思います。

Hadoop への入力:

<入力ファイル> <HARファイル> <出力>

< 入力ファイルのサンプル >:

ファイル名は一意のIDであり、ファイル名だけを発行すると非常に役立つことに注意してください

            08RTC345744.txt 08RTC345746.txt
            08RTC345744.txt 08RTC3457XX.txt
            08RTXX457XX.txt 08YYC3457YY.txt
            ..................
             XXXXXXN.txt YYYYYYN.txt

プロセスアルゴリズム:(実装されていませんが、単なるアイデアです)

  1. 入力ファイルを 1 行ずつ読み取る
  2. har:// を使用して行内の各ファイルを読み取ります (例: har://xxx/08RTC345744.txt および har://xxx/08RTC345746.txt を読み取ります)。
  3. 関連する生体認証アルゴリズムを使用して、hdfs (HAR) から読み取られたファイルを比較します
  4. それらが類似性を示す場合、Emit < Filenames > < Count >

< HARFile サンプルファイル >

08RTC345744.txt 
08RTC345746.txt
08RTC345745.txt 
08RTC3457XX.txt
08RTXX457XB.txt 
08YYC3457YY.txt

1) Hadoop で実装する方がよい考えですか?

2) 小さなファイルの比較は Hadoop の問題であると読みましたが、グループのセットの HAR ファイルを作成してから比較する方がよいでしょうか?

3) 私の プロセスアルゴリズム:動作するかどうか?

4)効率的ですか?私は思います、確かにそうではありません、他に何か考えはありますか?

5) 生体認証マッチングの MapReduce に関するアイデアはありますか?

6) HBASE は解決策ですか?

4

1 に答える 1

0

持っているデータの量は、hadoop クラスターで処理できる境界線にあります。より多くのファイルが入ってくる場合を除き、小さなクラスターで十分です。

ここで最初に発生する問題は、クラスターへのデータの取り込みです。私の理解が正しければ、それぞれに 1 つのデータ レコードを含む小さなファイルがたくさんあります。あなたが最終的に望むのは、より大きなファイルを少なくすることです。この問題を解決するには、取り込み前または取り込み時にファイルをマージします。HAR ファイルは適切なオプションではありません。これを行う方法はいくつかありますが、主に、データがクラスターにどのように到着するか、および後でどのように処理するかによって異なります。チェックアウトできます。データが無制限のストリームとして入ってくる場合は、以下をチェックしてください: - Apache Flume - Apache Kafka - Apache Storm - Apache Spark データがすでにどこかにあり、1 回限りのジョブを実行している場合: - マージを行う独自のプログラムを実装します。

ここでよくあるのは、各ファイルを 1 つのデータ レコードとして表現したいということです。次に、多くのレコードを保存するファイル形式を決定できます。上記のツールを適切に構成すると、HDFS にデータ レコードを含む大きなファイルが作成されます。

次に、データをどのように処理するかを決定する必要があります。レコードを相互に比較したい場合、そのためにいくつかのツールも使用できます。

  • プレーン MapReduce。低レベルのツールですべてを実装します。それがあなたがやっていることなので、クロス結合を効率的に行う方法を確認してください。
  • ハイブ。比較アルゴリズムを呼び出す UDF を実装し、ジョブ全体を SQL クエリとして表現します。
  • 豚。ハイブに似ていますが、独自のスクリプト言語を使用します。
  • アパッチスパーク。MapReduce のようにジョブを実装できますが、はるかに簡単でクリーンな方法で実装できる、優れた API を備えた新しいツールです。

何を使用するかは、最終的にはユース ケースと使用可能な環境によって異なります。

于 2014-12-31T12:28:58.887 に答える