Hive コンポーネントが提供できるサービス: 1. SQL ステートメントを MapReduce コードに変換する; 2. HDFS を使用してデータを保存できる; 3. MapReduce を使用してデータを計算できる。 hive は、Hadoop に基づくデータ ウェアハウス ツールで、データの抽出、変換、ロードに使用されます。hive データ ウェアハウス ツールは、構造化データ ファイルをデータベース テーブルにマップでき、SQL ステートメントを MapReduce タスクに変換して実行できる SQL クエリ関数を提供します。 。
このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。
データ ウェアハウスを構築する場合、Hive コンポーネントは非常に重要な役割を果たします。Hive が Hadoop ベースの重要なデータ ウェアハウス ツールであることはわかっていますが、その適用方法についてはさらに検討する必要があります。
hive は、データの抽出、変換、読み込みに使用される、Hadoop ベースのデータ ウェアハウス ツールです。 Hadoopに保存された大規模なデータを保存、クエリ、分析できる仕組みです。ハイブ データ ウェアハウス ツールは、構造化データ ファイルをデータベース テーブルにマップでき、SQL ステートメントを MapReduce タスクに変換して実行できる SQL クエリ関数を提供します。 Hive の利点は、学習コストが低く、SQL のようなステートメントを通じて高速な MapReduce 統計を実装できるため、専用の MapReduce アプリケーションを開発する必要がなく、MapReduce がよりシンプルになることです。 hive はデータ ウェアハウスの統計分析に非常に適しています
1. SQL ステートメントを MapReduce コードに変換します
2. HDFS を使用してデータを保存できます
3. MapReduce を使用してデータを計算できます
a.Hive の利点
(1) シンプルで使いやすい: SQL に似たクエリ言語 HQL(2) スケーラブル: 非常に大規模なデータ セット向けに設計されています。拡張機能 (コンピューティング エンジンとしての MR、ストレージ システムとしての HDFS) 通常、サービスを再起動する必要はなく、Hive はクラスターの規模を自由に拡張できます。#(3) 統合されたメタデータ管理の提供
#(4) スケーラビリティ: Hive はユーザー定義関数をサポートし、ユーザーは自分のニーズに応じて独自の関数を実装できます#( 5) フォールト トレランス: 優れたフォールト トレランス、ノードに問題がある場合でも SQL は実行を完了できます
b. Hive の欠点(1) hive の HQL 表現機能は限定的です
1) pagerank
などの反復アルゴリズムは表現できません2) kmeans などのデータマイニング
(2) ハイブの効率は比較的低いです。
1) ハイブによって自動的に生成される MapReduce ジョブは、通常、十分なインテリジェンスを備えていません。
1) Hive によって処理されたデータは HDFS
に保存されます2) Hive 分析データの最下層のデフォルト実装は MapReduce3) エグゼキューターは Yarn 上で実行されます
要約: Hadoop 効果のクライアントに相当します。
#Hive を使用する理由
(1) Hive と従来のデータベースの比較(2) Hive の利点
Hive は HDFS を使用してデータを保存し、MapReduce を使用してデータのクエリと分析を行います。なぜなら、Hadoop MapReduce を直接使用してデータを処理すると、人員の学習コストが高くなるという問題に直面し、MapReduce を使用して複雑なクエリ ロジックを開発するのは難しすぎるからです。 Hive では、操作インターフェイスに SQL ライクな構文が採用されており、迅速な開発機能を提供するだけでなく、MapReduce の記述を省略できるため、開発者の学習コストが削減され、機能拡張がより便利になります。
Hive はどのような問題を解決しますか?
Hive はビッグデータのクエリ機能を解決し、MR を書けない人でも MR を使用できるようにします. その本質は、HQL を MR に変換することです。その最下層は MR です。MR を書くのは非効率的で苦痛です。Hive の出現は、JAVAEE 兄弟にショートカットと朗報をもたらしました。2。メタデータ: メタストア
メタデータには、テーブル名、テーブルが属するデータベース (デフォルトはデフォルト)、テーブル所有者、列/パーティション フィールド、テーブルのタイプ
(外部テーブルかどうか)、およびテーブル データが含まれます。 location ディレクトリなど;
メタデータ: メタストア
メタデータには、テーブル名、テーブルが属するデータベース (デフォルトはデフォルト)、テーブル所有者、列/パーティション フィールド、テーブル##が含まれます。
# タイプ (外部テーブルかどうか)、テーブル データが配置されているディレクトリなど; はデフォルトで組み込みの derby データベースに保存されます。MySQL の使用をお勧めします。メタストアを保存します。 3. Hadoopストレージには HDFS を使用し、計算には MapReduce を使用します。 4.ドライバー: Driver (1) パーサー (SQL パーサー): SQL 文字列を抽象構文ツリー AST に変換します。このステップは通常、antlr などの サードパーティ ツール ライブラリを使用して完了します。テーブルが存在するかどうか、フィールドが存在するかどうか、SQL セマンティクスが間違っているかどうかなど、AST で構文分析を実行します。 (2) コンパイラ (物理プラン): AST をコンパイルして論理実行プランを生成します。 (3) オプティマイザー (クエリ オプティマイザー): 論理的な実行計画を最適化します。 (4) 実行: 論理実行プランを実行可能な物理プランに変換します。 Hive の場合は MR/Spark です。Hive は Hadoop 上に構築されており、すべての Hive データは HDFS に保存されます。データベース
は、ブロック デバイスまたはローカル ファイル システムにデータを保存できます。
Hive はデータ ウェアハウス アプリケーション向けに設計されているため、データ ウェアハウスのコンテンツの読み取りは多くなり、書き込みは少なくなります。したがって、Hive のデータを書き換えることは推奨されません。すべてのデータはロード時に決定されます。通常、データベース内のデータは頻繁に変更する必要があるため、INSERT INTO... VALUES を使用してデータを追加し、UPDATE... SET を使用してデータを変更できます。Hive とデータベースの比較
Hive は SQL に似たクエリ言語 HQL (Hive Query Language) を使用するため、Hive をデータベースとして理解するのは簡単です。実際、構造的な観点から見ると、クエリ言語が似ていることを除けば、Hive とデータベースには共通点がありません。このセクションでは、Hive とデータベースの違いをさまざまな側面から説明します。データベースはオンライン アプリケーションでも使用できますが、Hive はデータ ウェアハウス向けに設計されているため、このことを理解すると、アプリケーションの観点から Hive の特性を理解するのに役立ちます。 1. クエリ言語3. データの更新: Hive はデータ ウェアハウス アプリケーション向けに設計されているため、データ ウェアハウスのコンテンツの読み取りは多くなり、書き込みは少なくなります。したがって、Hive 内のデータを書き換えることは推奨されず、すべてのデータはロード時に決定されます。通常、データベース内のデータは頻繁に変更する必要があるため、INSERT INTO... VALUES を使用してデータを追加し、UPDATE... SET を使用してデータを変更できます。
4. インデックス: Hive は、データのロード中にデータの処理を実行せず、データのスキャンも行わないため、データ内の一部のキーにはインデックスが付けられません。 Hive が条件を満たすデータ内の特定の値にアクセスしたい場合、データ全体をブルート フォース スキャンする必要があるため、アクセスのレイテンシが高くなります。 MapReduce の導入により、Hive はデータに並行してアクセスできるため、インデックスがなくても、Hive は大量のデータにアクセスする利点を発揮できます。データベースでは通常、インデックスは 1 つまたは複数の列に作成されるため、データベースは特定の条件で少量のデータにアクセスする際の効率が高く、待ち時間が短くなります。データ アクセスの待ち時間が長いため、Hive はオンライン データ クエリには適していません。
6. 実行遅延: Hive がデータをクエリする場合、インデックスがないためテーブル全体をスキャンする必要があるため、遅延が大きくなります。 Hive の実行遅延が長くなるもう 1 つの要因は、MapReduce フレームワークです。 MapReduce 自体の待ち時間が長いため、MapReduce を使用して Hive クエリを実行する場合も待ち時間が長くなります。対照的に、データベースの実行遅延は短くなります。もちろん、この低さはデータ規模が小さいという条件付きであり、データ規模がデータベースの処理能力を超えるほど大きい場合、Hive の並列コンピューティングは明らかに利点を発揮します。
7. スケーラビリティ: Hive は Hadoop 上に構築されているため、Hive のスケーラビリティは Hadoop のスケーラビリティと一致します (世界最大の Hadoop クラスタは Yahoo! にあります。2009 年、年間規模は約 4,000 ノードです) 。 ACID セマンティクスの厳しい制限により、データベースの拡張行は非常に限られています。現在最も先進的な並列データベースである Oracle の理論上の拡張能力はわずか 100 ユニット程度です。
8. データ スケール: Hive はクラスター上に構築されており、並列コンピューティングに MapReduce を使用できるため、大規模なデータをサポートでき、それに応じてデータベースはより小規模なデータ スケールをサポートできます。
プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !
以上がハイムコンポーネントはどのようなサービスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。