Hive Learn Part01

Hive Learn 第一部分

Chap 1 基礎知識

本章重點 :html

  1. 初步瞭解 Hadoop 生態圈node

  2. 初步瞭解 Hive 架構圖mysql

1-1 Hive Preface

Hadoop 簡介 sql

  1. Hadoop 生態系統 是 處理大數據集而產生的解決方案。數據庫

  2. Hadoop 實現計算模型 MapReduce, 可將計算任務分割成多個處理單元,這個計算模型下面是一個 HDFS。apache

Hive 簡介 瀏覽器

  1. Hive 提供了一個 Hive查詢語言 HiveQL, 查詢轉換爲 MapReduce job服務器

  2. Hive 適合作數據倉庫,可離線維護海量數據,可對數據進行挖掘, 造成報告等網絡

  3. Hadoop、HDFS 設計自己限制了 Hive 所能勝任的工做, Hive 不支持記錄級別的更新、插入 或者 刪除 操做。session

Hive 運行架構

  1. 使用 HQL 做爲查詢接口;

  2. 使用 MapReduce 做爲執行層;

  3. 使用 HDFS 做爲存儲底層;

1-2 Hadoop / Mapreduce

Input -> Mappers -> Sort,Shuffle -> Reducers -> Output

1-3 Hive 系統架構

圖片描述

Chap 2 Hive 架構組件分析

本章重點 :

  1. 初步瞭解 Hive 的工做流

  2. 初步瞭解 hive 的工做組件

2-1 元數據存儲Metastore

  • Hive的數據由兩部分組成:數據文件 和 元數據

    元數據存儲,Derby只能用於一個Hive鏈接,通常存儲在MySQL。
    
    元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否爲外部表等),表的數據所在目錄等。

2-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的執行。

2-3 接口

CLI、HWI、ThriftServer

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

  2. HWI:爲Web接口,能夠用過瀏覽器訪問Hive,默認端口9999,啓動方式爲bin/hive --service hwi;

  3. ThriftServer:經過Thrift對外提供服務,默認端口是10000,啓動方式爲bin/hive --service hiveserver;

鏈接hive-metastore(如mysql)的三種方式

  1. 單用戶模式。此模式連到數據庫Derby,通常用於Unit Test。
    圖片描述

  2. 多用戶模式。經過網絡鏈接到一個數據庫中,是最常常使用到的模式。
    圖片描述

  3. 遠程服務器模式。用於非Java客戶端訪問元數據庫,在服務器端啓動MetaStoreServer,客戶端利用Thrift協議經過MetaStoreServer訪問元數據庫。
    圖片描述

2-4 其餘服務

bin/hive --service -help

  1. metastore (bin/hive --service metastore)

  2. hiveserver2(bin/hive --service hiveserver2)

HiveServer2

  1. HiveServer2是HieServer改進版本,它提供給新的ThriftAPI來處理JDBC或者ODBC客戶端,進行Kerberos身份驗證,多個客戶端併發

  2. HS2還提供了新的CLI:BeeLine,是Hive 0.11引入的新的交互式CLI,基於SQLLine,能夠做爲Hive JDBC Client 端訪問HievServer2,啓動一個beeline就是維護了一個session.

Hive下載地址

  1. cdh-hive : hive0.13.1-cdh5.3.6 jar 包 (沒用)

  2. apache-hive : Apache-Hive

Hive-Beeline 試驗成功

下載 apache-hive-0.13.1-bin, apache-hadoop2.5,配置 HADOOP_HOME, 啓動 

➜  ./apache-hive-0.13.1-bin/bin/beeline
Beeline version 0.13.1 by Apache Hive
beeline> !connect jdbc:hive2://node190:10000 hdfs 1
scan complete in 3ms
Connecting to jdbc:hive2://node190:10000
Connected to: Apache Hive (version 0.13.1-cdh5.3.6)
Driver: Hive JDBC (version 0.13.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node190:10000> select count(*) from ods_dm_shop_tmp;
+-------+
|  _c0  |
+-------+
| 1091  |
+-------+
1 row selected (24.815 seconds)
0: jdbc:hive2://node190:10000>

說明 : beeline 能夠成功,用代碼 jdbc 就能夠成功

安裝 hadoop 參考了 《Spark大數據處理》高彥傑@著, 不用配置直接綠色簡單版

Hive table

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

參考 : CSDN - Hive Server 2 調研,安裝和部署
參考 : 極豆技術博客 - Beeline鏈接hiveserver2異常
參考 : Hive學習之HiveServer2 JDBC客戶端
參考 : HiveServer2 Clients beeline
參考 : Beeline鏈接hiveserver2異常
參考 : Hive學習之HiveServer2服務端配置與啓動

other tmp

## Chap 7 HiveQL 視圖 ##
## Chap 8 HiveQL 索引 ##
## Chap 9 模式設計 ##
## Chap 10 調優 ##
## Chap 11 其餘文件格式和壓縮方法 ##
## Chap 12 開發 ##
## Chap 13 函數 ##
## Chap 14 Streaming ##
## Chap 15 自定義Hive文件和記錄格式 ##
## Chap 16 Hive 的 Thrift 服務 ##
## Chap 11 其餘文件格式和壓縮方法 ##
相關文章
相關標籤/搜索