{eval=Array;=+count(Array);}
您好,我是數據僧(頭條,公眾號,簡書),,一名數據相關從業者。下面講講我對您這個問題的理解。
Hive是為了解決什么問題,Hive產生的背景,我們以這個為引子,展開回答。
1,MapReduce編程的不變性,如果要處理一些數據處理的任務,會有一定的門檻,并且操作起來不方便。
2,Hdfs上的文件缺少Schema。例如:缺少 字段名,數據類型等,不方面數據進行有效管理。
3,用于解決海量結構化數據的統計問題
4,如果使用MapReduce等計算框架,學習成本比較高
5,在項目周期比較短的情況下,如果使用mapReduce或者其它的開發框架進行開發,無法滿足項目對時間的要求。
我們從具體應用場景下看看Hive處于hadoop生態系統的什么位置:
如圖:Hive以Hdfs為基本的文件存儲,以MapReduce為執行引擎。所以Hive天然就具備了Hdfs,MapReduce的特性。
我們和傳統數據庫進行對比看看Hive有哪些優勢和不足,當然這種不足是特定場景下的,也是Hive不擅長的領域。
hive的編寫語法和傳統的sql類似,核心的是hive有一套不同與sql的語法規則,最終被解釋為mapReduce任務。hive只適合在海量數據下進行批量數據統計分析。
我們在來看看hive和mapReduce之間的關系,如圖:
在來看看hive的內部結構示意圖
Driver組件:
SQL Parser:編譯器,將HQL轉換成抽象語法樹。
Query Optimizer:查詢優化器
Physical Plan,SerDes,Udfs:執行器
解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS 中,并在隨后有 MapReduce 調用執行。
Metastore組件:Hive將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等
Hive處理命令的流程示意圖:
SQL Parser將SQL語句轉換成抽象語法樹--->生成邏輯執行計劃---->查詢優化----> 物理執行計劃(SerDes序列化與反序列化,UDFs,執行引擎)
上面主要是從整體上介紹hive,已經hive相關的組件,最后總結下hive有哪些特點:
1,hive延遲高,適合高吞吐量,批量,海量數據處理。
2,語法和SQL相似,學習成本低,避免去寫復雜的MapReduce,縮短開發周期。
3,Hive支持自由的擴展集群的規模,一般不需要重啟服務。
4,Hive支持自定義函數,用戶可以根據自己的需求去定義函數。
5,良好的容錯性,節點出現問題,SQL仍然可以成功執行。
。。
整體上來說是繼承了HDFS和MapReduce的特點。
數據僧,祝愿每個在數據道路上的人越走越好。你們的關注 是我巨大的動力。歡迎大家在評論區留言,大家一起討論。
0
回答0
回答0
回答2
回答0
回答0
回答0
回答0
回答3
回答0
回答