Hive と HBase を比較するのは、Google と Facebook を比較するようなもので、同じ領域(私たちの個人情報)で競合していますが、同じ機能を提供しているわけではありません。そして、GoogleやFacebookと同様に、多くの人がHiveとHBaseの両方を使用しています。

しかし、ビッグデータ初心者が Hive と HBase の違いやユースケースを理解しようとすると、混乱することがあります。

どちらも素晴らしいツールです。そして、それらを一緒に使うことができます。実際、FacebookはHiveとHBaseの両方を実行して、プロファイルのすべてに光速でアクセスできるようにしています。両者の機能には多少の重複があります。しかし、それぞれが輝くユニークなユースケースがあります。

今日は、2つの素晴らしいApacheビッグデータツールであるApache HiveとApache HBaseについて説明します。

Table of Contents:

What Is Apache Hive?

What is Apache HBase?

Hive主要な特徴

HBase 主要な特徴

Hive 制約

HBase 制約

Hive ユースケース

HBase ユースケース

Hiveを利用した実際の事例

HBaseを利用した実際の事例

まとめ

What Is Apache Hive?

Apache HiveはHadoopの上に構築されたデータウェアハウスシステムです。Hadoopの非構造化データの大規模なプールに対して、データの要約、分析、クエリを提供します。Apache HDFSに格納されているデータ、あるいはApache HBaseに格納されているデータであっても、MapReduce、Spark、またはTezを介してデータをクエリすることができます。 

Apache Hiveは、MapReduceのバッチジョブをクエリするために、HiveQL(またはHQL)と呼ばれるSQLライクな言語を使用しています。Hive は INSERT/DELETE/UPDATE/MERGE ステートメントのような ACID トランザクションもサポートしています。アップデート3.0では、これにテーブルスキーマの制約を減らし、ベクトル化されたクエリへのアクセスを与えることで、Hiveはこれにいくつかの機能を追加しました。

一言で言えば、Apache HiveはSpark/HadoopデータにSQL機能を提供し(MapReduceのJava APIは正確には簡単には扱えません)、データウェアハウスシステムとETLツールの両方として機能し、豊富な統合機能とユーザーフレンドリーな機能を備えています。多くの類似した製品(例:Apache Pig)と同様に、Hiveは技術的に多くの異なる機能を扱うことができます。例えば、MapReduceジョブのために長いJavaを書く代わりに、HiveではSQLを使うことができます。スタックの1つとしてHiveを利用する理由は、あなたのニーズに応じて異なるでしょう。

What is Apache HBase?

Apache HBase は HDFS や Alluxio の上で動作する NoSQL のキー/バリューストアです。Hiveとは異なり、HBaseの操作はMapReduceジョブではなく、データベース上でリアルタイムに実行されます。つまり、HDFSにはないランダムアクセス機能を持っているということです。HDFSはランダムな読み書き操作でリアルタイム分析を処理するようには構築されていないため、HBaseはHDFSに多くの機能をもたらします。Hadoop経由で処理されるリアルタイムデータのデータストアとして設定することができます。そして、MapReduceと統合することができます。さらに良いことに、HiveやMapReduceと統合してSQL機能を手に入れることができます。

HBaseはテーブルにパーティショニングされており、テーブルはさらにカラムファミリーに分割されています。カラムファミリーは、スキーマで宣言する必要があり、特定のカラムのセットをグループ化します(カラムはスキーマ定義を必要としません)。例えば、"message" カラムファミリーには、以下のカラムが含まれます。"to"、"from"、"date"、"subject"、"body" です。HBase の各キー/バリューのペアはセルとして定義され、各キーは row-key、カラムファミリー、カラム、タイムスタンプで構成されます。HBaseの行は、row-keyによって識別されるキー/バリューマッピングがグループ化されたものです。HBaseはHadoopのインフラストラクチャのメリットを享受し、水平方向にスケールします。

一言で言えば、HBaseはほぼリアルタイムの読み書きのニーズを持つHadoopデータを保存または処理することができます。これには構造化データと非構造化データの両方が含まれますが、HBaseは後者のデータを得意としています。HBase は低レイテンシーで、シェルコマンド、Java API、Thrift、または REST を介してアクセスできます。HBaseはよくHadoopクラスタのストレージ層として使用されており、Adobeのような巨大ブランドはHadoopストレージのあらゆるニーズにHBaseを活用しています。

Hive 主な特徴

