学习笔记Hive(一)—— Hive简介
一、Hive設計思想
(了解)
Facebook用戶社交數據存儲與處理
Facebook是美國的一個社交網站 ,于2004年2月4日上線。主要創始人為美國人馬克·扎克伯格。Facebook是世界排名領先的照片分享站點。
根據Comscore咨詢公司的數據顯示,2008年5月Facebook全球獨立訪問用戶首次超過了競爭對手Myspace,前者五月獨立訪問用戶達到了1.239億,頁面瀏覽量達到500.6億。2009年12月,Facebook的獨立人次達到了4.69億,其綜合瀏覽量增長了141個百分點,在09年末達到了1930億。
1.1、Hive由來
Hive是Facebook開發的,構建于Hadoop集群之上的數據倉庫應用。2008年Facebook將Hive項目貢獻給Apache,成為開源項目。
Hive最初是由Facebook設計的,是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供簡單的類SQL查詢語言(稱為HiveQL)。
底層將HiveQL語句轉換為MapReduce任務運行,它允許熟悉SQL的用戶基于Hadoop框架分析數據。
優點:學習成本低,對于簡單的統計分析,不必開發專門的MapReduce程序,直接通過HiveQL即可實現。
二、Hive體系結構
-
CLI:Cli 啟動的時候,會同時啟動一個 Hive 副本。
-
JDBC客戶端:封裝了Thrift,java應用程序,可以通過指定的主機和端口連接到在另一個進程中運行的hive服務器
-
ODBC客戶端:ODBC驅動允許支持ODBC協議的應用程序連接到Hive。
-
WUI 接口:是通過瀏覽器訪問 Hive
-
Thrift服務器
基于socket通訊,支持跨語言。Hive Thrift服務簡化了在多編程語言中運行Hive的命令。綁定支持C++,Java,PHP,Python和Ruby語言 -
解析器
- 編譯器:完成 HQL 語句從詞法分析、語法分析、編譯、優化以及執行計劃的生成。
- 優化器是一個演化組件,當前它的規則是:列修剪,謂詞下壓。
- 執行器會順序執行所有的Job。如果Task鏈不存在依賴關系,可以采用并發執行的方式執行Job。
-
元數據庫
- Hive的數據由兩部分組成:數據文件和元數據。元數據用于存放Hive庫的基礎信息,它存儲在關系數據庫中,如 mysql、derby。元數據包括:數據庫信息、表的名字,表的列和分區及其屬性,表的屬性,表的數據所在目錄等。
-
Hadoop
- Hive 的數據文件存儲在 HDFS 中,大部分的查詢由 MapReduce 完成。(對于包含 * 的查詢,比如 select * from tbl 不會生成 MapRedcue 作業)
2.1、運行機制
- 用戶通過用戶接口連接Hive,發布Hive SQL
- Hive解析查詢并制定查詢計劃
- Hive將查詢轉換成MapReduce作業
- Hive在Hadoop上執行MapReduce作業
補充知識點:
① 用戶接口主要有三個:CLI,Client和WUI.其中最常用的是CLI,CLI啟動的時候,會同時啟動一個Hive副本。Client是Hive的客戶端,用戶連接至Hive Server。在啟動Client模式的時候,需要指出Hive Server所在節點,并且在該節點啟動Hive Server。WUI是通過瀏覽器訪問Hive。
② Hive將元數據存儲在數據庫中,如mysql、derby。Hive中的元數據包括表的名字,表的列和分區以及屬性,表的屬性(是否為外部表等),表的數據所在目錄等。
③ 解釋器、編輯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,并在隨后有MapReduce調用執行。
④ Hive的數據存儲在HDFS中,大部分的查詢、計算由MapReduce完成
三、Hive應用場景
3.1、Hive設計特點
- Hive 不支持對數據的改寫和添加,所有的數據都是在加載的時候確定的。
- 支持索引,加快數據查詢。
- 不同的存儲類型,例如,文本文件、序列化文件。
- 將元數據保存在關系數據庫中,減少了在查詢中執行語義檢查時間。
- 可以直接使用存儲在Hadoop 文件系統中的數據。
- 內置大量用戶函數UDF 來操作時間、字符串和其他的數據挖掘工具,支持用戶擴展UDF 函數來完成內置函數無法實現的操作。
- 類SQL 的查詢方式,將SQL 查詢轉換為MapReduce 的job 在Hadoop集群上執行。
- 編碼跟Hadoop同樣使用UTF-8字符集。
3.2、Hive的優勢
- 解決了傳統關系數據庫在大數據處理上的瓶頸。適合大數據的批量處理。
- 充分利用集群的CPU計算資源、存儲資源,實現并行計算。
- Hive支持標準SQL語法,免去了編寫MR程序的過程,減少了開發成本。
- 具有良好的擴展性,拓展功能方便。
3.3、Hive的劣勢
- Hive的HQL表達能力有限:有些復雜運算用HQL不易表達。
- Hive效率低:Hive自動生成MR作業,通常不夠智能。
針對Hive運行效率低下的問題,促使人們去尋找一種更快,更具交互性的分析框架。 SparkSQL 的出現則有效的提高了Sql在Hadoop 上的分析運行效率。
3.4、應用場景
適用場景
- 海量數據的存儲處理
- 數據挖掘
- 海量數據的離線分析
不適用場景
- 復雜的機器學習算法
- 復雜的科學計算
- 聯機交互式實時查詢
總結
以上是生活随笔為你收集整理的学习笔记Hive(一)—— Hive简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记Hadoop(十五)—— Map
- 下一篇: 学习笔记Hive(二)—— Hive安装