【ハイブ】

Apache Hive(ハイブ) とは?

💡 SQLしか書けなくても大丈夫!ビッグデータの世界への「通訳者」
📌 このページのポイント
Apache Hive の仕組み ユーザー HiveQL を入力 SQL風 Hive クエリ解析・最適化 実行計画の生成 変換 メタストア テーブル定義を管理 MapReduce ディスクベース処理 or Spark / Tez メモリベース処理 HDFS / データレイク 大規模データの分散保存 SQLライクな入力 → 分散処理に自動変換 → 結果を返す
Apache Hiveの処理フロー
ひよこ ひよこ

Apache Hiveって、Hadoopと何が違うの?

ペンギン先生 ペンギン先生

HadoopはデータをHDFSに保存してMapReduceで処理する「基盤」で、HiveはそのHadoopの上で動く「SQLっぽいインターフェース」だよ。Hadoopに直接MapReduceプログラムを書くのは大変だけど、HiveならSQLに似たHiveQLで同じことができるんだ

ひよこ ひよこ

SQLが書ければ使えるってこと?

ペンギン先生 ペンギン先生

ほぼそうだね。SELECT、WHERE、GROUP BYJOINなど、おなじみのSQL構文がほとんど使えるよ。裏側でHiveが自動的にMapReduceやSparkのジョブに変換して実行してくれるから、分散処理の細かい仕組みを知らなくても大丈夫なんだ

ひよこ ひよこ

便利だね!でも普通のデータベースとは何が違うの?

ペンギン先生 ペンギン先生

一番の違いは「スキーマオンリード」という考え方だよ。通常のデータベースはデータ投入時にスキーマ(構造)を厳密にチェックするけど、Hiveはデータをまず保存して、読み出す時にスキーマを適用するんだ。だから生データをとりあえず貯めておいて、後から分析できるのが強みだよ

ひよこ ひよこ

なんでも貯めておけるのは楽だね!速さはどうなの?

ペンギン先生 ペンギン先生

正直、リアルタイム処理は苦手なんだ。バッチ処理向けだから、1つのクエリに数分〜数十分かかることもある。「毎日夜中に昨日のログを集計する」みたいな定期バッチには強いけど、即座に結果が欲しい用途にはPrestoやImpalaのような別のツールが使われるよ

ひよこ ひよこ

使い分けが大事なんだね。Hiveって今でも使われているの?

ペンギン先生 ペンギン先生

大企業のデータ基盤ではまだ現役で活躍しているよ。ただクラウド時代にはAmazon AthenaやBigQueryのようなサーバーレスサービスが同じ役割を果たすことも多い。実はAthenaの中身はPrestoベースで、Hiveメタストアと互換性があったりするんだ

ひよこ ひよこ

クラウドサービスとも関係があるんだね!

ペンギン先生 ペンギン先生

そうなんだ。Hiveメタストアはテーブル定義を管理する仕組みで、SparkやPrestoなど他のエンジンからも共通で使えるデファクトスタンダードになっているよ。Hive自体は使わなくても、メタストアだけは活用している企業が多いんだ。裏方で生き続ける重要な技術だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Apache Hive」って出てきたら「SQLっぽい言葉でHadoopのビッグデータを分析できるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Hive」 = ミツバチの巣箱
💬 Hiveは英語で「ミツバチの巣箱」という意味。大量のデータ(蜜)を整理して蓄える場所、というイメージで名付けられたんだよ
← 用語集にもどる