Hive基本概念
一、Hive介紹
1、什麼是Hive
Hive是一個建構在Hadoop上的資料倉庫架構。最初,Hive是由Facebook開發,後來移交由Apache軟體基金會開發,并作為一個Apache開源項目。
Hive是基于Hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張資料庫表,并提供類SQL查詢功能。
其本質是将SQL轉換為MapReduce的任務進行運算,底層由HDFS來提供資料的存儲,說白了hive可以了解為一個将SQL轉換為MapReduce的任務的工具,甚至更進一步可以說hive就是一個MapReduce的用戶端。
2、為什麼使用Hive
- 直接使用hadoop所面臨的問題
- 人員學習成本太高
- 項目周期要求太短
- MapReduce實作複雜查詢邏輯開發難度太大
- 為什麼要使用Hive
- 操作接口采用類SQL文法,提供快速開發的能力
- 避免了去寫MapReduce,減少開發人員的學習成本
- 功能擴充很友善
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://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN部落格🙉
- 📢大資料系列文章會每天更新,停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