hive jdbc驅動 Hive介紹和原理分析

2021-10-11 09:00:40 字數 2601 閱讀 5121

hive是乙個基於hadoop的開源資料倉儲工具,用於儲存(hdfs)處理(mapreduce)海量結構化資料。使用mapreduce計算,hdfs儲存。

利用其靈活的sql語法可以幫我我們進行複雜統計分析之類的活,不需要傳統的資料人員了解mapreduce分布式計算的編寫,通過傳統的sql解決大資料的計算問題,降低難度。

1.使用的檔案系統不同,hive使用的是hadoop的hdfs(hadoop的分布式檔案系統),關聯式資料庫則是伺服器本地的檔案系統;

2.hive使用mapreduce做運算,比傳統資料庫相比運算資料規模要大得多;

3.關聯式資料庫都是為實時查詢的業務進行設計的,而hive則是為海量資料做資料探勘設計的,實時性很差;實時性差導致hive的應用場景和關聯式資料庫有很大的區別;

4.hive很容易擴充套件自己的儲存能力和計算能力,這個是繼承hadoop的,而關聯式資料庫在這個方面要比hive差很多。

hive與傳統資料庫比較圖

優點:

1)hive 使用類sql 查詢語法, 最大限度的實現了和sql標準的相容,大大降低了傳統資料分析人員處理大資料的難度

2)使用jdbc 介面/odbc介面,開發人員更易開發應用;

3)以mr 作為計算引擎、hdfs 作為儲存系統,為超大資料集設計的計算/ 擴充套件能力;

4)統一的元資料管理(derby、mysql等)表存在哪 資料庫在哪 和sql相關的物件都儲存在哪 儲存在哪 誰建立的 啥時候修改,並可與pig 、spark等共享;

弱點:

1)hive 的 hql 表達的能力有限,比如不支援update、非等值連線、delete、insert單條等;

2)由於hive自動生成mapreduce 作業, hql 調優困難;

3)粒度較粗,可控性差,是因為資料是讀的時候進行型別的轉換,mysql關係型資料是在寫入的時候就檢查了資料的型別。

4)hive生成mapreduce(shuffle失誤)作業,高延遲,不適合實時查詢。hive 最害怕的就是資料傾斜問題 --> oom

hive元件有服務端和客戶端:

服務端元件:

driver元件:該元件包括complier(編譯器)、optimizer(優化器)和executor(執行器),它的作用是將hiveql(類sql)語句進行解析、編譯優化,生成執行計畫,然後呼叫底層的mapreduce計算框架。

metastore元件:元資料服務元件,這個元件訪問hive的元資料,hive的元資料儲存在關聯式資料庫裡,hive支援的關聯式資料庫有derby和mysql。

作用是:客戶端連線metastore服務,metastore再去連線mysql資料庫來訪問元資料。

元資料:hive表所對應的字段、屬性還有表所對應儲存的hdfs目錄。

客戶端元件:

cli:command line inte***ce,命令列介面。

jdbc/odbc:hive架構的jdbc和odbc介面是建立在thrift客戶端之上。

webgui:hive客戶端提供了一種通過網頁的方式訪問hive所提供的服務。這個介面對應hive的hwi元件(hive web inte***ce),使用前要啟動hwi服務。

thrift [θrɪft] 服務:thrift是facebook開發的乙個軟體框架,它用來進行可擴充套件且跨語言的服務的開發,hive整合了該服務,能讓不同的程式語言呼叫hive的介面。

1)execute query:hive介面如命令列或web ui將查詢傳送到driver(任何資料庫驅動程式如jdbc、odbc,等等)來執行。

2)get plan:driver根據查詢編譯器解析query語句,驗證query語句的語法,查詢計畫或者查詢條件。

3)get metadata:編譯器將元資料請求傳送給metastore(資料庫)。

4)send metadata:metastore將元資料作為響應傳送給編譯器。

5)send plan:編譯器檢查要求和重新傳送driver的計畫。到這裡,查詢的解析和編譯完成。

6)execute plan:driver將執行計畫傳送到執行引擎。

6.1)execute job:hadoop內部執行的是mapreduce工作過程,任務執行引擎傳送乙個任務到資源管理節點(resourcemanager),資源管理器分配該任務到任務節點,由任務節點上開始執行mapreduce任務。

6.2)metadata ops:在執行引擎傳送任務的同時,對hive的元資料進行相應操作。

7)fetch result: 執行引擎接收資料節點(data node)的結果。

8)send results: 執行引擎傳送這些合成值到driver。

9)send results:driver將結果傳送到hive介面。

hive jdbc驅動 Hive的介紹與原理分析

hive是乙個基於hadoop的開源資料倉儲工具,用於儲存和處理海量結構化資料。它是facebook 2008年8月開源的乙個資料倉儲框架,提供了類似於sql語法的hql hivesql 語句作為資料訪問介面。hive的底層運算是基於mapredcue實現的。mapreduce主要用來資料清洗,將資...

WinCE中nandflash驅動開發介紹

這裡介紹nandflash驅動,在wince中,有專門針對flash儲存裝置驅動的支援,一般傳統採用fal fmd的架構。在wince最新的版本中,也就是windows ce6.0 r2中,還支援mdd pdd的架構。在fal fmd架構中,fal層由微軟來實現,我們需要實現fmd層的相關介面函式。...

WinCE中nandflash驅動開發介紹

這裡介紹nandflash驅動,在wince中,有專門針對flash儲存裝置驅動的支援,一般傳統採用fal fmd的架構。在wince最新的版本中,也就是windows ce6.0 r2中,還支援mdd pdd的架構。在fal fmd架構中,fal層由微軟來實現,我們需要實現fmd層的相關介面函式。...