歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Hive運行架構及配置部署

Hive運行架構及配置部署

日期:2017/2/28 14:28:59   编辑:Linux教程

Hive 運行架構

  • 由Facebook開源,最初用於解決海量結構化的日志數據統計問題:ETL工具;

  • 構建於Hadoop的HDFS和MapReduce智商,用於管理和查詢結構化/非結構化數據的數據倉庫;
  • 設計目的是讓SQL技能良好,但Java技能較弱的分析師可以查詢海量數據:
  • 使用HQL作為查詢接口;
  • 使用HDFS作為存儲底層;
  • 使用MapReduce作為執行層;
  • 2008年facebook把Hive項目貢獻給Apache;

基於Hadoop集群的Hive安裝 http://www.linuxidc.com/Linux/2013-07/87952.htm

Hive內表和外表的區別 http://www.linuxidc.com/Linux/2013-07/87313.htm

Hadoop + Hive + Map +reduce 集群安裝部署 http://www.linuxidc.com/Linux/2013-07/86959.htm

Hive本地獨立模式安裝 http://www.linuxidc.com/Linux/2013-06/86104.htm

Hive學習之WordCount單詞統計 http://www.linuxidc.com/Linux/2013-04/82874.htm

1、Hive的缺點

Hive的HQL表達能力有限:有些復雜運算用HQL不易表達;

Hive效率低:Hive自動生成MR作業,通常不夠智能;HQL調優困難,粒度較粗;可控性差;

2、Hive系統架構

1) 元數據存儲(Metastore):Hive的數據由兩部分組成:數據文件和元數據;

元數據存儲,Derby只能用於一個Hive連接,一般存儲在MySQL。

2)驅動(Driver):編譯器、優化器、執行器;

用戶通過下面的接口提交Hive給Driver,由Driver進行HQL語句解析,此時從Metastore中獲取表的信息,先生成邏輯計劃,再生成物理計劃,再由Executor生成Job交給Hadoop運行,然後由Driver將結果返回給用戶。

編譯器(Hive的核心):1,語義解析器(ParseDriver),將查詢字符串轉換成解析樹表達式;2,語法解析器(SemanticAnalyzer),將解析樹轉換成基於語句塊的內部查詢表達式;3,邏輯計劃生成器(Logical Plan Generator),將內部查詢表達式轉換為邏輯計劃,這些計劃由邏輯操作樹組成,操作符是Hive的最小處理單元,每個操作符處理代表一道HDFS操作或者是MR作業;4,查詢計劃生成器(QueryPlan Generator),將邏輯計劃轉化成物理計劃(MR Job)。

優化器:優化器是一個演化組件,當前它的規則是:列修剪,謂詞下壓。

執行器:編譯器將操作樹切分成一個Job鏈(DAG),執行器會順序執行其中所有的Job;如果Task鏈不存在依賴關系,可以采用並發執行的方式進行Job的執行。

3)接口:CLI(Common LineInterface)、HWI(Hive WebInterface)、ThriftServer;

CLI:為命令行工具,默認服務。bin/hive或bin/hive--service cli;

HWI:為Web接口,可以用過浏覽器訪問Hive,默認端口9999,啟動方式為bin/hive --service hwi;

ThriftServer:通過Thrift對外提供服務,默認端口是10000,啟動方式為bin/hive --service hiveserver;

4)其他服務(bin/hive --service -help):metastore(bin/hive --service metastore)、hiveserver2(bin/hive --service hiveserver2),HiveServer2是HieServer改進版本,它提供給新的ThriftAPI來處理JDBC或者ODBC客戶端,進行Kerberos身份驗證,多個客戶端並發,HS2還提供了新的CLI:BeeLine,是Hive 0.11引入的新的交互式CLI,基於SQLLine,可以作為Hive JDBC Client 端訪問HievServer2,啟動一個beeline就是維護了一個session.

5)Hadoop:用HDFS進行存儲,用MapReduce進行計算;

表中的一個Partition對應表下的一個子目錄,每一個Bucket對應一個文件;Hive的默認數據倉庫目錄是/user/hive/warehouse,在hive-site.xml中由hive.metastore.warehouse.dir項定義;

3、Hive的運行過程

由客戶端提供查詢語句,提交給Hive,Hive再交給Driver處理(1,Compiler先編譯,編譯時要從Metastore中獲取元數據信息,生成邏輯計劃;2,生成物理計劃;3,由Driver進行優化;4,Executor執行時對物理計劃再進行分解成Job,並將這些Job提交給MR的JobTracker運行,提交Job的同時,還需要提取元數據信息關聯具體的數據,這些元數據信息送到NN),JT拆分成各個Task進行計算,並將結果返回或寫入HDFS。

4、Hive的數據模型

Database

Table

Partition

Bucket

File(文件格式:TextFile,RCFile,),

數據類型,Numeric(Tinyint,Smallint,Bigint,Float,Double,Decimal(Hive 0.13.0可以自定義精度進行擴展)),Date/Time(TIMESTAMP,DATE(0.12.0支持)),String(STRING,VARCHAR(0.12),CHAR(0.13)),Misc(BOLLEAN,BINARY),Complex(ARRAY、MAP、STRUCT、UNIONTYPE)

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-08/105508p2.htm

Copyright © Linux教程網 All Rights Reserved