ハイブ(A)の基本原理

1.はじめに
新しいコンテンツを学ぶことができ、最終的に、クラスタ構造について多くの前で話すだけでなく、HDFSとMapReduceのの基本的な操作。
ハイブは、データウェアハウス自体で、その後、データウェアハウス、それは何ですか?

データウェアハウスは、分析レポート、サポートの意思決定を支援し、時間とコストを節約し、企業のビジネスインテリジェンスニーズに合わせてビジネスプロセスを改善し、品質を向上させるためのガイダンスを提供することです。これは、トランザクション処理、データ「CRUD」操作を解決することができるデータベースシステムであり、データ・ウェアハウスは、データベース分析を照会するために使用されるデータベースシステムとは異なる、通常、単一のデータのために使用されません、挿入、変更、および削除。

ハイブは何2.
ハイブは、Hadoopの中に格納されたデータを分析するために、SQLクエリの富を提供し、データ・ウェアハウスの分析ツールを構築するHadoopのに基づいていますが、ファイルシステムを配布しました。これは、データベーステーブルにデータファイルの構造をマップし、完全なSQLクエリ機能を提供することができ、SQL文では、コンテンツ解析ニーズを照会するために、SQLによって、MapReduceのタスクを実行するように変換することができます。このクラスは、SQLはHQL、言語HQLクエリー要約、分析データ、Hadoopクラスタを使用するための簡素化のMapReduceコードの使用に慣れていないユーザーのためのMapReduceと呼ばれます。MapReduceの開発者は、より複雑なデータ分析を行うためにハイブをサポートするためのプラグインとして、独自のマッパーとリデューサーを書くことができます。

3.ハイブの類似点と相違点やデータベース
従来のリレーショナルデータベースとのハイブ、ハイブは、SQLに似たクエリ言語(ハイブクエリ言語)を提供していますが、HQLを導入する主な目的は学習費、基礎となるかのMapReduceを減らすことですが。ハイブは、データウェアハウス自体ではなく、データベースシステムです。
主な違いは、データベースとハイブ:クエリ言語、メモリ位置、データフォーマット、データ更新、インデックス作成、実行、実行レイテンシ、スケーラビリティ、およびいくつかの側面のデータサイズ:

3.1クエリ言語の違い

最後にHQL言語とSQL言語の違いは何ですか?

注:SQL-92には、ANSI / ISO標準のデータベースです。これは、言語(SQL)データベースと行動(トランザクションの分離レベル、など)を定義します。

3.2保存された差分データの位置
データ格納場所には、すべてのデータは、HDFSに格納され、Hadoopのに基づいて、ハイブであり、データベースのデータは、ブロックデバイスまたはローカルファイルシステムに格納されています。

3.3データ形式の差
ハイブでは、特定のデータ形式のない定義が存在しない、データフォーマットがユーザにより指定され、ユーザは、三点は、データフォーマット定義する属性を指定する必要がある:カラム分離(通常空間、\ T、\ X001を)、行区切り(\ N-)、およびファイルのデータを読み込みます。

データをロードする過程で、データフォーマットは、ハイブ自体にユーザから要求されないデータ形式の変換を定義して、データ自体は、ハイブをロードするプロセスの任意の調整を行うが、唯一単にコンテンツに対応するデータをコピーしないであろうHDFSディレクトリ。別のデータベースストレージエンジンに起因する従来の空気データは、各々がそれぞれのデータフォーマットを定義する、異なる有しにおいて、全てのデータが特定の組織構造に応じて格納されるので、データをロードするより時間のかかるプロセスであろう。

3.4データの更新違い
ハイブ自体は、データ・ウェアハウスのために設計されています。ハイブは、変更や追加データをサポートしていないので、データウェアハウスの内容は、すべてのデータがロードされたの過程で完成され、多くの場合、より少ない読み書きです。データベース内のデータは、多くの場合、頻繁に変更、クエリを必要とする他の操作を追加します。

3.5屈折率差
データをロードするプロセスでハイブは、データの任意の処理を行うことはありません、それはいくつかの重要なデータのインデックスを作成しないように、データは、プロセスをスキャンしていません。ハイブは、データ値を満たす状態をデータにアクセスし、全体のデータ、高いアクセスレイテンシーをスキャンする必要があります。HQLは、最終的のMapReduceに変換されるので、ハイブは、従って、データへの並列アクセスは、偶数のインデックスが存在しない場合、大量のデータへのアクセスでは、ハイブは依然として優位性を発揮することができることができます。データベース内に、通常アクセスの特定の条件を満たすようにので、データの少量のために、インデックスを作成する列または列の、データベースは、高効率、低遅延を有します。
したがって、より高いハイブデータアクセスのレイテンシは、オンラインクエリデータには適していません。

