1 ハイブとは
- ハイブの紹介
hive: 大規模な構造化ログを解決するために Facebook によってオープンソース化されたデータ統計ツール。
Hive は、構造化データ ファイルをテーブルにマップし、SQL のようなクエリ関数を提供できる Hadoop ベースのデータ ウェアハウス ツールです。
- Hive の本質: HQL を MapReduce プログラムに変換する
Hive によって処理されたデータは HDFS に保存されます
Hive 分析データの基礎となる実装は MapReduce です
Yarn 上でプログラムを実行する
2 Hiveのメリットとデメリット
2.1 利点
- 操作インターフェースはSQLライクな構文を採用しており、迅速な開発(シンプルで使いやすい)が可能です。
- これにより、MapReduce の作成が不要になり、開発者の学習コストが削減されます。
- Hive の実行遅延は比較的長いため、Hive はデータ分析や高いリアルタイム パフォーマンスを必要としない場合によく使用されます。
- Hive の利点は大規模なデータの処理にありますが、Hive は実行遅延が比較的大きいため、小規模なデータの処理には利点がありません。
- Hive はユーザー定義関数をサポートしており、ユーザーはニーズに応じて独自の関数を実装できます。
2.2 欠点
- Hive の HQL 表現力は制限されています
- 反復アルゴリズムでは表現できない
- データマイニングが苦手で、MapReduceのデータ処理フローの制限により、より効率的なアルゴリズムを実現できません。
- ハイブの効率が低い
- Hive によって自動的に生成される MapReduce ジョブは通常、十分なインテリジェンスを備えていません
- Hive のチューニングが難しく粒度が粗い
Hive アーキテクチャの 3 つの原則
-
メタデータ: メタストア
CLI (コマンドライン インターフェイス)、JDBC/ODBC (jdbc アクセス ハイブ)、WEBUI (ブラウザ アクセス ハイブ)
-
メタデータ: メタストア
メタデータには、テーブル名、テーブルが属するデータベース (デフォルトはデフォルト)、テーブル所有者、列/パーティション フィールド、テーブル タイプ (外部テーブルかどうか)、テーブル データが配置されているディレクトリなどが含まれます。デフォルトはビルトインの derby データベースに保存されます。メタストアの保存には MySQL を使用することをお勧めします。
-
ハドゥープ
ストレージには HDFS を使用し、計算には MapReduce を使用します。
-
ドライブ: ドライバー
パーサー (SQL パーサー): SQL 文字列を抽象構文ツリー AST に変換します。このステップは通常、antlr などのサードパーティ ツール ライブラリを使用して実行されます。テーブルが存在するかどうか、フィールドが存在するかどうかなど、AST で文法分析を実行します。 SQL セマンティクスが間違っています。
コンパイラー (物理プラン): AST をコンパイルして論理実行プランを生成します。
オプティマイザー (クエリ オプティマイザー): 論理的な実行計画を最適化します。
実行: 論理実行計画を実行可能な物理計画に変換します。Hive の場合は MR/Spark です。
ユーザーに提供される一連の対話型インターフェイスを通じて、Hive はユーザー命令 (SQL) を受け取り、独自のドライバーを使用し、メタデータ (MetaStore) を結合し、これらの命令を MapReduce に変換し、実行のために Hadoop に送信し、最後に実行を返します。結果は次のとおりです。ユーザーインターフェイスに出力します。