天天看點

2021年大資料Hive(一):​​​​​​​Hive基本概念​​​​​​​Hive基本概念

​​​​​​​Hive基本概念

一、Hive介紹

1、什麼是Hive

Hive是一個建構在Hadoop上的資料倉庫架構。最初,Hive是由Facebook開發,後來移交由Apache軟體基金會開發,并作為一個Apache開源項目。

Hive是基于Hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張資料庫表,并提供類SQL查詢功能。

其本質是将SQL轉換為MapReduce的任務進行運算,底層由HDFS來提供資料的存儲,說白了hive可以了解為一個将SQL轉換為MapReduce的任務的工具,甚至更進一步可以說hive就是一個MapReduce的用戶端。

2021年大資料Hive(一):​​​​​​​Hive基本概念​​​​​​​Hive基本概念

​​​​​​​2、為什麼使用Hive

  • 直接使用hadoop所面臨的問題
  1. 人員學習成本太高
  2. 項目周期要求太短
  3. MapReduce實作複雜查詢邏輯開發難度太大
  • 為什麼要使用Hive
  1. 操作接口采用類SQL文法,提供快速開發的能力
  2. 避免了去寫MapReduce,減少開發人員的學習成本
  3. 功能擴充很友善​​​​​​​

​​​​​​​3、Hive的特點

  1. Hive最大的特點是通過類SQL來分析大資料,而避免了寫MapReduce程式來分析資料,這樣使得分析資料更容易。
  2. 資料是存儲在HDFS上的,Hive本身并不提供資料的存儲功能,它可以使已經存儲的資料結構化。
  3. Hive是将資料映射成資料庫和一張張的表,庫和表的中繼資料資訊一般存在關系型資料庫上(比如MySQL)。
  4. 資料存儲方面:它能夠存儲很大的資料集,可以直接通路存儲在Apache HDFS或其他資料存儲系統(如Apache HBase)中的檔案。
  5. 資料處理方面:因為Hive語句最終會生成MapReduce任務去計算,是以不适用于實時計算的場景,它适用于離線分析。
  6. Hive除了支援MapReduce計算引擎,還支援Spark和Tez這兩種分布式計算引擎;
  7. 資料的存儲格式有多種,比如資料源是二進制格式,普通文本格式等等;

二、Hive架構

1、架構圖

2021年大資料Hive(一):​​​​​​​Hive基本概念​​​​​​​Hive基本概念

​​​​​​​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與傳統資料庫對比

2021年大資料Hive(一):​​​​​​​Hive基本概念​​​​​​​Hive基本概念

總結:hive具有sql資料庫的外表,但應用場景完全不同,hive隻适合用來做批量資料統計分析

  • 📢部落格首頁:https://lansonli.blog.csdn.net
  • 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創,首發于 CSDN部落格🙉
  • 📢大資料系列文章會每天更新,停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