初學HIVE(一) 初步認識HIVE

2021-10-07 22:20:44 字數 2104 閱讀 2837

hive是基於hadoop的資料倉儲工具,可以將結構化的資料檔案對映為一張表,並提供類sql查詢功能。本質是將hql轉化成mapreduce程式,儲存的基礎資料在hdfs上,執行程式執行在yarn上。

hive 在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。還有乙個原因是mapreduce框架,它本身就具有較高的延遲。但同時,由於 mapreduce 的引入, hive 可以並行訪問資料,因此即使沒有索引,對於大資料量的訪問,hive 仍然可以體現出優勢。

從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。

hive

資料庫資料規模大小

使用語法

類sql:hql

sql語法

應用場景

為資料倉儲而設計,更適用於讀多寫少

用在 online 的應用,更支援實時操作

資料儲存

建立在 hadoop 之上,資料儲存在 hdfs 中

資料可儲存在塊裝置或者本地檔案系統中

資料改寫

不建議,但是自apachehive 0.14及更高版本開始支援insert、update和delete語句需要先在hive_site.xml進行配置

支援延遲情況

無索引,全表掃瞄,延遲較高;mapreduce框架也有較高延遲,但是大規模資料訪問時,其並行訪問更具優勢

可建立索引,提高效率,延遲低;當資料規模大到超過資料庫的處理能力的時候,hive的平行計算將能體現出優勢

執行引擎

由hadoop提供的mapreduce實現

自己的執行引擎

可擴充套件性

高可擴充套件的,和hadoop的可擴充套件性一致;世界上最大的hadoop 集群在 yahoo!,2023年的規模在4000 臺節點左右

擴充套件性有限,由於資料庫的acid語義嚴格限制;目前最先進的並行資料庫 oracle 在理論上的擴充套件能力也只有100臺左右

元資料報括:表名、表所屬的資料庫(預設是default)、表的擁有者、列/分割槽字段、表的型別(是否是外部表)、表的資料所在目錄等;

預設儲存在自帶的derby資料庫中,推薦使用mysql儲存metastore。

使用hdfs進行儲存,使用mapreduce進行計算。

(1)解析器(sql parser):將sql字串轉換成抽象語法樹ast,這一步一般都用第三方工具庫完成,比如antlr;對ast進行語法分析,比如表是否存在、字段是否存在、sql語義是否有誤。

(2)編譯器(physical plan):將ast編譯生成邏輯執行計畫。

(3)優化器(query optimizer):對邏輯執行計畫進行優化。

(4)執行器(execution):把邏輯執行計畫轉換成可以執行的物理計畫。對於hive來說,就是mr/spark。

hive通過給使用者提供的一系列互動介面,接收到使用者的指令(sql),使用自己的driver,結合元資料(metastore),將這些指令翻譯成mapreduce,提交到hadoop中執行,最後,將執行返回的結果輸出到使用者互動介面。

後補

因用不到,暫時不學。

google大資料三大關鍵技術(未開放原始碼):mapreduce(分布式計算框架)、bigtable(類似資料庫,提供快速查詢)、gfs(集群儲存,可通過新增機器增加容量)。以google的技術**,進行模仿開源實現了hadoop,關鍵構成:mapreduce、hbase、hdfs

1)名稱:作者的孩子給乙隻黃色大象玩具起的名字

2)官網:hadoop.apache.org

3)描述:乙個分布式系統基礎框架。使用者可以在不了解分布式底層細節的情況下,開發分布式程式。重複利用集群的威力高速運輸和儲存。

4)hadoop核心構成:分布式檔案系統hdfs,資源管理系統yarn,分布式計算框架mapreduce

HIve的初步認識(一 )

mapreduce中用於統計分析的資料大部分都是結構化的資料,如果資料量比較小的時候,直接使用mysql,當資料量大的時候,針對這個結構化的資料的統計分析,sql更為方便,mapreduce的統計分析針對結構化資料的,絕大部分都可以使用sql語句做,比mapreduce開發成本低。出現了乙個基於mr...

Hadoop 初步認識Hive

一 hive是什麼?二 hive和常用資料庫的區別 hive基於hadoop,hadoop是批處理系統,不能保證低延遲,因此,hive的查詢也不能保證低延遲。hive的工作模式是提交乙個任務,等到任務結束時被通知,而不是實時查詢。相對應的是,類似於oracle這樣的系統當執行於小資料集的時候,響應非...

hive的初步認識(二)

管理資料,不同模組的資料最好放在不同的資料庫中,同mysql中的資料庫的概念 內部表 管理表 managed table 表的建立,表的資料的刪除,都是由hive自己決定的,同mysql中的表。內部表在進行刪除的時候,元資料和原始資料都會被刪除 外部表 external table 和內部表對立面,...