3.6実行および実装の遅延差は、
ハイブほとんどのクエリを実行結局のMapReduceによって実装され、データベースには、独自の実行エンジンを持っています。ハイブは、クエリデータに索引付けされていないため、必要性が高い待ち時間が生じる、テーブル全体をスキャンします。そして、MapReduceの自体も、効率的なクエリにつながる可能性が高いレイテンシーを持っています。小規模なデータの場合に比べ、データベース待ち時間を行うデータベースに経時機能を処理する大規模なデータは、ハイブ並列計算の利点が明らかにされた場合にのみ、ローです。

3.7スケーラビリティ差
ハイブ自体はHadoopの上に構築されるスケーラビリティは一貫性のHadoopことができることであるので、ハイブとすることができます。厳格な制限ACIDセマンティクスにデータベース、スケーラビリティが非常に限られています。
注:酸である:原子(原子性)、一貫性(整合性)、分離(単離)、耐久性(永続性)。

データのサイズとの差が3.8を処理し
、明らかにハイブサポートデータをデータベース自体のサイズよりもはるかに大きいです。

4.デザインアプリケーションハイブ
ハイブは、主に、従来のデータウェアハウスタスクETL(抽出・変換・ロード)、およびレポート生成に使用されます。その中でも、レポート生成がタスクを処理する大規模なデータ解析と一括で行うことができ、大量のデータおよびコストデータ解析のオフライン解析を実行するログ解析に適用することができます。こうしたPV、UV、および多次元データ分析の期間として、ウェブサイトの統計情報を表示します。

5.ハイブアーキテクチャと基本的な構成要素
図5.1ハイブアーキテクチャ。

 

CLI(コマンドライン)、クライアント、WUIある3つのユーザー・インターフェースがあります。CLIは、最も一般的で、CLIが開始されると、ハイブのコピーがまた始まります。あなたは上のノード、それは注意しなければならないハイブServerを起動し、ノードにハイブServerを起動するとき、クライアントは、ハイブのクライアント、ハイブサーバーにユーザーが接続する、クライアント・モードです。ウェブUIは、ブラウザハイブを介してアクセスされます。

5.2ハイブコンポーネント
5.2.1ドライバコンポーネント
コア・コンポーネント、全体のハイブのコアは、アセンブリコンパイラ、オプティマイザとエグゼキュータを含み、それは我々がHQLの文の解析、コンパイラの最適化、実行計画を作成する役割で、その後、根本的に呼び出しますフレームワークを計算するMapReduce。

5.2.2メタストアアセンブリ
主にメタデータを格納するために使用されるメタストア、ハイブメタデータは、MySQLの、ダービーとして、データベースに格納されています。ハイブメタデータは、テーブル名とテーブル列のプロパティとパーティションの特性、(もし外側テーブル、等)、ディレクトリデータテーブル等のテーブルを含んでいます。あなたはMETASTORE_PORT環境変数を指定することにより、ポート上のサーバーのリッスンを指定することができます。

5.2.3 CLI
command line interface,命令行接口。也就是Shell环境,CLI启动的时候会同时启动一个Hive副本,这也是默认的服务。我们可以通过bin/hive或bin/hive --service cli命令来指出Hive Server所在的节点,并且在该节点启动Hive Server

5.2.4 ThriftServers
提供JDBC和ODBC接入的能力,它用来进行可扩展且跨语言的服务的开发,Hive集成了该服务,能让不同的编程语言调用Hive的接口。

5.2.5 Hive WEB Interface
Hive客户端提供了一种通过网页的方式访问Hive所提供的服务。这个接口对应Hive的HWI组件(Hive WEB Interface),默认端口是9999,在没有安装任何客户端软件的情况下,这个简单的Web接口可以代替CLI。另外,HWI是一个功能全面的Hadoop Web接口,其中包括运行Hive查询和浏览Hive mestore的应用程序。命令为:bin/hive --service hwi

5.3 Hive连接数据库的三种方式
Hive将元数据存储在RDBMS中,有三种模式可以连接到数据库。

5.3.1 单用户模式
此模式连接到In-memory的数据库Derby,一般用于Unit Test。

 

5.3.2 多用户模式

通过网络连接到一个数据库中,是最近常使用的连接方式。

5.3.3 远程服务器模式

用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库。

 

 6. Hive的执行流程

在Hive上执行查询操作时,大体流程如下:

  1. 用户提交查询任务到Driver。
  2. 编译器Compiler获得用户的任务计划。
  3. 编译器Compiler根据用户任务从Metastore中得到所需的Hive元数据信息。
  4. 编译器Compiler对任务进行编译,首先将HQL转换为抽象语法树,接着把抽象语法树转换成查询语句块,并将查询语句块转换为逻辑的查询计划。
  5. 把最终的计划提交到Driver。
  6. Driver将计划提交到Execution Engine,获得元数据信息,接着提交到JobTracker或者Source Manger运行该任务,该任务会直接从HDFS中读取文件并进行相应的操作。
  7. 取得并返回执行结果。

 

发布了31 篇原创文章 · 获赞 0 · 访问量 626

おすすめ

転載: blog.csdn.net/weixin_44202489/article/details/104104453