大数据技术原理与应用学习笔记(九)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(九)
- 本系列歷史文章
- 數(shù)據(jù)倉庫Hive
- 數(shù)據(jù)倉庫概念
- Hive簡介
- Hive系統(tǒng)架構(gòu)
- 用戶接口模塊
- Hive HA基本原理——(高可用性)
- Hive的工作原理
- 由SQL轉(zhuǎn)換為MapReduce的工作原理
- Impala——開源大數(shù)據(jù)分析引擎
- Impala簡介
- Impala架構(gòu)
- Impalad
- State Store
- CLI——執(zhí)行查詢的命令行工具
- Impala執(zhí)行過程
- Hive與Impala的比較
- Hive編程實(shí)踐
本系列歷史文章
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(一)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(二)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(三)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(四)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(五)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(六)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(七)
大數(shù)據(jù)技術(shù)原理與應(yīng)用學(xué)習(xí)筆記(八)
數(shù)據(jù)倉庫Hive
數(shù)據(jù)倉庫概念
數(shù)據(jù)倉庫: 數(shù)據(jù)倉庫是一個面向主題的集成的相對穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,用來支撐管理決策。
數(shù)據(jù)倉庫的體系結(jié)構(gòu)包括:數(shù)據(jù)源、數(shù)據(jù)存儲和管理、分析、挖掘引擎及應(yīng)用。
傳統(tǒng)數(shù)據(jù)倉庫面臨的挑戰(zhàn):
- 無法滿足快速增長的海量數(shù)據(jù)存儲需求
- 無法有效處理不同類型的數(shù)據(jù)
- 計(jì)算和處理能力不足
Hive簡介
Hive——構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫工具。
Hive本身并不存儲處理數(shù)據(jù)
- 依賴于HDFS存儲
- 依賴于MapReduce處理
Hive采用HiveQL語言
Hive兩方面特性:
- 采用批處理方式處理海量數(shù)據(jù)
- Hive提供了一系列對數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換、加載(ETL)的工具
Hive與其他組件的關(guān)系:
- Pig可替代Hive用于數(shù)據(jù)倉庫的ETL環(huán)節(jié)
- Hive主要用于數(shù)據(jù)倉庫海量數(shù)據(jù)的批處理分析
- HBase支持實(shí)時數(shù)據(jù)訪問,與Hive互補(bǔ)
Hive與傳統(tǒng)數(shù)據(jù)庫的對比:
如下表:
| 數(shù)據(jù)存儲 | HDFS | 本地文件系統(tǒng) |
| 數(shù)據(jù)插入 | 支持批量導(dǎo)入 | 支持單條和批量導(dǎo)入 |
| 數(shù)據(jù)更新 | 不支持 | 支持 |
| 索引 | 支持 | 支持 |
| 分區(qū) | 支持 | 支持 |
| 執(zhí)行引擎 | MapReduce、Tez、Spark | 使用自身引擎 |
| 執(zhí)行延遲 | 高 | 低 |
| 擴(kuò)展性 | 好 | 有限 |
Hive系統(tǒng)架構(gòu)
用戶接口模塊
用戶接口模塊主要包括:
- CLI——命令行
- HWI——Hive的Web接口
- JDBC和ODBC——開放數(shù)據(jù)庫連接接口
- Thrift Server——基于Thrift架構(gòu)開發(fā)的接口
包含編譯器、優(yōu)化器、執(zhí)行器。負(fù)責(zé)把HiveQL語句轉(zhuǎn)換成MapReduce作業(yè)。
獨(dú)立的關(guān)系型數(shù)據(jù)庫。
Hive HA基本原理——(高可用性)
Hive HA基本原理如圖所示:
在Hive HA中,在Hadoop集群上構(gòu)建的數(shù)據(jù)倉庫是由多個Hive實(shí)例進(jìn)行管理的,這些Hive實(shí)例被納入一個資源池中,并由HAProxy提供一個統(tǒng)一的對外接口。客戶端的查詢請求首先訪問HAProxy,由HAProxy對訪問請求進(jìn)行轉(zhuǎn)發(fā)。HAProxy收到請求后,會輪詢資源池里可用的Hive實(shí)例,執(zhí)行邏輯可用性測試。如果某個Hive實(shí)例邏輯可用,就會把客戶端的訪問請求轉(zhuǎn)發(fā)到該Hive實(shí)例,如果該Hive實(shí)例邏輯不可用,就把它放入黑名單,并繼續(xù)從資源池取出下一個Hive實(shí)例進(jìn)行邏輯可用性測試,如果重啟成功,就再次放入資源池中。
Hive的工作原理
由SQL轉(zhuǎn)換為MapReduce的工作原理
- Input(SQL)轉(zhuǎn)換為抽象語法樹(AST)
- AST轉(zhuǎn)換成查詢塊(Query Block)
- 將Query Block轉(zhuǎn)換成邏輯查詢計(jì)劃
- 重寫邏輯查詢計(jì)劃,合并優(yōu)化等,減少M(fèi)apReduce的任務(wù)數(shù)量
- 轉(zhuǎn)換成MapReduce作業(yè)
- 優(yōu)化生成最終版的執(zhí)行計(jì)劃。
- 執(zhí)行并輸出
Impala——開源大數(shù)據(jù)分析引擎
Impala簡介
Impala是由Cloudera公司開發(fā)的新型查詢系統(tǒng)。Impala的目的不在于替換現(xiàn)有的MapReduce工具,而是提供一個統(tǒng)一的平臺用于實(shí)時查詢。
- 與Hive類似,Impala也可以直接與HDFS和HBase進(jìn)行交互。
Hive底層執(zhí)行使用的是MapReduce,所以主要用于處理長時間運(yùn)行的批處理任務(wù),例如批量提取、轉(zhuǎn)化、加載類型的任務(wù)。 - Impala通過與商用并行關(guān)系數(shù)據(jù)庫中類似的分布式查詢引擎,可以直接從HDFS或者HBase中用SQL語句查詢數(shù)據(jù),從而大大降低了延遲,主要用于實(shí)時查詢。
- Impala和Hive采用相同的SQL語法、ODBC 驅(qū)動程序和用戶接口。
Impala架構(gòu)
Impala主要由3部分構(gòu)成:Impalad、State Store、CLI
Impalad
- Query Planner
- Query Coordinator
- Query Exec Engine
作用:
- 協(xié)調(diào)Client提交的查詢的執(zhí)行
- 給其他Impalad分配任務(wù)
- 收集其他Impalad執(zhí)行結(jié)果并匯總
State Store
創(chuàng)建一個State Stored進(jìn)程,負(fù)責(zé)收集分布在集群中各個Impalad進(jìn)程的資源信息用于查詢調(diào)度。
CLI——執(zhí)行查詢的命令行工具
Notes:
- Impala元數(shù)據(jù)直接存儲在Hive中
- 與HIve相同的元數(shù)據(jù),相同的SQL,相同的ODBC驅(qū)動程序和用戶接口
- 目的:可以在Hadoop統(tǒng)一部署Hive/Impala使同時滿足批處理和實(shí)時處理
Impala執(zhí)行過程
執(zhí)行過程可簡略記為:
- 注冊和訂閱
- 提交查詢
- 獲取元數(shù)據(jù)與數(shù)據(jù)地址
- 分發(fā)查詢?nèi)蝿?wù)
- 匯聚結(jié)果
- 返回結(jié)果
Hive與Impala的比較
不同點(diǎn):
- Hive適合長時間批處理查詢分析,而Impala適合實(shí)時交互式SQL查詢;
- Hive依賴于MapReduce,而Impala把執(zhí)行計(jì)劃表現(xiàn)為完整的執(zhí)行計(jì)劃樹;
- Hive內(nèi)存不夠時,利用外存,而Impala在內(nèi)存不夠時,也不會用外存(適合小規(guī)模);
相同點(diǎn):
- Hive與Impala使用相同的存儲數(shù)據(jù)池,支持存入HDFS、HBase
- Hive與Impala使用相同的元數(shù)據(jù)
- Hive與Impala中對SQL解釋處理較為相似(都是通過詞法分析生成執(zhí)行計(jì)劃)
在實(shí)際應(yīng)用中,由于Hive和Impala的不同特性,可以先由Hive進(jìn)行數(shù)據(jù)轉(zhuǎn)換,在用Impala進(jìn)行數(shù)據(jù)分析。
Hive編程實(shí)踐
關(guān)于Hive的編程實(shí)踐可參考廈大數(shù)據(jù)庫博客:基于Hadoop的數(shù)據(jù)倉庫Hive 學(xué)習(xí)指南
總結(jié)
以上是生活随笔為你收集整理的大数据技术原理与应用学习笔记(九)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spyder kernel died 错
- 下一篇: jQuery使用(八):运动方法