ハイブとハドゥープがどのように相互作用するかを理解しようとしています。私が読んだチュートリアルから、HIVE クエリを実行する前に、map / reduce ジョブを実行して入力データを取得しているようです。map / reduce ジョブを既に実行していて、簡単に解析できる形式でデータを取得している場合、なぜ従来のデータベースにデータを入れないのでしょうか。
助けてくれてありがとう、ネイサン
Hive は、HDFS に保存されているファイルを操作します。最も単純なクエリ以外の場合、Hive は mapreduce ジョブを生成して実行します。非常に単純なクエリ ( SELECT * FROM MyTable
) の場合、ディスクからファイルをストリーミングするだけです。
入力データは MapReduce から取得する必要はありません。HDFS にアップロードされた単純なテキスト ファイルにすることができます。http://developer.yahoo.com/hadoop/tutorial/module2.html#commandrefを参照してください。
Hiveは、大規模な並列処理データベースの機能を提供することにより、オープンソースソフトウェアの非常に重要な空白を埋めます。他の世界では、水平方向にスケーラブルな分析SQLエンジンを提供します。
特にあなたの質問に対して、HiveがRDMSよりも優れている場合のいくつかの主要なシナリオを見ることができます。
a)データはすでにHDFSにあり、他の用途(MRジョブなど
)があります。b)データが多すぎて単一サーバーRDMBSにロードできません。
c)データをクエリする必要があるのは1回または2回だけです。この場合、HiveはRDMBSを上回り、データの読み込み時間が比較的遅くなります。
はい。Hive は、分散計算を行う Hadoop の上に構築されています。Hive は、ファイルを保存するために HDFS にアクセスします。すべてのテーブルは、HDFS にファイルとして保存されます。