hive系列之懵懂


大數據時代的技術hive:hive介紹



 首先咱們要知道hive究竟是作什麼的。下面這幾段文字很好的描述了hive的特性: html


  1.hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供完整的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。 mysql

  2.Hive是創建在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,能夠用來進行數據提取轉化加載(ETL),這是一種能夠存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱爲 HQL,它容許熟悉 SQL 的用戶查詢數據。同時,這個語言也容許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 沒法完成的複雜的分析工做。 web


 hive和關係數據庫不一樣:  sql


  1. hive和關係數據庫存儲文件的系統不一樣,hive使用的是hadoop的HDFS(hadoop的分佈式文件系統),關係數據庫則是服務器本地的文件系統;
  2. hive使用的計算模型是mapreduce,而關係數據庫則是本身設計的計算模型;
  3. 關係數據庫都是爲實時查詢的業務進行設計的,而hive則是爲海量數據作數據挖掘設計的,實時性不好;實時性的區別致使hive的應用場景和關係數據庫有很大的不一樣;
  4. Hive很容易擴展本身的存儲能力和計算能力,這個是繼承hadoop的,而關係數據庫在這個方面要比數據庫差不少。
  5.   HQL 中對查詢語句的解釋、優化、生成查詢計劃是由 Hive 完成  全部的數據都是存儲在 Hadoop 中 查詢計劃被轉化爲 MapReduce 任務,在 Hadoop 中執行(有些查詢沒有 MR 任務,如:select * from table)  Hadoop和Hive都是用UTF-8編碼的 數據庫


hive技術框架:



 由上圖可知,hadoop和mapreduce是hive架構的根基。Hive架構包括以下組件: 編程

CLI(command line interface)、 安全

JDBC/ODBC、Thrift Server、WEB GUI、 服務器

metastore和Driver(Complier、Optimizer和Executor), 架構

這些組件我能夠分爲兩大類:服務端組件和客戶端組件。 app

   首先講講服務端組件:

  Driver組件

該組件包括Complier、Optimizer和Executor,它的做用是將咱們寫的HiveQL(類SQL)語句進行解析、編譯優化,生成執行計劃,而後調用底層的mapreduce計算框架。

  Metastore組件

元數據服務組件,這個組件存儲hive的元數據,hive的元數據存儲在關係數據庫裏,hive支持的關係數據庫有derby、mysql。元數據對於hive十分重要,所以hive支持把metastore服務獨立出來,安裝到遠程的服務器集羣裏,從而解耦hive服務和metastore服務,保證hive運行的健壯性,這個方面的知識,我會在後面的metastore小節裏作詳細的講解。

  Thrift服務

thrift是facebook開發的一個軟件框架,它用來進行可擴展且跨語言的服務的開發,hive集成了該服務,能讓不一樣的編程語言調用hive的接口。


  1. 客戶端組件:


  CLI

command line interface,命令行接口。

  Thrift客戶端

上面的架構圖裏沒有寫上Thrift客戶端,可是hive架構的許多客戶端接口是創建在thrift客戶端之上,包括JDBC和ODBC接口。

  WEBGUI

hive客戶端提供了一種經過網頁的方式訪問hive所提供的服務。這個接口對應hive的hwi組件(hive web interface),使用前要啓動hwi服務。

  下面我着重講講metastore組件,具體以下:

  Hive的metastore組件是hive元數據集中存放地。Metastore組件包括兩個部分:metastore服務和後臺數據的存儲。後臺數據存儲的介質就是關係數據庫,例如hive默認的嵌入式磁盤數據庫derby,還有mysql數據庫。Metastore服務是創建在後臺數據存儲介質之上,而且能夠和hive服務進行交互的服務組件,默認狀況下,metastore服務和hive服務是安裝在一塊兒的,運行在同一個進程當中。我也能夠把metastore服務從hive服務裏剝離出來,metastore獨立安裝在一個集羣裏,hive遠程調用metastore服務,這樣咱們能夠把元數據這一層放到防火牆以後,客戶端訪問hive服務,就能夠鏈接到元數據這一層,從而提供了更好的管理性和安全保障。使用遠程的metastore服務,可讓metastore服務和hive服務運行在不一樣的進程裏,這樣也保證了hive的穩定性,提高了hive服務的效率。


hive流程

上面的圖能夠詳細介紹相關的流程圖 。 


Hadoop & HDFS & Hive & HBase關係

相關文章
相關標籤/搜索