ホワイト ペーパーを読んだり、YouTube ビデオを半日見たりして、テクノロジーを正しく理解していると信じていますが、プロジェクトを開始する前に、それが正しいことを確認したいと考えています。
それで、これが私が知っていると思うことです。
Hadoop と hbase のアーキテクチャを理解しているので、ほとんどこのようにモデル化されています
-----------------------------------------
| Mapreduce |
-----------------------------------------
| Hadoop | <-- hbase export--| HBase |
| | --apache pig --> | |
-----------------------------------------
| HDFS |
----------------------------------------
一言で言えば、HBase はリアルタイムの更新とクエリ用に調整されたまったく異なる DB エンジンであり、たまたま HDFS 上で実行され、Mapreduce と互換性があります。
さて、上記が正しいと仮定すると、他に私が知っていると思うことは次のとおりです。
- Hadoop は、最初から最後までビッグ データ向けに設計されています。エンジンは分散追加のみのシステムを使用します。つまり、挿入されたデータは削除できません。データにアクセスするには、Mapreduce、または HDFS シェルと HDFS API を使用できます。
- Hadoop は小さなチャンクを好まず、リアルタイム システムを意図したものではありませんでした。ファイルごとに 1 人の人物と住所を保存したくないでしょう。実際には、ファイルごとに 100 万人の人物と住所を保存し、大きなファイルを挿入することになります。
- 一方、HBase は非常に典型的な NoSql データベース エンジンであり、精神的には CouchDB や RavenDB などと比較されます。注目すべき違いは、hadoop の HDFS を使用して構築されているため、ウォレットによってのみ制限されるサイズに確実にスケーリングできることです。
- Hadoop は、HDFS で計算を実行するためのファイル システム (HDFS) および Java API のコレクションです。HBase は、HDFS を使用してクラスター全体にデータを効率的に格納する NoSql データベース エンジンです。
- Hadoop と HBase の両方からデータにアクセスする Mapreduce ジョブを作成するには、HBase エクスポートを使用して HBase データを Hadoop にプッシュし、データを処理するジョブを作成するのが最善ですが、Mapreduce は一度に両方のシステムに 1 つずつアクセスできます。
- HBase はそのファイル内のフィールドのインデックス作成をネイティブにサポートしていないため、HBase ファイルを設計するときは十分に注意する必要があります。HBase は主キーのみをインデックス付けします。多くのヒントとコツが、この事実を回避するのに役立ちます。
わかりました。この時点まで正確であれば、これは有効なユースケースです。
HBase を使用してサイトを構築します。他の NoSql または RDBMS と同じように HBase を使用して、機能を構築します。それが完了したら、メトリック ログ ポイントをコードに配置して、たとえば log4j でメトリックを記録します。log4j で新しいアペンダーを作成し、ログ ファイルのサイズが 1 ギガに達したら、hadoop クラスターにプッシュし、削除し、新しいファイルを作成し、続行するというルールを設定します。
その後、Mapreduce の開発者は、HBase エクスポートを使用して HBase からデータ セット (ユーザー ID のリストなど) を取得するルーチンを作成し、Hadoop に保存されているログに移動して、システムを介して各ユーザーのパンくずリストを見つけることができます。一定期間。
では、具体的な質問に移ります。ステートメント 1 ~ 6 は正確ですか?
** * ** * *** * 1 つ編集してください。受け取った回答に基づいて、上記の私の信念を更新しました。