本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
使い慣れたSQLによるデータ操作環境をHadoopプラットフォーム上で手に入れる
本日は「Hive(ハイブ)・HiveQL(ハイブキューエル)」という言葉を解説します。HiveはHadoopによる高速なビッグデータ処理をより簡単に利用する為の「Hadoop上で動作するソフトウェア」です。またHiveQLは「Hiveの中で管理されているデータを操作するのに用いられるSQLに似たデータ操作言語」です。
以前の記事で「Hadoop(ハドゥープ)」とは、
- 巨大データの取り扱いを目的とした分散処理のフレームワークである
- 分散処理によってビッグデータを高速に処理することができる
- Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理を行う
と説明させていただきました。Hadoopの登場や広まりによってビッグデータ分析処理は劇的に効率化され、多くのデータ分析業務に携わるみなさんがその恩恵を受けています。
しかしここで、Hadoopを利用するユーザはさらに贅沢な要求をHadoopに対して抱き始めます。それは、
- Hadoopそのものはフレームワークにすぎないので、実際にデータを操作する場合は、Hadoop上で具体的なデータ操作を行う「Hadoopアプリケーション」を開発しなければならない。これが面倒くさい!
- 「データベースマネージメントシステム(DBMS)に、SQLを使ってデータを投入して検索する」、これと同じように「Hadoopに、SQLを使ってデータを投入して検索する」。これってできないのか?やりたいのに!
- ならば、上記2点を解決する「汎用的なHadoopアプリケーション」を誰かが作ってオープンソースで公開してくれたらみんな幸せなのに!
というモノでした。
そしてこれらを満たすために生まれたのがHiveなのです。Hiveは初めFacebookによって開発されました。現在ではApacheプロジェクトの一部として活動が行われています。Hiveは「Hadoopアプリケーション」としてHadoop上で稼動し、利用者に「データベースマネージメントシステム(DBMS)」の機能を提供します。またこの際のSQLに相当するデータ操作言語としてHiveQLが用いられます。Hadoop上でHiveが稼動することにより、利用者はMySQLやPostgreSQL、Oracleなどに近い感覚でデータの操作を行う事ができます。その際にHadoopの分散処理機構が持つ高速なデータ処理機能が利用できることはいうまでもありません。