1. Hiveを使い始める
1.1ハイブとは
Hive:大規模な構造化ログのデータ統計を解決するFacebookのオープンソース。
Hiveは数据仓库工具
、クエリ機能を統合结构化的数据文件映射为一张表
および提供できるHadoop に基づいてい类SQL
ます。
本质是:将HQL转化成MapReduce程序
1)Hiveによって処理されたデータはHDFSに保存されます
2)Hive分析データの基礎となる実装はMapReduceです。
3)実行プログラムはYarnで実行されます
1.2 Hiveの長所と短所
1.2.1利点
-
操作インターフェースは、SQLに似た構文を採用して、迅速な開発機能を提供します(シンプルで使いやすい)。
-
MapReduceの作成を回避し、開発者の学習コストを削減します。
-
Hiveの実行遅延は比較的大きいため、Hiveは多くの場合、データ分析や、リアルタイム要件が高くない状況で使用されます。
4)Hiveの利点はビッグデータの処理にありますが、Hiveの実行遅延は比較的大きいため、小さなデータの処理には利点がありません。
- Hiveはユーザー定義関数をサポートしており、ユーザーは必要に応じて独自の関数を実装できます。
1.2.2短所
1。HiveのHQL表現能力は限られています
(1)反復アルゴリズムは表現できない
(2)データマイニングが苦手
2。ハイブは比較的非効率的です
(1)Hiveによって自動的に生成されたMapReduceジョブは、通常、十分にインテリジェントではありません
(2)ハイブの調整が難しく、粒度が粗い
1.3 Hiveアーキテクチャの原則
1。ユーザーインターフェイス:クライアント
CLI(ハイブシェル)、JDBC / ODBC(Javaアクセスハイブ)、WEBUI(ブラウザアクセスハイブ)
2。メタデータ:メタストア
メタデータには、テーブル名、テーブルが属するデータベース(デフォルトはデフォルト)、テーブル所有者、列/パーティションフィールド、テーブルタイプ(外部テーブルかどうか)、テーブルデータが配置されているディレクトリなどが含まれます。
默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore
3.Hadoop
ストレージにはHDFSを使用し、計算にはMapReduceを使用します。
4。ドライブ:ドライバー
(1)パーサー(SQLパーサー):SQL文字列を抽象構文ツリーASTに変換します。この手順は通常、antlrなどのサードパーティツールライブラリで完了します。テーブルが存在するかどうか、フィールドが存在するかどうかなど、ASTを解析します。 SQLのセマンティクスは間違っていますか?
(2)コンパイラ(物理計画):ASTをコンパイルして論理実行計画を生成します。
(3)オプティマイザー(Query Optimizer):論理実行プランを最適化します。
(4)実行:論理実行プランを実行可能な物理プランに変換します。Hiveの場合は、MR / Sparkです。
ユーザーに提供される一連のインタラクティブなインターフェースを通じて、Hiveはユーザーの指示(SQL)を受け取り、独自のドライバーをメタデータ(MetaStore)と組み合わせて使用し、これらの指示をMapReduceに変換し、Hadoopに送信して実行し、最後に実行を返します。結果は、ユーザーインタラクティブインターフェイスに出力されます。