目錄
正文1.1 什麼是hive?
hive由Facebook開源用於解決海量結構化日誌的數據統計,是基於hadoop的一個數據倉庫工具,可以將結構化數據文件映射成一張表,並提供類SQL查詢功能
本質:將HQL轉化成MapReduce程序
- hive的計算存儲在hdfs上
- hive底層分析數據的方式是mapreduce
- hive執行程序運行在yarn上
1.2 hive的優缺點
1.2.1 優點
- 操作接口採用類SQL語句,開發速度快,簡單,容易上手
- 避免了寫MapReduce,減少了學習成本
- hive有執行延遲情況,不適合於實時性的數據,適合用於數據分析
- hive適合處理大數據,不適合處理小數據,因爲它有執行延遲比較高
- hive支持用戶自定義函數,靈活性高
1.2.2 缺點
- HQL表達能力有限,對於迭代式的算法無法表達,不擅長數據挖掘
- 自動生成MapReduce作業,不夠智能化,粒度較粗,不利於優化
1.3 hive的架構原理
元數據包括:表名、表所屬的數據庫、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的所在目錄等。元數據默認存儲在derby數據庫中,推薦使用MySQL的 MetaStore
1.4 hive和數據庫的比較
1.4.1 查詢語句
由於SQL被廣泛的應用於數據倉庫,因此針對hive專門設計了類SQL的HQL查詢語句,方便進行開發
1.4.2 數據存儲位置
hive是建立在hadoop的基礎上,hive的數據儲存都是在hdfs中的,而數據庫可以將數據保存在塊設備或者自己的本地文件系統中
1.4.3 數據更新
hive是針對數據倉庫應用設計的,數據倉庫的內容是讀多寫少,因此hive不建議對已有的數據進行改寫,因爲數據都是在加載的時候確定好的
1.4.4 索引
hive沒有索引,訪問滿足條件的特定值的時候,需要暴力掃描整個數據,因此訪問延遲較高
1.4.5 執行
hive大多數的查詢是通過hadoop提供的MapReduce來實現的,而數據庫通常有自己的執行引擎
1.4.6 執行延遲
一方面hive訪問數據的時候是掃描整個數據,另一方面他的執行是通過MapReduce框架執行的,該框架本身具有延遲性
1.4.7 可擴展性
hive是基於hadoop的,所以其擴展性和hadoop一致的
1.4.8 數據規模
hive建立在集羣上,並且可以利用MapReduce進行並行計算