Hive、HBase、Impala、HDFS是Hadoop生態(tài)體系中常用的開(kāi)源產(chǎn)品,各個(gè)產(chǎn)品間是一個(gè)什么樣的關(guān)系,許多人都搞不清楚,本文將進(jìn)行研究分析。
Hadoop生態(tài)
在了解Hive、HBase、Impala、和HDFS之前,先熟悉一下Hadoop的生態(tài)。
Apache Hadoop軟件庫(kù)是一個(gè)框架,允許使用簡(jiǎn)單的編程模型在計(jì)算機(jī)集群之間對(duì)大型數(shù)據(jù)集進(jìn)行分布式處理。它旨在從單個(gè)服務(wù)器擴(kuò)展到數(shù)千臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)都提供本地計(jì)算和存儲(chǔ)。庫(kù)本身不是依靠硬件來(lái)提供高可用性,而是旨在檢測(cè)和處理應(yīng)用程序?qū)拥墓收?,因此在?jì)算機(jī)群集(每臺(tái)計(jì)算機(jī)都可能容易出現(xiàn)故障)之上提供高可用性服務(wù)。
適用場(chǎng)景:離線數(shù)據(jù)開(kāi)發(fā)與存儲(chǔ)
數(shù)據(jù)獲?。―ata Ingestion) | Sqoop、Flume |
---|---|
Hadoop 核心(Hadoop Core) |
|
數(shù)據(jù)分析(Data Analysis) | Pig、Impala、Hive |
工作流系統(tǒng)(Workflow system) | Oozie |
NoSQL | HBase |
HDFS
HDFS的英文全稱是Hadoop Distributed File System,即Hadoop分布式文件系統(tǒng),它是Hadoop的核心子項(xiàng)目。HDFS被設(shè)計(jì)成適合運(yùn)行在通用和廉價(jià)硬件上的分布式文件系統(tǒng)。HDFS是為了處理大型數(shù)據(jù)集而設(shè)計(jì)的,主要是為達(dá)到高的數(shù)據(jù)吞吐量而設(shè)計(jì)的,延遲時(shí)間通常是在分鐘乃至小時(shí)級(jí)別。
適用場(chǎng)景:作為數(shù)據(jù)的底層存儲(chǔ),以高可用的方式存儲(chǔ)大文件
優(yōu)勢(shì) | 劣勢(shì)or局限性 |
---|---|
|
|
MapReduce
MapReduce是Google公司的核心計(jì)算模型,它將運(yùn)行于大規(guī)模集群上的復(fù)雜并行計(jì)算過(guò)程高度地抽象為兩個(gè)函數(shù):Map和Reduce。Hadoop是Doug Cutting受到Google發(fā)表的關(guān)于MapReduce的論文的啟發(fā)而開(kāi)發(fā)出來(lái)的。Hadoop中的MapReduce是一個(gè)使用簡(jiǎn)單的軟件框架,基于它寫出來(lái)的應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大型集群上,并能可靠容錯(cuò)地并行處理TB級(jí)別的數(shù)據(jù)集。
適用場(chǎng)景:對(duì)響應(yīng)時(shí)間要求低的大數(shù)據(jù)量計(jì)算
優(yōu)勢(shì) | 劣勢(shì)or局限性 |
---|---|
|
|
Hive
Hive 是一個(gè)構(gòu)建于 Hadoop 頂層的數(shù)據(jù)倉(cāng)庫(kù)工具,支持對(duì)接查詢存儲(chǔ)在HDFS、HBase中文件,具有良好的可擴(kuò)展性。某種程度上可以看作是用戶編程接口,本身不存儲(chǔ)和處理數(shù)據(jù)。實(shí)際的數(shù)據(jù)保存在HDFS文件中,真正的計(jì)算和執(zhí)行則由MapReduce完成(也可以通過(guò)?Apache Tez、Apache Spark執(zhí)行查詢)。Hive 定義了簡(jiǎn)單的類似 SQL 的查詢語(yǔ)言——Hive SQL,用戶通過(guò)編寫的 Hive SQL 語(yǔ)句運(yùn)行 MapReduce 任務(wù),其許多語(yǔ)法兼容Oracle、DB2、MySQL、SQL Server等,所以用戶在某些場(chǎng)景下用戶可以快速將構(gòu)建在關(guān)系數(shù)據(jù)庫(kù)上的數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用程序移植到 Hadoop 平臺(tái)上。
關(guān)于分區(qū):Hive Select查詢時(shí),一般會(huì)掃描整個(gè)表內(nèi)容。隨著系統(tǒng)運(yùn)行的時(shí)間越來(lái)越長(zhǎng),表的數(shù)據(jù)量越來(lái)越大,而hive查詢做全表掃描,會(huì)消耗很多時(shí)間,降低效率。而有時(shí)候,我們需求的數(shù)據(jù)只需要掃描表中的一部分?jǐn)?shù)據(jù)即可。這樣,hive在建表時(shí)引入了分區(qū)(partition)概念。即在建表時(shí),將整個(gè)表存儲(chǔ)在不同的子目錄中,每一個(gè)子目錄對(duì)應(yīng)一個(gè)分區(qū)。在查詢時(shí),我們就可以指定分區(qū)查詢,避免了hive做全表掃描,從而提高查詢效率。
原理:Hive是建立在Hadoop體系架構(gòu)上的一層SQL抽象,使得數(shù)據(jù)相關(guān)人員使用他們最為熟悉的SQL語(yǔ)言就可以進(jìn)行海量數(shù)據(jù)的處理、分析和統(tǒng)計(jì)工作,而不是必須掌握J(rèn)ava等編程語(yǔ)言和具備開(kāi)發(fā)MapReduce程序的能力。Hive SQL實(shí)際上先被SQL解析器進(jìn)行解析然后被Hive框架解析成一個(gè)MapReduce可執(zhí)行計(jì)劃,并按照該計(jì)劃生成MapReduce任務(wù)后交給Hadoop集群處理的。
注意:Hive 并不是一個(gè)關(guān)系數(shù)據(jù)庫(kù)。Hive 中沒(méi)有定義專門的數(shù)據(jù)格式,需要由用戶指定三個(gè)屬性:列分隔符、行分隔符 、讀取文件數(shù)據(jù)的方法(Hive 中默認(rèn)有三個(gè)文件格式 TextFile,SequenceFile 以及 ORCFile)。Hive 在查詢數(shù)據(jù)的時(shí)候,由于沒(méi)有索引,需要掃描整個(gè)表Hive SQL,因此延遲較高;另外一個(gè)導(dǎo)致 Hive 執(zhí)行延遲高的因素是 MapReduce 框架,由于 MapReduce 本身具有較高的延遲,因此在利用 MapReduce 執(zhí)行 Hive 查詢時(shí),也會(huì)有較高的延遲(相對(duì)的,數(shù)據(jù)庫(kù)的執(zhí)行延遲較低,當(dāng)然,這個(gè)低是有條件的,即數(shù)據(jù)規(guī)模較小,當(dāng)數(shù)據(jù)規(guī)模大到超過(guò)數(shù)據(jù)庫(kù)的處理能力的時(shí)候,Hive 的并行計(jì)算顯然能體現(xiàn)出優(yōu)勢(shì))。
適用場(chǎng)景:長(zhǎng)時(shí)間的批處理查詢分析
優(yōu)勢(shì) | 劣勢(shì)or局限性 |
---|---|
高吞吐,可以很好地處理不變的大規(guī)模數(shù)據(jù)集 |
高延遲,延遲時(shí)間通常是在分鐘乃至小時(shí)級(jí)別 Hive不支持行級(jí)數(shù)據(jù)插入、更新和刪除,也不支持事務(wù)等(原因是其底層基于HDFS) Hive不能提供數(shù)據(jù)排序和查詢緩存功能,也不提供在線事務(wù)處理,更不提供實(shí)時(shí)的查詢和記錄級(jí)的更新 |
Hbase
HBase是一個(gè)開(kāi)源的、分布式的、持久的、強(qiáng)一致性的數(shù)據(jù)存儲(chǔ)系統(tǒng)(NoSQL數(shù)據(jù)庫(kù)),可以在HDFS或Alluxio(VDFS)之上運(yùn)行,具有近似最優(yōu)的寫性能和出色的讀性能,主要適用于海量明細(xì)數(shù)據(jù)(十億、百億)的隨機(jī)實(shí)時(shí)查詢,如日志明細(xì)、交易清單、軌跡行為等,此開(kāi)源項(xiàng)目的目標(biāo)是在商品硬件集群上托管非常大的表——數(shù)十億行X數(shù)百萬(wàn)列。
- HBase不是關(guān)系型數(shù)據(jù)庫(kù),而是一個(gè)在HDFS上開(kāi)發(fā)的面向列的分布式數(shù)據(jù)庫(kù),不支持SQL。?
- HBase為查詢而生的,它通過(guò)組織起節(jié)點(diǎn)內(nèi)所有機(jī)器的內(nèi)存,提供一個(gè)超大的內(nèi)存Hash表?。
- HBase是物理表,不是邏輯表,提供一個(gè)超大的內(nèi)存hash表,搜索引擎通過(guò)它來(lái)存儲(chǔ)索引,方便查詢操作。?
- HBase是列存儲(chǔ)。?
對(duì)于那些有低延時(shí)要求的應(yīng)用程序,HBase是一個(gè)好的選擇,尤其適用于對(duì)海量數(shù)據(jù)集進(jìn)行訪問(wèn)并要求毫秒級(jí)響應(yīng)時(shí)間的情況,但HBase的設(shè)計(jì)是對(duì)單行或者少量數(shù)據(jù)集的訪問(wèn),對(duì)HBase的訪問(wèn)必須提供主鍵或者主鍵范圍。訪問(wèn)接口:Hive、Pig、REST Gateway、HBase Shell、Native Java API、Thrift Gateway
適用場(chǎng)景:對(duì)具有高吞吐量和低輸入/輸出延遲的大型數(shù)據(jù)集進(jìn)行快速讀寫操作
優(yōu)勢(shì) | 劣勢(shì)or局限性 |
---|---|
|
|
Impala
Impala可以直接對(duì)接存儲(chǔ)在HDFS、HBase?或亞馬遜S3中的Hadoop數(shù)據(jù),提供快速、交互式的 SQL 查詢,提高 APACHE Hadoop 上的SQL查詢性能。Impala 使用與 Hive 相同的元數(shù)據(jù)、SQL 語(yǔ)法(Hive SQL)、ODBC 驅(qū)動(dòng)程序和用戶界面(Hue Beeswax),因此,Hive用戶只需很少的設(shè)置成本,即可使用Impala。
原理:為了避免延遲,Impala繞過(guò)MapReduce,通過(guò)一個(gè)專門的分布式查詢引擎直接訪問(wèn)數(shù)據(jù),該引擎與商業(yè)并行RDBMS中的查詢引擎非常相似。結(jié)果是性能比 Hive 快幾個(gè)數(shù)量級(jí),具體取決于查詢類型和配置。
Impala 是對(duì)大數(shù)據(jù)查詢工具的補(bǔ)充。Impala不會(huì)取代在MapReduce上構(gòu)建的批處理框架(例如Hive)。Impala 可以讀取和寫入 Hive 表,從而使用 Impala 實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)交換,從而對(duì) Hive 生成的數(shù)據(jù)進(jìn)行分析。
注:安裝impala的話,必須先安裝hive,保證hive安裝成功,并且還需要啟動(dòng)hive的metastore服務(wù)。
適用場(chǎng)景:大數(shù)據(jù)實(shí)時(shí)交互式 SQL 查詢
優(yōu)點(diǎn) | 劣勢(shì)or局限性 |
---|---|
|
|
分析總結(jié)
基于以上的研究,對(duì)Hive、HBase、Impala、HDFS之間的關(guān)系做一個(gè)簡(jiǎn)單的分析總結(jié):
- Hive的使用雖然和關(guān)系型數(shù)據(jù)庫(kù)類似,但是其本質(zhì)上是建立在Hadoop體系架構(gòu)上的一層SQL抽象,自身不存儲(chǔ)和處理數(shù)據(jù),實(shí)際數(shù)據(jù)保存在HDFS文件中,真正的計(jì)算和執(zhí)行則由MapReduce完成;
- Impala是Hive的補(bǔ)充,可以讀取和寫入 Hive 表,依賴Hive的元數(shù)據(jù),自身不存儲(chǔ)數(shù)據(jù)。Impala提供的有一個(gè)分布式查詢引擎;
- HBase是列存儲(chǔ)的NoSQL數(shù)據(jù)庫(kù),主要提供接口的形式與外界交互,數(shù)據(jù)保存在HDFS上,也支持使用Hive直接訪問(wèn)HBase;
- HDFS是Hadoop生態(tài)最底層的存儲(chǔ),Hive、Impala、HBase都建立在HDFS之上。
以下參考資料:
官方介紹:
- Apache Hadoop
- Apache Hive
- Home - Apache Hive - Apache Software Foundation
- Hive HPL/SQL - Apache Hive - Apache Software Foundation
- DeveloperGuide - Apache Hive - Apache Software Foundation
- Apache HBase – Apache HBase? Home
- Apache HBase ? Reference Guide
- Apache HBase - Wikipedia
- Impala (apache.org)
- Introducing Apache Impala
書籍:
- 《離線和實(shí)時(shí)大數(shù)據(jù)開(kāi)發(fā)實(shí)戰(zhàn)》-朱松嶺
- 《HBase權(quán)威指南》
其他文章:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-404701.html
- Hadoop, HDFS, Hive, Hbase, Impala 之間的關(guān)系 - levi125 - 博客園 (cnblogs.com)
- Impala入門學(xué)習(xí)與使用詳解_皮哥四月紅的博客-CSDN博客
- Hive、Spark、Impala原理閱讀筆記 (icode9.com)
- 大數(shù)據(jù)之Impala - 走看看 (zoukankan.com)
- Hbase和Hive區(qū)別和聯(lián)系_KK凱凱的博客-CSDN博客_hbase和hive的區(qū)別和聯(lián)系
- MongoDB、HBase、Redis 等 NoSQL 優(yōu)劣勢(shì)、應(yīng)用場(chǎng)景 - 知乎 (zhihu.com)
- HBase的面試八股 (51gcrc.com)
- Hive分區(qū)介紹_weixin_42232931的博客-CSDN博客_hive 分區(qū)
- 什么是hive的靜態(tài)分區(qū)和動(dòng)態(tài)分區(qū),hive動(dòng)態(tài)分區(qū)詳解_魯邊的博客-CSDN博客_hive 動(dòng)態(tài)分區(qū)嚴(yán)格模式
- 高效辨別Hive的靜態(tài)和動(dòng)態(tài)分區(qū)_糖潮麗子的博客-CSDN博客
?寫作不易,如果讀完以后覺(jué)得有幫助,歡迎點(diǎn)贊和收藏!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-404701.html
到了這里,關(guān)于數(shù)倉(cāng)知識(shí)11:Hadoop生態(tài)及Hive、HBase、Impala、HDFS之間的關(guān)系的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!