hive是乙個基於hadoop的開源資料倉儲工具,用於儲存和處理海量結構化資料。它是facebook 2023年8月開源的乙個資料倉儲框架,提供了類似於sql語法的hql(hivesql)語句作為資料訪問介面。hive的底層運算是基於mapredcue實現的。mapreduce主要用來資料清洗,將資料清洗成格式比較規範的資料優點:1)hive 使用類sql 查詢語法,最大限度的實現了和sql標準的相容,大大降低了傳統資料分析人員處理大資料的難度;
2)使用jdbc 介面/odbc介面,開發人員更易開發應用;
3)以mr 作為計算引擎、hdfs 作為儲存系統,為超大資料集設計的計算/ 擴充套件能力;
4)統一的元資料管理(derby、mysql等),並可與pig 、spark等共享; 元資料:hive表所對應的字段、屬性還有表所對應儲存的hdfs目錄。
缺點:
1)hive 的hql 表達的能力有限,比如不支援update、非等值連線、delete、insert單條等,insert單條代表的是 建立乙個檔案;
2)由於hive自動生成mapreduce 作業, hql 調優困難;
3)粒度較粗,可控性差,是因為資料是讀的時候進行型別的轉換,mysql關係型資料是在寫入的時候就檢查了資料的型別;
4)hive生成mapreduce作業,高延遲,不適合實時查詢。
1)hive和關聯式資料庫儲存檔案的系統不同,hive使用的是hadoop的hdfs,關聯式資料庫則是伺服器本地的檔案系統;
2)hive使用mapreduce做運算,與傳統資料庫相比運算資料規模要大得多;
3)關聯式資料庫都是為實時查詢的業務進行設計的,而hive則是為海量資料做資料探勘設計的,實時性很差;實時性差導致hive的應用場景和關聯式資料庫有很大的區別;
4)hive很容易擴充套件自己的儲存能力和計算能力,這個是繼承hadoop的,而關聯式資料庫在這個方面要比hive差很多。
3.1、服務端元件:
driver元件:該元件包括complier、optimizer和executor,它的作用是將hiveql(類sql)語句進行解析、編譯優化,生成執行計畫,然後呼叫底層的mapreduce計算框架。
metastore元件:元資料服務元件,這個元件訪問hive的元資料,hive的元資料儲存在關聯式資料庫裡,hive支援的關聯式資料庫有derby和mysql。作用是:客戶端連線metastore服務,metastore再去連線mysql資料庫來訪問元資料。
thrift服務:thrift是facebook開發的乙個軟體框架,它用來進行可擴充套件且跨語言的服務的開發,hive整合了該服務,能讓不同的程式語言呼叫hive的介面。
3.2、客戶端元件:
cli:命令列介面。
jdbc/odbc:hive架構的jdbc和odbc介面是建立在thrift客戶端之上。
webgui:hive客戶端提供了一種通過網頁的方式訪問hive所提供的服務。這個介面對應hive的hwi元件(hive web inte***ce),使用前要啟動hwi服務。
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的開源資料倉儲工具,用於儲存 hdfs 和處理 mapreduce 海量結構化資料。使用mapreduce計算,hdfs儲存。利用其靈活的sql語法可以幫我我們進行複雜統計分析之類的活,不需要傳統的資料人員了解mapreduce分布式計算的編寫,通過傳統的sql解決大資...
hive JDBC的url的不同寫法
jdbc hive2 dbname initfile sess var list?hive conf list hive var list sess var list 是會話變數 例如user foo password bar 的鍵 值對 hive conf list是此session的hive配置...
Hive 看懂Hive的執行計畫
一般執行計畫有兩個部分 stage dependencies 各個stage之間的依賴性 stage plan 各個stage的執行計畫 乙個stage並不一定是乙個mr,有可能是fetch operator,也有可能是move operator。乙個mr的執行計畫分為兩個部分 map operat...