Hiveは、SQLに精通した人がHadoopと統合した様々なデータストアでデータをクエリするのに役立ちます。JDBCに準拠しているので、既存のSQLベースのツールとの統合も可能です。Hiveのクエリを実行すると、デフォルトでテーブル内のすべてのデータを参照するので、しばらく時間がかかる可能性があります。しかし、Hiveのパーティショニング機能を使えば、参照するデータ量を制限することができます。パーティショニングでは、別々のフォルダに保存されているデータに対してフィルタリングクエリを実行し、クエリにマッチするデータのみを読み込むことができます。例えば、特定の日付期間に作成されたファイルのみを処理し、ファイル名の一部に日付フォーマットが含まれている場合は、対象のファイルのみを処理するといった使い方ができます。

ここでは、Hiveの特徴をいくつかご紹介します。

  • SQLを利用できる!
  • 素晴らしい Apache Spark と Tez の統合。
  • ユーザー定義関数(UDF)を利用できる。
  • ハイブ3+の素晴らしいACIDテーブルを持っている。
  • 巨大なHadoopデータセットをクエリすることができる。
  • 豊富な統合機能(BIツール、Pig、Spark、HBaseなど)。
  • HiveMallのようなその他のHiveベースの機能は、いくつか追加のユニークな機能を提供することができる。

HBase 主な特徴

HBaseは、GoogleのBigtableをモデルにしたキー/バリュー形式でデータを格納することで動作しています。4つの主要な操作をサポートしています。行の追加や更新を行うput、セルの範囲を取得するscan、指定した行のセルを返すget、テーブルから行や列、列のバージョンを削除するdeleteです。バージョニングが利用できるので、データの以前の値を取得することができます(HBaseのCompaction(圧縮アルゴリズム)によってスペースを空けるために、履歴を時々削除することができます)。HBaseにはテーブルが含まれていますが、スキーマが必要なのはテーブルとカラムのファミリーのみで、カラムは含まれておらず、インクリメント/カウンタ機能が含まれています。

HBaseの機能をいくつかご紹介します。

  • キー値をサポートしている!
  • ランダムな読み書き操作をサポートするNoSQLデータベースである。
  • ミディアムオブジェクト(MOB)をサポートしている
  • HBaseはコプロセッサをサポートしている。これは大量のデータを計算するのに非常に便利で、MapReduceジョブと似たような動作をしますが、いくつかの利点が追加されています。
  • Apache Phoenixを活用できる!
  • スキャン操作を実行できる。

Hive 制約

手始めに、Hiveには非常に基本的なACID関数があります。それらはHive 0.14で追加されましたが、MYSQLのような製品ほどの成熟度を持っていません。とはいえ、ACIDのサポートは依然機能として存在しており、パッチを重ねるごとにかなり良くなっています。

また、Hiveのクエリは一般的に大きいレイテンシがあります。Hadoop上でバッチ処理を実行するため、クエリの結果が返ってくるまでに数分から数時間かかることもあります。さらに、データの更新は複雑で時間がかかります。

Hiveは小規模なデータクエリ(特に大容量のクエリ)には向いておらず、ほとんどのユーザーは、自身のデータセットに対して従来のRDBMSに依存する傾向があります。

HBase 制約

HBase のクエリはカスタム言語で書かれているため、学習する必要があります。SQL のような機能は Apache Phoenix を通して実現できますが、スキーマをメンテナンスするという代償を伴います。さらに、HBase は特定のプロパティをサポートしていますが、ACID に完全に準拠しているわけではありません。最後になりますが、HBaseを動かすためにはZooKeeper(設定やメンテナンス、ネーミングなどの分散連携のためのサーバ)が必要になります。

HBaseは小さなデータをコプロセッシングで処理することができますが、RDBMSほどの有用性はまだありません。

Hiveユースケース

Hive は、一定期間に収集されたデータの分析的なクエリに使用されます - 例えば、傾向やウェブサイトのログを計算するために。

通常、Hive のユースケースは 2 つあります。

  • HDFS の SQL クエリ エンジンとして: Hive は、SQL クエリの重要なソースになります。Hive を活用して Hadoop データレイクに取り組み、BI ツール (Tableau など) に接続して可視化することができます。
  • HBase、Pig、Spark、またはTezとのテーブルストレージレイヤーとして:多くの HDFS ツールがテーブルストレージ層として Hive を使用しています。技術的には、これがおそらく世界で最も多いユースケースです。

HBase ユースケース

HBaseはビッグデータのリアルタイムクエリに最適です。Facebookはメッセージングやリアルタイム分析に使用していました(現在はFacebookのオープンソースプロジェクトであるMyRocksを使用しています)。Hiveは結果が返ってくるまでに時間がかかる可能性があるので、リアルタイムクエリには使うべきではありません。

HBaseは主に構造化されていないHadoopデータをレイクとして保存・処理するために使用されます。HBaseをすべてのHadoopデータのウェアハウスとして使用することもできますが、私たちは主に書き込みの多い操作に使用されているのを見ています。

