Hive-introduction

提供:Dev Guides
移動先:案内検索

ハイブ-はじめに

「ビッグデータ」という用語は、膨大な量、高速、および日々増加しているさまざまなデータを含む大規模なデータセットのコレクションに使用されます。 従来のデータ管理システムを使用して、ビッグデータを処理することは困難です。 そのため、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のアーキテクチャを示しています。

Hive Architecture

このコンポーネント図には、さまざまなユニットが含まれています。 次の表は、各ユニットについて説明しています。

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の間のワークフローを示しています。

How Hive Works

次の表は、HiveがHadoopフレームワークと対話する方法を定義しています。

Step No. Operation
1
  • Execute Query*

コマンドラインや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に送信します。