2

ホワイト ペーパーを読んだり、YouTube ビデオを半日見たりして、テクノロジーを正しく理解していると信じていますが、プロジェクトを開始する前に、それが正しいことを確認したいと考えています。

それで、これが私が知っていると思うことです。

Hadoop と hbase のアーキテクチャを理解しているので、ほとんどこのようにモデル化されています

-----------------------------------------
|               Mapreduce               |
-----------------------------------------
| Hadoop  | <-- hbase export--|  HBase  |
|         |  --apache pig --> |         |
-----------------------------------------
|       HDFS                            |
 ----------------------------------------

一言で言えば、HBase はリアルタイムの更新とクエリ用に調整されたまったく異なる DB エンジンであり、たまたま HDFS 上で実行され、Mapreduce と互換性があります。

さて、上記が正しいと仮定すると、他に私が知っていると思うことは次のとおりです。

  1. Hadoop は、最初から最後までビッグ データ向けに設計されています。エンジンは分散追加のみのシステムを使用します。つまり、挿入されたデータは削除できません。データにアクセスするには、Mapreduce、または HDFS シェルと HDFS API を使用できます。
  2. Hadoop は小さなチャンクを好まず、リアルタイム システムを意図したものではありませんでした。ファイルごとに 1 人の人物と住所を保存したくないでしょう。実際には、ファイルごとに 100 万人の人物と住所を保存し、大きなファイルを挿入することになります。
  3. 一方、HBase は非常に典型的な NoSql データベース エンジンであり、精神的には CouchDB や RavenDB などと比較されます。注目すべき違いは、hadoop の HDFS を使用して構築されているため、ウォレットによってのみ制限されるサイズに確実にスケーリングできることです。
  4. Hadoop は、HDFS で計算を実行するためのファイル システム (HDFS) および Java API のコレクションです。HBase は、HDFS を使用してクラスター全体にデータを効率的に格納する NoSql データベース エンジンです。
  5. Hadoop と HBase の両方からデータにアクセスする Mapreduce ジョブを作成するには、HBase エクスポートを使用して HBase データを Hadoop にプッシュし、データを処理するジョブを作成するのが最善ですが、Mapreduce は一度に両方のシステムに 1 つずつアクセスできます。
  6. HBase はそのファイル内のフィールドのインデックス作成をネイティブにサポートしていないため、HBase ファイルを設計するときは十分に注意する必要があります。HBase は主キーのみをインデックス付けします。多くのヒントとコツが、この事実を回避するのに役立ちます。

わかりました。この時点まで正確であれば、これは有効なユースケースです。

HBase を使用してサイトを構築します。他の NoSql または RDBMS と同じように HBase を使用して、機能を構築します。それが完了したら、メトリック ログ ポイントをコードに配置して、たとえば log4j でメトリックを記録します。log4j で新しいアペンダーを作成し、ログ ファイルのサイズが 1 ギガに達したら、hadoop クラスターにプッシュし、削除し、新しいファイルを作成し、続行するというルールを設定します。

その後、Mapreduce の開発者は、HBase エクスポートを使用して HBase からデータ セット (ユーザー ID のリストなど) を取得するルーチンを作成し、Hadoop に保存されているログに移動して、システムを介して各ユーザーのパンくずリストを見つけることができます。一定期間。

では、具体的な質問に移ります。ステートメント 1 ~ 6 は正確ですか?

** * ** * *** * 1 つ編集してください。受け取った回答に基づいて、上記の私の信念を更新しました。

4

2 に答える 2

2
  1. HDFS シェルまたはHDFS APIを介して、HDFS 内のファイルに直接アクセスできます。
  2. 正しい。
  3. 私は CouchDB や RavenDB に詳しくありませんが、HBase ではセカンダリ インデックスを使用できないため、クエリを高速化するには行キーを慎重に設計する必要があります。インターネット上には、Google で検索できる HBase スキーマ設計のヒントがたくさんあります。
  4. Hadoop はデータベース エンジンに対するコンピューティング エンジンであると言ったほうが適切だと思います。HDFS データを HBase にインポートする場合は、この投稿で説明されているように Apache Pig を使用できます。HBase データを HDFS にエクスポートする場合は、エクスポート ユーティリティを使用できます。
  5. MapReduce は Hadoop フレームワークのコンポーネントであり、HBase の上にはありません。HBase はストレージに HDFS を使用するため、MapReduce ジョブで HBase データにアクセスできます。生ファイルは特別な形式でエンコードされているため、MapReduce ジョブから HFile に直接アクセスしたくないと思います。解析が容易ではなく、将来のリリースで変更される可能性があります。
于 2013-02-15T05:19:20.610 に答える
1
Since HBase and Hadoop are different database engines, one can not access the data in the other directly. For HBase to get something out of Hadoop, it must go thru Mapreduce and vice versa.

Hadoop はデータベース エンジンではないため、これは当てはまりません。Hadoop は、HDFS で計算を実行するためのファイル システム (HDFS) および Java API のコレクションです。

さらに、Map Reduce はテクノロジーではなく、HDFS データを並行して処理できるモデルです。

于 2013-02-15T05:19:45.917 に答える