1.1- 1.2 hive入門

1、hive是什麼數據庫

由Facebook開源用於解決海量結構化日誌的數據統計;

Hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射成一張表,
並提供類SQL查詢功能;

構建在Hadoop之上的數據倉庫:
    使用HQL做爲查詢接口;
    使用HDFS存儲;
    使用MapReduce計算;

本質是:將HQL轉化成MapReduce程序

靈活性和擴展性比較好:支持UDF,自定義存儲格式等;

適合離線數據處理;


2、爲何用hive?服務器

直接使用 MapReduce 所面臨的問題:

  一、人員學習成本過高

  二、項目週期要求過短

  三、MapReduce實現複雜查詢邏輯開發難度太大

爲何要使用 Hive:

  一、更友好的接口:操做接口採用類 SQL 的語法,提供快速開發的能力

  二、更低的學習成本:避免了寫 MapReduce,減小開發人員的學習成本

  三、更好的擴展性:可自由擴展集羣規模而無需重啓服務,還支持用戶自定義函數


3、hive特色架構

優勢:

  一、可擴展性,橫向擴展,Hive 能夠自由的擴展集羣的規模,通常狀況下不須要重啓服務 橫向擴展:經過分擔壓力的方式擴展集羣的規模 縱向擴展:一臺服務器cpu i7-6700k 4核心8線程,8核心16線程,內存64G => 128G

  二、延展性,Hive 支持自定義函數,用戶能夠根據本身的需求來實現本身的函數

  三、良好的容錯性,能夠保障即便有節點出現問題,SQL 語句仍可完成執行

缺點:

  一、Hive 不支持記錄級別的增刪改操做,可是用戶能夠經過查詢生成新表或者將查詢結 果導入到文件中(當前選擇的 hive-2.3.2 的版本支持記錄級別的插入操做)

  二、Hive 的查詢延時很嚴重,由於 MapReduce Job 的啓動過程消耗很長時間,因此不能 用在交互查詢系統中。

  三、Hive 不支持事務(由於不沒有增刪改,因此主要用來作 OLAP(聯機分析處理),而 不是 OLTP(聯機事務處理),這就是數據處理的兩大級別)。


4、hive與RDBMS對比分佈式

image

Hive 只適合用來作海量離線數 據統計分析,也就是數據倉庫。函數


5、hive架構工具

image

描述:oop

#
用戶接口/界面                     
Hive是一個數據倉庫基礎工具軟件,能夠建立用戶和HDFS之間互動。
用戶界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服務器)。
          
#
元存儲              
Hive選擇各自的數據庫服務器,用以儲存表,數據庫,列模式或元數據表,它們的數據類型和HDFS映射。
元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列分區字段、表的類型(是不是外部表)、表的數據所在目錄等;
    
默認存儲在自帶的derby數據庫中,推薦使用採用MySQL存儲Metastore;    
        
#
HiveQL處理引擎              
HiveQL相似於SQL的查詢上Metastore模式信息。這是傳統的方式進行MapReduce程序的替代品之一。
相反,使用Java編寫的MapReduce程序,能夠編寫爲MapReduce工做,並處理它的查詢。
    

#
執行引擎              
HiveQL處理引擎和MapReduce的結合部分是由Hive執行引擎。執行引擎處理查詢併產生結果和MapReduce的結果同樣。
它採用MapReduce方法。
        

#
HDFS 或 HBASE              
Hadoop的分佈式文件系統或者HBASE數據存儲技術是用於將數據存儲到文件系統。

#
驅動器:Driver
包含:解析器、編譯器、優化器、執行器;
  解析器:將SQL字符串轉換成抽象語法樹AST,這一步通常都用第三方工具庫完成,好比antlr;
         對AST進行語法分析,好比表是否存在、字段是否存在、SQL語義是否有誤(好比select中被斷定爲聚合的字段在group by中是否有出現);
  編譯器:將AST編譯生成邏輯執行計劃;
  優化器:對邏輯執行計劃進行優化;
  執行器:把邏輯執行計劃轉換成能夠運行的物理計劃。對於Hive來講,就是MR/TEZ/Spark;
相關文章
相關標籤/搜索