2016-06-15 4 views
-1

今、私は人から何らかのインプットが必要なこの質問を受け取りました。ハイブまたはHBaseまたは他のオプション?

私は毎日更新されるデータを格納する従来のrdbms(例えばSQLサーバ)を持っています。そして、私はHadoopエコシステムを活用したいので、最初のステップは、rdbmsからHadoopデータストアにデータをエクスポートすることです。おそらく毎晩、データストアの増分更新を行いたいと思います。どちらを使うべきかわからない。

私たちが増分更新(この仮定が正しくない場合は私を修正してください)について考えてみると、Hiveは正しい選択肢ではないようですが、HBaseについてはどうしたらいいですか?

+0

impalaのようなオプションはプラットフォーム固有です。私はあなたにPOCを行い、あなたのために一番合ったものがどれかを見つけることをお勧めします。私の更新された答えを見てください。 –

答えて

1

1)データの摂取:

あなたはハイブ外部表(HBaseのストレージハンドラ)との差分更新のためのHBaseを、使用することができます。あなたはSQOOP

2)インクリメンタル更新を検討することができます。

https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration

もインパラのように、このmy answer

オプションで見て見てくださいすることはハイブメタストアを再使用することができ、プラットフォーム固有(Clouderaの)です。しかし、ハイブよりもクエリ処理が高速です。

インパラにはいくつかの重要な機能があります。

  1. それは 別のJVMでフォークに非常に高価である削減/マップを使用していません。それはクエリ を分割し、それらを並列に実行し、最後に結果セットをマージする別個のImpalaデーモンを実行します。

  2. ほとんどの操作はメモリ内で行われます。

  3. 大容量ファイルでは高速ですが、ストレージにはhdfsが使用されます。クエリへの結果からデータへのできるだけ多くのキャッシュには、 がキャッシュされます。

  4. これは、円柱ファイル の形式である寄木張りのような新しいファイル形式をサポートしています。したがって、この形式を使用すると、ほとんどの場合 というわずかな数の列にしかアクセスしていない のクエリではより高速になります。 HadoopのにRDBMSからデータを取得:

1

のHadoopエコシステムは正確にあなたが記述問題を行うように設計されてSqoopと呼ばれるツールが含まれています。増分更新を行ういくつかの方法をサポートしています。データベースへのJBDCまたはJNDI接続が必要で、一部のデータベースでは高性能オプションを使用できます。これはHadoopの優れたツールの1つです。

"into Hadoop"とは、いくつかのことを意味しますが、通常、a)Hadoop分散ファイルシステム(HDFS)に格納されたファイルのセット、またはb)hBaseに格納されたデータのいずれかです。そして技術的には、hBaseはファイルをHDFS上に保存する別の方法です。

ハイブはHDFSの上にあるレイヤーで、HDFSファイルにエクスポートしたRDBMSテーブルをSQL Serverデータベース上にあるかのように扱うことができます。まあ、ちょっと。Hiveは、SQLライクな言語を使用して多数のファイル形式を照会できます。

HDFSには、通常のデータベースにあるように、行を更新する方法はありません。 HDFSファイルは、「一度だけ書き込む」という設計です。通常、データセットを自然なパーティションに沿って複数のファイルに分割することができます。レコードを更新する必要がある場合は、パーティションに関連付けられたファイルのみを書き直す必要があります。年+月は一般的なパーティション方式です。

レコードが変更されないデータベースをSqoopしている場合は、単にHDFSファイルに追加するだけです。これは、通常は変更されないため、トランザクションやログなどのデータには問題ありません。しかし、更新されたレコード(顧客名や電子メールなど)は、より困難な問題になります。

hBaseは、既存のレコードの更新を透過的に管理することにより、このHDFSの制限をなくしました。しかし、hBaseはキーバリューストアデータベースです。キーはあなたのRDBMSのプライマリキーが何であってもよく、値はレコードの残りの部分である必要があります。これはひどいことではありませんが、面倒なことがあります。

Hiveの最新バージョン(またはHiveと機能的に似ている可能性もあるImpala)は、より柔軟なフォーマットでデータを保存しながら、更新を許可します。

だから、Sqoopはあなたが望むツールですが、Hadoopに入ってからデータを使ってやりたいことを慎重に考えてください。本当に大きくなることができるデータベースとはまったく異なるものです。