Hiveを利用した実際の事例

現在、4,330以上の企業ブランドがHiveを活用しています。これは HBase を使用している企業よりは少ないですが、それでも多くのブランドが利用しています。(特にほとんどの企業は依然SQLスタックを実行しているので)

  • Scribdは、Hadoopを使ってHiveで典型的なデータサイエンスのユースケースを使用しています。これには、機械学習、データマイニング、BIツールのアドホッククエリなどが含まれます。実際、Scribd は Hadoop スタック全体の一部として Hive を使用しており、それがもっともうまくフィットする場所です。あなたはストレージ、処理、アドホッククエリのために、Hive と HBase を同じクラスタに置くことができます。
  • MedHelpは、医師検索機能にHiveを使用しています。彼らはHadoopスタックで1日に何百万ものクエリを処理していますが、Hiveはそれをプロのように処理しています。
  • Last.fmもアドホッククエリにHiveを使用しています。ここでも、Hiveの強みが発揮されています。Hadoop上でアドホッククエリが必要な場合は、Hiveを利用してください。
  • HubSpot、hi5、eHarmony、およびCNETがHiveをクエリー実行に使用しています。これが最もよく議論されているユースケースだと言ってもいいでしょう。繰り返しになりますが、あえて言うならば、ほとんどがテーブルストレージ層として使用されているということです。しかし、実際それについては話している人はいません。

HBaseを利用した実際の事例

これらのケースのほぼすべてが、Hadoopのためのストレージと処理ツールとしてHBaseを使用することになりますが、それが自然にフィットする場所だといえます。

  • AdobeはHBaseを立ち上げ時から運用しています。最初のノードは2008年に起動し、現在は30台のHDFSノードにHBaseを活用しています。内部構造化データと非構造化外部データの両方にHBaseを使用しています。
  • Flurryは50台のHDFSノードをHBaseで運用しており、数百億行の行に対してHBaseを使用しています。
  • HubSpotは主に顧客データの保存にHBaseを使用しています。また、HDFSスタックの一部としてHBaseデータに対してクエリを実行するためにHiveを使用しています。
  • TwitterはHadoopスタックでもHBaseを使用しています。そして、ユーザー検索から生成された内部データにも使われています。
  • StreamyはSQLからHBaseを使ったHadoopスタックに切り替えました。これまでよりも高速に処理できるようになったと主張しています。
  • Sematext(HBase用のSMPを作った)は、HBaseとMapReduceスタックを使っています。繰り返しになりますが、この2つはお互いの長所と短所を完璧に補完し合っているため、うまく連携しています(Hiveを介して活用されていることが多い)。
  • 10,000社以上の企業がHBaseを活用しています。そして、そのほとんどが大企業です。現在のテックエコシステムでは、大手ブランドはHadoopを利用することが多いので、HBaseはいくつかの大手企業(TCS、Marin Software、Taboola、KEYW Corpなど)で利用されている傾向があります。

まとめ

HiveとHBaseはどちらも素晴らしいツールだと言ってもいいでしょう。Google、Twitter、Facebook、Adobe、HubSpotなどの大企業は、HadoopスタックでHiveとHBaseの両方を利用しています。そして、両方のツールは Hadoop クラスタで非常によく使われています。これらのツールは、両方ともいくつか同じ機能を実行できることを理解することが重要です。しかし、実際の世界ではほとんどが独自のユースケースを持つ、全く異なるツールです。

HiveとHBaseは2つの異なるHadoopベースの技術であり、HiveはMapReduceジョブを実行するSQLのようなエンジンであり、HBaseはHadoop上のNoSQLキー/バリューデータベースです。しかし、両方使えばいいのではないでしょうか?Googleが検索に、Facebookがソーシャルネットワーキングに使えるように、Hiveは分析クエリに、HBaseはリアルタイムクエリに使えます。データをHiveからHBaseに読み書きすることもできます。

HDFSスタックのためのETLツールをお探しですか?

Hadoopクラスタ用のETLツールをお探しですか?ご心配なく! 私たちにお任せください。

Xplentyは使いやすいクラウドベースのETLツールで、強力なネイティブHDFSとの統合機能があります。信じられないほどシンプルで効果的なETLソリューションについて興味がありますか?

お問い合わせはこちらから。

Xplentyのオンライン相談に登録して、無料トライアルでプラットフォームを試してみよう!

Xplentyの機能概要や実際の操作感を見てみたい方は、定期的に開催している製品紹介セミナーがおすすめです。

Xplentyのオンラインセミナーに申し込む。

この記事は2019年5月10日に公開された記事を翻訳したものです。