Hive-introduction
ハイブ-はじめに
「ビッグデータ」という用語は、膨大な量、高速、および日々増加しているさまざまなデータを含む大規模なデータセットのコレクションに使用されます。 従来のデータ管理システムを使用して、ビッグデータを処理することは困難です。 そのため、Apache Software Foundationは、Hadoopと呼ばれるフレームワークを導入して、ビッグデータの管理と処理の課題を解決しました。
Hadoop
Hadoopは、分散環境でビッグデータを保存および処理するためのオープンソースフレームワークです。 これには2つのモジュールが含まれ、1つはMapReduce、もう1つはHadoop分散ファイルシステム(HDFS)です。
- * MapReduce:*これは、コモディティハードウェアの大きなクラスターで大量の構造化、半構造化、および非構造化データを処理するための並列プログラミングモデルです。
- HDFS: Hadoop分散ファイルシステムは、データセットの保存と処理に使用されるHadoopフレームワークの一部です。 汎用ハードウェアで実行するフォールトトレラントファイルシステムを提供します。
Hadoopエコシステムには、Hadoopモジュールを支援するために使用されるSqoop、Pig、Hiveなどのさまざまなサブプロジェクト(ツール)が含まれています。
- * Sqoop:* HDFSとRDBMSの間でデータをインポートおよびエクスポートするために使用されます。
- * Pig:* MapReduce操作用のスクリプトの開発に使用される手続き型言語プラットフォームです。
- ハイブ: MapReduce操作を行うためのSQLタイプスクリプトの開発に使用されるプラットフォームです。
注意: MapReduce操作を実行するには、さまざまな方法があります。
- 構造化、半構造化、および非構造化データにJava MapReduceプログラムを使用する従来のアプローチ。
- Pigを使用して構造化および半構造化データを処理するMapReduceのスクリプトアプローチ。
- Hiveを使用して構造化データを処理するMapReduceのHiveクエリ言語(HiveQLまたはHQL)。
ハイブとは
Hiveは、Hadoopで構造化データを処理するためのデータウェアハウスインフラストラクチャツールです。 ビッグデータを要約するためにHadoopの上に常駐し、クエリと分析を簡単にします。
当初、HiveはFacebookによって開発されましたが、後にApache Software Foundationが取り上げて、Apache Hiveという名前でオープンソースとしてさらに開発しました。 さまざまな企業で使用されています。 たとえば、AmazonはAmazon Elastic MapReduceでそれを使用します。
ハイブは違います
- リレーショナルデータベース
- オンライントランザクション処理(OLTP)の設計
- リアルタイムのクエリと行レベルの更新のための言語
Hiveの機能
- スキーマをデータベースに保存し、処理したデータをHDFSに保存します。
- OLAP用に設計されています。
- HiveQLまたはHQLと呼ばれるクエリ用のSQL型言語を提供します。 *親しみやすく、高速で、スケーラブルで、拡張可能です。
Hiveのアーキテクチャ
次のコンポーネント図は、Hiveのアーキテクチャを示しています。
このコンポーネント図には、さまざまなユニットが含まれています。 次の表は、各ユニットについて説明しています。
Unit Name | Operation |
---|---|
User Interface | Hive is a data warehouse infrastructure software that can create interaction between user and HDFS. The user interfaces that Hive supports are Hive Web UI, Hive command line, and Hive HD Insight (In Windows server). |
Meta Store | Hive chooses respective database servers to store the schema or Metadata of tables, databases, columns in a table, their data types, and HDFS mapping. |
HiveQL Process Engine | HiveQL is similar to SQL for querying on schema info on the Metastore. It is one of the replacements of traditional approach for MapReduce program. Instead of writing MapReduce program in Java, we can write a query for MapReduce job and process it. |
Execution Engine | The conjunction part of HiveQL process Engine and MapReduce is Hive Execution Engine. Execution engine processes the query and generates results as same as MapReduce results. It uses the flavor of MapReduce. |
HDFS or HBASE | Hadoop distributed file system or HBASE are the data storage techniques to store data into file system. |
ハイブの働き
次の図は、HiveとHadoopの間のワークフローを示しています。
次の表は、HiveがHadoopフレームワークと対話する方法を定義しています。
Step No. | Operation |
---|---|
1 |
コマンドラインやWeb UIなどのHiveインターフェイスは、クエリをJDBCドライバやJDBCなどのデータベースドライバに送信して実行します。 |
2 |
Get Plan ドライバーは、クエリを解析して、構文とクエリプラン、またはクエリの要件をチェックするクエリコンパイラの助けを借ります。 |
3 |
Get Metadata コンパイラはメタデータ要求をメタストア(任意のデータベース)に送信します。 |
4 |
Send Metadata メタストアは、コンパイラへの応答としてメタデータを送信します。 |
5 |
Send Plan コンパイラーは要件を確認し、ドライバーに計画を再送信します。 ここまでで、クエリの解析とコンパイルが完了しました。 |
6 |
Execute Plan ドライバーは、実行プランを実行エンジンに送信します。 |
7 |
Execute Job 内部的に、実行ジョブのプロセスはMapReduceジョブです。 実行エンジンは、ジョブをNameノードにあるJobTrackerに送信し、このジョブをDataノードにあるTaskTrackerに割り当てます。 ここで、クエリはMapReduceジョブを実行します。 |
7.1 |
Metadata Ops 一方、実行中、実行エンジンはMetastoreでメタデータ操作を実行できます。 |
8 |
Fetch Result 実行エンジンは、データノードから結果を受け取ります。 |
9 |
Send Results 実行エンジンは、これらの結果の値をドライバーに送信します。 |
10 |
Send Results ドライバーは結果をHive Interfacesに送信します。 |