文章目錄
- Hive基本概念
- 一、Hive介紹
-
- 1、什麼是Hive
- 2、Hive的優缺點
- 3、Hive的特點
- 二、Hive架構
-
- 1、架構圖
- 2、基本組成
- 3、Hive與傳統資料庫對比
Hive基本概念
一、Hive介紹
1、什麼是Hive
Hive是一個建構在Hadoop上的資料倉庫架構。最初,Hive是由Facebook開發,後來移交由Apache軟體基金會開發,并作為一個Apache開源項目。
Hive是基于Hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張資料庫表,并提供類SQL查詢功能。
從本質上講,Hive是将HQL轉換成mapreduce程式的工具。
- Hive處理的資料存儲在hdfs
- HIve分析資料底層的實作是MapReduce
- 執行程式運作在yarn上
2、Hive的優缺點
優點:
1)操作接口采用類sql文法,提供快速開發的能力
2)避免了去寫mapreduce,減少開發人員的學習成本
3)hive常用于資料分析,對實時性要求不高的場合
4)hive優勢在于處理大資料,對于處理小資料沒有優勢,因為hive的執行延遲比較高
5)hive支援使用者自定義函數,使用者可以根據自己的需求來實作自己的函數
缺點:
1.hive的HQL表達能力有限
1)疊代算法無法表達
2)資料挖掘方面不擅長,由于MapReduce資料處理流程的限制,效率更高的算法卻無法實作
2.hive的效率比較低
1)hive自動生成的MapResuce作業,通常情況下不夠智能化
2)hive調優比較困難,粒度較粗
3、Hive的特點
- Hive最大的特點是通過類SQL來分析大資料,而避免了寫MapReduce程式來分析資料,這樣使得分析資料更容易。
- 資料是存儲在HDFS上的,Hive本身并不提供資料的存儲功能,它可以使已經存儲的資料結構化。
- Hive是将資料映射成資料庫和一張張的表,庫和表的中繼資料資訊一般存在關系型資料庫上(比如MySQL)。
- 資料存儲方面:它能夠存儲很大的資料集,可以直接通路存儲在Apache HDFS或其他資料存儲系統(如Apache HBase)中的檔案。
- 資料處理方面:因為Hive語句最終會生成MapReduce任務去計算,是以不适用于實時計算的場景,它适用于離線分析。
- Hive除了支援MapReduce計算引擎,還支援Spark和Tez這兩種分布式計算引擎;
- 資料的存儲格式有多種,比如資料源是二進制格式,普通文本格式等等;
二、Hive架構
1、架構圖
2、基本組成
用戶端:Client CLI(hive shell 指令行),JDBC/ODBC(java通路hive),WEBUI(浏覽器通路hive)
中繼資料:Metastore:本質上隻是用來存儲hive中有哪些資料庫,哪些表,表的字段,,表所屬資料庫(預設是default) ,分區,表的資料所在目錄等,中繼資料預設存儲在自帶的derby資料庫中,推薦使用MySQL存儲Metastore。
驅動器:Driver
(1)解析器(SQL Parser):将SQL字元轉換成抽象文法樹AST,這一步一般使用都是第三方工具庫完成,比如antlr,對AST進行文法分析,比如表是否存在,字段是否存在,SQL語句是否有誤
(2)編譯器(Physical Plan):将AST編譯生成邏輯執行計劃
(3)優化器(Query Optimizer):對邏輯執行計劃進行優化
(4)執行器(Execution):把邏輯執行計劃轉換成可以運作的實體計劃,對于Hive來說,就是MR/Spark
存儲和執行:Hive使用HDFS進行存儲,使用MapReduce進行計算
3、Hive與傳統資料庫對比
總結:hive具有sql資料庫的外表,但應用場景完全不同,hive隻适合用來做批量資料統計分析
轉載https://blog.csdn.net/xiaoweite1/article/details/117757325