、ハイブはじめに
ロゴApacheの公式ウェブサイトでは、半分のHadoop象の頭、半分蜂の体を与えられたが、また、それの記号が入力されているHadoopの、ハハ、純粋に個人的な理解に基づいています。
HadoopのHiveのが基づいているデータウェアハウス・ツールは、実行するのMapReduceタスクにSQL文を変換することができます。データ抽出、変換するために使用することができ、ロード(ETL)、データストレージのHadoopの大規模解析に格納、クエリとメカニズムです。
ハイブクラスは、単純なSQLクエリ言語を定義し、SQLに精通しているユーザーがデータを照会することができますHiveQL、なります。
HiveSQL:ハイブ、SQL文法のクラスによる分散コンピューティングのために。非常に類似した彼らとHQLとSQL、MapReduceの、ハイブとしてHQLを実行する意志の実行中にハイブ変換は、それが実際にHadoop、MapReduceのに基づく分散コンピューティングフレームワークであり、まだ根本的なプログラムなので、それはまだ本質的です種は、ビッグデータ分析ツールをオフライン。
二、ハイブのアプリケーションシナリオ
ハイブは、Hadoopの静的(オフライン)バッチ処理の上に構築され、Hadoopのは、通常、高レイテンシーを持っており、ジョブの投入とスケジューリング時のオーバーヘッドの多くを必要とします。したがって、ハイブは、大規模なデータを低遅延かつ高速なクエリを達成することはできません。
ハイブクエリ操作プロセスは、厳密にHadoopのMapReduceジョブの実行モデルを遵守し、ハイブは通訳を通じてMapReduceジョブのためのHadoopクラスタに提出し、ユーザーのHiveQL文を変換し、Hadoopの監視プロセスは、ジョブを実行し、ユーザにジョブの実行結果に戻ります。ハイブは、オンライン・トランザクション処理のために設計されていない、ハイブは、行レベルの操作に基づいて、リアルタイムのクエリと更新データを提供していません。ハイブ最大限に活用シナリオ:大規模データなどのWebログ解析などのオフラインバッチジョブ、。
三、ハイブアーキテクチャ
CLI、JDBCおよびWUI:3つのユーザー・インターフェースがあります。
①CLI、最も一般的なモード:実際には、通常>ハイブコマンド操作は、ユーザーインターフェイスはCLIです
②JDBCは、Javaコードによって、あなたはhiveserverを開始する必要があり、その後、接続作業
MetaStroeメタベース
例えばMySQLのダービーとしてデータベースに格納されたハイブメタデータ。ハイブメタデータは、テーブルの名前、およびパーティションのリストとそのプロパティ、プロパティ・シートを含む(か外部表、など)、ディレクトリ、および他のデータテーブル。
インタプリタ(コンパイラ)、オプティマイザ(オプティマイザ)、アクチュエータ(執行)成分
これらの三つの成分:字句解析からHQL文の解析、コンパイル、最適化、およびクエリプランを生成します。生成されたクエリプランは、HDFS、MapReduceの中に格納され、その後の実行のために呼ばれています
Hadoopの
Hadoopのハイブに格納されたデータは、クエリのほとんど、計算のMapReduceによって行わ
四、ハイブ原理分析
ハイブ(HQL根本的な実行の原則により解析図):
①クライアントは、HQL書(提出左側のUI部分を)
②DriverHQLコンパイラ(に転送コンパイラ成分解析、HQL字句解析)。この場合、コンパイラは、エンドテーブル内のどのオペレーティングHQL文を知っています。
③基礎となるクエリのメタデータデータベース(MetaStroeテーブル情報を探し)(デフォルトのDerbyデータベースは、その後のMySQLで置き換えられます)
④返されたメタ情報
⑤CompilerコンパイラはHQL文の解析プログラムを提出します
⑥実行プロセス
i.executor执行器收到方案后,执行方案,在此需要注意:执行器在此执行方案时,会进行判断:如果不涉及MR组件,比如为表添加分区信息,简单的查询操作等,此时会直接与元数据库进行交互,然后去HDFS直接寻找具体数据;如果方案需要转换成MRJob,则会将job提交给Hadoop的JobTracker(后续为Yarn)
ii.MR Job执行完成,并且将结果写入HDFS中
iii.执行器与HDFS交互,获取结果文件信息
⑦如果客户端提交的hql语句是带有查询结果性,则会发生7~8~9,完成结果的查询。