私は現在、大量のログを保存する Hadoop クラスターを使用しており、集計分析を計算するためのピッグ スクリプトを実行しています。また、本番データを保存する Mongo クラスターもあります。
私は最近、多くの 1 回限りの分析クエリを実行するか、他の人がそれらを実行できるようにする必要がある立場に置かれています。これらのクエリでは、運用データとログ データの両方を頻繁に使用する必要があるため、何をするにしてもすべてを 1 か所にまとめたいと考えています。私のログ データは json 形式で、prod データの約 10 倍のサイズです。私が見ているMongoとHBaseの長所/短所は次のとおりです。
Mongo の長所 / HBase の短所:
- ログ データは JSON 形式であるため、Mongo に非常に簡単に取り込むことができます。また、FluentD などを介して取り込まれるので、これをリアルタイムで行うことができます。
- 私が一緒に仕事をしているほとんどの人は、製品データを扱う必要があることから Mongo クエリを作成した経験があるため、Mongo で分析データベースを作成することは、誰にとっても非常に簡単です。
- Hbase については Mongo ほど詳しくありません。
- JSON で、または Mongo から Hbase にデータを取得することがどれほど簡単か難しいかわかりません。これはそれほど悪くないと思いますが、ドキュメントはあまりありません。
HBase の長所/Mongo の短所:
- ログ データは製品データよりもはるかに大きいため、hadoop と mongo の両方にログ データを格納すると、製品データを Hadoop と mongo の両方に格納するよりもはるかにコストがかかります。
- すでに実行中の Hadoop クラスターの上に HBase を構築し、余分なマシンを追加せずに製品データをそこに収めることができます。Mongo を使用する場合、まったく新しい Mongo クラスターが必要になります。
- Hbase の上に Phoenix を使用して、単純な SQL 構文ですべてのデータにアクセスできるようにすることもできますが、これがマルチレベルのドキュメントベースのデータにとってどれほど扱いにくいものになるかはわかりません。
現在、私は Hbase についてほとんど知りません。自分自身を Mongo の専門家とは考えていないため、多くのことを見逃している可能性があります。
それで、私は何が欠けていて、どれが私の状況に適していますか?