一、Hadoop介紹
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運算和存儲。
Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(HadoopDistributedFileSystem),簡稱HDFS。HDFS有高容錯性的特點,并且設(shè)計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(largedataset)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streamingaccess)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop的核心架構(gòu)
HDFS
對外部客戶機(jī)而言,HDFS就像一個傳統(tǒng)的分級文件系統(tǒng)。可以創(chuàng)建、刪除、移動或重命名文件,等等。但是HDFS的架構(gòu)是基于一組特定的節(jié)點構(gòu)建的(參見圖1),這是由它自身的特點決定的。這些節(jié)點包括NameNode(僅一個),它在HDFS內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,它為HDFS提供存儲塊。由于僅存在一個NameNode,因此這是HDFS的一個缺點(單點失敗)。
存儲在HDFS中的文件被分成塊,然后將這些塊復(fù)制到多個計算機(jī)中(DataNode)。這與傳統(tǒng)的RAID架構(gòu)大不相同。塊的大小(通常為64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時由客戶機(jī)決定。NameNode可以控制所有文件操作。HDFS內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的TCP/IP協(xié)議。
NameNode
NameNode是一個通常在HDFS實例中的單獨機(jī)器上運行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問。NameNode決定是否將文件映射到DataNode上的復(fù)制塊上。對于最常見的3個復(fù)制塊,第一個復(fù)制塊存儲在同一機(jī)架的不同節(jié)點上,最后一個復(fù)制塊存儲在不同機(jī)架的某個節(jié)點上。注意,這里需要您了解集群架構(gòu)。
二、hive介紹
Hive是部署在hadoop集群上的數(shù)據(jù)倉庫工具。
數(shù)據(jù)庫和數(shù)據(jù)倉庫的區(qū)別:
數(shù)據(jù)庫(如常用關(guān)系型數(shù)據(jù)庫)可以支持實時增刪改查。
數(shù)據(jù)倉庫不僅僅是為了存放數(shù)據(jù),它可以存放海量數(shù)據(jù),而且可以查詢、分析和計算存儲在Hadoop中的大規(guī)模數(shù)據(jù)。但他有一個弱點,他不能進(jìn)行實時的更新、刪除等操作。也就是一次寫入多次讀取。
Hive也定義了簡單的類SQL查詢語言,稱為QL,它允許熟悉SQL的用戶查詢數(shù)據(jù)。現(xiàn)在hive2.0也支持更新、索引和事務(wù),幾乎SQL的其它特征都能支持。
Hive支持SQL92大部分功能,我們暫時可以把hive理解成一個關(guān)系型數(shù)據(jù)庫,語法和MySQL是幾乎是一樣的。
Hive是Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架之一,是SQL解析引擎,它可以將SQL轉(zhuǎn)換成MapReduce任務(wù),然后在Hadoop執(zhí)行。
實際的I/O事務(wù)并沒有經(jīng)過NameNode,只有表示DataNode和塊的文件映射的元數(shù)據(jù)經(jīng)過NameNode。當(dāng)外部客戶機(jī)發(fā)送請求要求創(chuàng)建文件時,NameNode會以塊標(biāo)識和該塊的第一個副本的DataNodeIP地址作為響應(yīng)。這個NameNode還會通知其他將要接收該塊的副本的DataNode。
NameNode在一個稱為FsImage的文件中存儲所有關(guān)于文件系統(tǒng)名稱空間的信息。這個文件和一個包含所有事務(wù)的記錄文件(這里是EditLog)將存儲在NameNode的本地文件系統(tǒng)上。FsImage和EditLog文件也需要復(fù)制副本,以防文件損壞或NameNode系統(tǒng)丟失。
NameNode本身不可避免地具有SPOF(SinglePointOfFailure)單點失效的風(fēng)險,主備模式并不能解決這個問題,通過HadoopNon-stopnamenode才能實現(xiàn)100%uptime可用時間。
DataNode
DataNode也是一個通常在HDFS實例中的單獨機(jī)器上運行的軟件。Hadoop集群包含一個NameNode和大量DataNode。DataNode通常以機(jī)架的形式組織,機(jī)架通過一個交換機(jī)將所有系統(tǒng)連接起來。Hadoop的一個假設(shè)是:機(jī)架內(nèi)部節(jié)點之間的傳輸速度快于機(jī)架間節(jié)點的傳輸速度。
DataNode響應(yīng)來自HDFS客戶機(jī)的讀寫請求。它們還響應(yīng)來自NameNode的創(chuàng)建、刪除和復(fù)制塊的命令。NameNode依賴來自每個DataNode的定期心跳(heartbeat)消息。每條消息都包含一個塊報告,NameNode可以根據(jù)這個報告驗證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。如果DataNode不能發(fā)送心跳消息,NameNode將采取修復(fù)措施,重新復(fù)制在該節(jié)點上丟失的塊。
文件操作
可見,HDFS并不是一個萬能的文件系統(tǒng)。它的主要目的是支持以流的形式訪問寫入的大型文件。
如果客戶機(jī)想將文件寫到HDFS上,首先需要將該文件緩存到本地的臨時存儲。如果緩存的數(shù)據(jù)大于所需的HDFS塊大小,創(chuàng)建文件的請求將發(fā)送給NameNode。NameNode將以DataNode標(biāo)識和目標(biāo)塊響應(yīng)客戶機(jī)。
同時也通知將要保存文件塊副本的DataNode。當(dāng)客戶機(jī)開始將臨時文件發(fā)送給第一個DataNode時,將立即通過管道方式將塊內(nèi)容轉(zhuǎn)發(fā)給副本DataNode。客戶機(jī)也負(fù)責(zé)創(chuàng)建保存在相同HDFS名稱空間中的校驗和(checksum)文件。
在最后的文件塊發(fā)送之后,NameNode將文件創(chuàng)建提交到它的持久化元數(shù)據(jù)存儲(在EditLog和FsImage文件)。
Linux集群
Hadoop框架可在單一的Linux平臺上使用(開發(fā)和調(diào)試時),官方提供MiniCluster作為單元測試使用,不過使用存放在機(jī)架上的商業(yè)服務(wù)器才能發(fā)揮它的力量。這些機(jī)架組成一個Hadoop集群。它通過集群拓?fù)渲R決定如何在整個集群中分配作業(yè)和文件。Hadoop假定節(jié)點可能失敗,因此采用本機(jī)方法處理單個計算機(jī)甚至所有機(jī)架的失敗。
Hive的系統(tǒng)架構(gòu)
?用戶接口,包括CLI(Shell命令行),JDBC/ODBC,WebUI
?MetaStore元數(shù)據(jù)庫,通常是存儲在關(guān)系數(shù)據(jù)庫如mysql,derby中
?Driver包含解釋器、編譯器、優(yōu)化器、執(zhí)行器
?Hadoop:用HDFS進(jìn)行存儲,利用MapReduce進(jìn)行計算
Hive的表和數(shù)據(jù)庫,對應(yīng)的其實是HDFS(Hadoop分布式文件系統(tǒng))的目錄/文件,按表名把文件夾分開。如果是分區(qū)表,則分區(qū)值是子文件夾,可以直接在MapReduceJob里使用這些數(shù)據(jù)。
三、Hive與Hadoop生態(tài)系統(tǒng)中其他組件的關(guān)系
1、Hive依賴于HDFS存儲數(shù)據(jù),依賴MR處理數(shù)據(jù);
2、Pig可作為Hive的替代工具,是一種數(shù)據(jù)流語言和運行環(huán)境,適合用于在Hadoop平臺上查詢半結(jié)構(gòu)化數(shù)據(jù)集,用于與ETL過程的一部分,即將外部數(shù)據(jù)裝載到Hadoop集群中,轉(zhuǎn)換為用戶需要的數(shù)據(jù)格式;
3、HBase是一個面向列的、分布式可伸縮的數(shù)據(jù)庫,可提供數(shù)據(jù)的實時訪問功能,而Hive只能處理靜態(tài)數(shù)據(jù),主要是BI報表數(shù)據(jù),Hive的初衷是為減少復(fù)雜MR應(yīng)用程序的編寫工作,HBase則是為了實現(xiàn)對數(shù)據(jù)的實時訪問。
Hive與傳統(tǒng)數(shù)據(jù)庫的對比
四、Hive的部署和應(yīng)用
Hive在企業(yè)大數(shù)據(jù)分析平臺中的應(yīng)用
當(dāng)前企業(yè)中部署的大數(shù)據(jù)分析平臺,除Hadoop的基本組件HDFS和MR外,還結(jié)合使用Hive、Pig、HBase、Mahout,從而滿足不同業(yè)務(wù)場景需求。
圖企業(yè)中一種常見的大數(shù)據(jù)分析平臺部署框架
上圖是企業(yè)中一種常見的大數(shù)據(jù)分析平臺部署框架,在這種部署架構(gòu)中:
Hive和Pig用于報表中心,Hive用于分析報表,Pig用于報表中數(shù)據(jù)的轉(zhuǎn)換工作。
HBase用于在線業(yè)務(wù),HDFS不支持隨機(jī)讀寫操作,而HBase正是為此開發(fā),可較好地支持實時訪問數(shù)據(jù)。
Mahout提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域的經(jīng)典算法實現(xiàn),用于創(chuàng)建商務(wù)智能(BI)應(yīng)用程序。
五、Hive工作原理
1、SQL語句轉(zhuǎn)換成MapReduce作業(yè)的基本原理
1.1用MapReduce實現(xiàn)連接操作
假設(shè)連接(join)的兩個表分別是用戶表User(uid,name)和訂單表Order(uid,orderid),具體的SQL命令:
SELECTname,orderidFROMUseruJOINOrderoONu.uid=o.uid;
上圖描述了連接操作轉(zhuǎn)換為MapReduce操作任務(wù)的具體執(zhí)行過程。
首先,在Map階段,
User表以uid為key,以name和表的標(biāo)記位(這里User的標(biāo)記位記為1)為value,進(jìn)行Map操作,把表中記錄轉(zhuǎn)換生成一系列KV對的形式。比如,User表中記錄(1,Lily)轉(zhuǎn)換為鍵值對(1,《1,Lily》),其中第一個“1”是uid的值,第二個“1”是表User的標(biāo)記位,用來標(biāo)示這個鍵值對來自User表;
同樣,Order表以uid為key,以orderid和表的標(biāo)記位(這里表Order的標(biāo)記位記為2)為值進(jìn)行Map操作,把表中的記錄轉(zhuǎn)換生成一系列KV對的形式;
接著,在Shuffle階段,把User表和Order表生成的KV對按鍵值進(jìn)行Hash,然后傳送給對應(yīng)的Reduce機(jī)器執(zhí)行。比如KV對(1,《1,Lily》)、(1,《2,101》)、(1,《2,102》)傳送到同一臺Reduce機(jī)器上。當(dāng)Reduce機(jī)器接收到這些KV對時,還需按表的標(biāo)記位對這些鍵值對進(jìn)行排序,以優(yōu)化連接操作;
最后,在Reduce階段,對同一臺Reduce機(jī)器上的鍵值對,根據(jù)“值”(value)中的表標(biāo)記位,對來自表User和Order的數(shù)據(jù)進(jìn)行笛卡爾積連接操作,以生成最終的結(jié)果。比如鍵值對(1,《1,Lily》)與鍵值對(1,《2,101》)、(1,《2,102》)的連接結(jié)果是(Lily,101)、(Lily,102)。
1.2用MR實現(xiàn)分組操作
假設(shè)分?jǐn)?shù)表Score(rank,level),具有rank(排名)和level(級別)兩個屬性,需要進(jìn)行一個分組(GroupBy)操作,功能是把表Score的不同片段按照rank和level的組合值進(jìn)行合并,并計算不同的組合值有幾條記錄。SQL語句命令如下:
SELECT rank,level,count(*) as value FROM score GROUP BY rank,level;
圖用MapReduce實現(xiàn)分組操作的實現(xiàn)原理
上圖描述分組操作轉(zhuǎn)化為MapReduce任務(wù)的具體執(zhí)行過程。
首先,在Map階段,對表Score進(jìn)行Map操作,生成一系列KV對,其鍵為《rank,level》,值為“擁有該《rank,level》組合值的記錄的條數(shù)”。比如,Score表的第一片段中有兩條記錄(A,1),所以進(jìn)行Map操作后,轉(zhuǎn)化為鍵值對(《A,1》,2);
接著在Shuffle階段,對Score表生成的鍵值對,按照“鍵”的值進(jìn)行Hash,然后根據(jù)Hash結(jié)果傳送給對應(yīng)的Reduce機(jī)器去執(zhí)行。比如,鍵值對(《A,1》,2)、(《A,1》,1)傳送到同一臺Reduce機(jī)器上,鍵值對(《B,2》,1)傳送另一Reduce機(jī)器上。然后,Reduce機(jī)器對接收到的這些鍵值對,按“鍵”的值進(jìn)行排序;
在Reduce階段,把具有相同鍵的所有鍵值對的“值”進(jìn)行累加,生成分組的最終結(jié)果。比如,在同一臺Reduce機(jī)器上的鍵值對(《A,1》,2)和(《A,1》,1)Reduce操作后的輸出結(jié)果為(A,1,3)。
2、Hive中SQL查詢轉(zhuǎn)換成MR作業(yè)的過程
當(dāng)Hive接收到一條HQL語句后,需要與Hadoop交互工作來完成該操作。HQL首先進(jìn)入驅(qū)動模塊,由驅(qū)動模塊中的編譯器解析編譯,并由優(yōu)化器對該操作進(jìn)行優(yōu)化計算,然后交給執(zhí)行器去執(zhí)行。執(zhí)行器通常啟動一個或多個MR任務(wù),有時也不啟動(如SELECT*FROMtb1,全表掃描,不存在投影和選擇操作)
上圖是Hive把HQL語句轉(zhuǎn)化成MR任務(wù)進(jìn)行執(zhí)行的詳細(xì)過程。
由驅(qū)動模塊中的編譯器–Antlr語言識別工具,對用戶輸入的SQL語句進(jìn)行詞法和語法解析,將HQL語句轉(zhuǎn)換成抽象語法樹(ASTTree)的形式;
遍歷抽象語法樹,轉(zhuǎn)化成QueryBlock查詢單元。因為AST結(jié)構(gòu)復(fù)雜,不方便直接翻譯成MR算法程序。其中QueryBlock是一條最基本的SQL語法組成單元,包括輸入源、計算過程、和輸入三個部分;
遍歷QueryBlock,生成OperatorTree(操作樹),OperatorTree由很多邏輯操作符組成,如TableScanOperator、SelectOperator、FilterOperator、JoinOperator、GroupByOperator和ReduceSinkOperator等。這些邏輯操作符可在Map、Reduce階段完成某一特定操作;
Hive驅(qū)動模塊中的邏輯優(yōu)化器對OperatorTree進(jìn)行優(yōu)化,變換OperatorTree的形式,合并多余的操作符,減少MR任務(wù)數(shù)、以及Shuffle階段的數(shù)據(jù)量;
遍歷優(yōu)化后的OperatorTree,根據(jù)OperatorTree中的邏輯操作符生成需要執(zhí)行的MR任務(wù);
啟動Hive驅(qū)動模塊中的物理優(yōu)化器,對生成的MR任務(wù)進(jìn)行優(yōu)化,生成最終的MR任務(wù)執(zhí)行計劃;
最后,有Hive驅(qū)動模塊中的執(zhí)行器,對最終的MR任務(wù)執(zhí)行輸出。
Hive驅(qū)動模塊中的執(zhí)行器執(zhí)行最終的MR任務(wù)時,Hive本身不會生成MR算法程序。它通過一個表示“Job執(zhí)行計劃”的XML文件,來驅(qū)動內(nèi)置的、原生的Mapper和Reducer模塊。Hive通過和JobTracker通信來初始化MR任務(wù),而不需直接部署在JobTracker所在管理節(jié)點上執(zhí)行。通常在大型集群中,會有專門的網(wǎng)關(guān)機(jī)來部署Hive工具,這些網(wǎng)關(guān)機(jī)的作用主要是遠(yuǎn)程操作和管理節(jié)點上的JobTracker通信來執(zhí)行任務(wù)。Hive要處理的數(shù)據(jù)文件常存儲在HDFS上,HDFS由名稱節(jié)點(NameNode)來管理。
JobTracker/TaskTracker
NameNode/DataNode
六、HiveHA基本原理
在實際應(yīng)用中,Hive也暴露出不穩(wěn)定的問題,在極少數(shù)情況下,會出現(xiàn)端口不響應(yīng)或進(jìn)程丟失問題。HiveHA(HighAvailablity)可以解決這類問題。
在HiveHA中,在Hadoop集群上構(gòu)建的數(shù)據(jù)倉庫是由多個Hive實例進(jìn)行管理的,這些Hive實例被納入到一個資源池中,由HAProxy提供統(tǒng)一的對外接口。客戶端的查詢請求,首先訪問HAProxy,由HAProxy對訪問請求進(jìn)行轉(zhuǎn)發(fā)。HAProxy收到請求后,會輪詢資源池中可用的Hive實例,執(zhí)行邏輯可用性測試。
如果某個Hive實例邏輯可用,就會把客戶端的訪問請求轉(zhuǎn)發(fā)到Hive實例上;
如果某個實例不可用,就把它放入黑名單,并繼續(xù)從資源池中取出下一個Hive實例進(jìn)行邏輯可用性測試。
對于黑名單中的Hive,HiveHA會每隔一段時間進(jìn)行統(tǒng)一處理,首先嘗試重啟該Hive實例,如果重啟成功,就再次把它放入資源池中。
由于HAProxy提供統(tǒng)一的對外訪問接口,因此,對于程序開發(fā)人員來說,可把它看成一臺超強(qiáng)“Hive”。
七、Impala
1、Impala簡介
Impala由Cloudera公司開發(fā),提供SQL語義,可查詢存儲在Hadoop和HBase上的PB級海量數(shù)據(jù)。Hive也提供SQL語義,但底層執(zhí)行任務(wù)仍借助于MR,實時性不好,查詢延遲較高。
Impala作為新一代開源大數(shù)據(jù)分析引擎,最初參照Dremel(由Google開發(fā)的交互式數(shù)據(jù)分析系統(tǒng)),支持實時計算,提供與Hive類似的功能,在性能上高出Hive3~30倍。Impala可能會超過Hive的使用率能成為Hadoop上最流行的實時計算平臺。Impala采用與商用并行關(guān)系數(shù)據(jù)庫類似的分布式查詢引擎,可直接從HDFS、HBase中用SQL語句查詢數(shù)據(jù),不需把SQL語句轉(zhuǎn)換成MR任務(wù),降低延遲,可很好地滿足實時查詢需求。
Impala不能替換Hive,可提供一個統(tǒng)一的平臺用于實時查詢。Impala的運行依賴于Hive的元數(shù)據(jù)(Metastore)。Impala和Hive采用相同的SQL語法、ODBC驅(qū)動程序和用戶接口,可統(tǒng)一部署Hive和Impala等分析工具,同時支持批處理和實時查詢。
2、Impala系統(tǒng)架構(gòu)
圖Impala系統(tǒng)架構(gòu)
上圖是Impala系統(tǒng)結(jié)構(gòu)圖,虛線模塊數(shù)據(jù)Impala組件。Impala和Hive、HDFS、HBase統(tǒng)一部署在Hadoop平臺上。Impala由Impalad、StateStore和CLI三部分組成。
Implalad:是Impala的一個進(jìn)程,負(fù)責(zé)協(xié)調(diào)客戶端提供的查詢執(zhí)行,給其他Impalad分配任務(wù),以及收集其他Impalad的執(zhí)行結(jié)果進(jìn)行匯總。Impalad也會執(zhí)行其他Impalad給其分配的任務(wù),主要是對本地HDFS和HBase里的部分?jǐn)?shù)據(jù)進(jìn)行操作。Impalad進(jìn)程主要含QueryPlanner、QueryCoordinator和QueryExecEngine三個模塊,與HDFS的數(shù)據(jù)節(jié)點(HDFSDataNode)運行在同一節(jié)點上,且完全分布運行在MPP(大規(guī)模并行處理系統(tǒng))架構(gòu)上。
StateStore:收集分布在集群上各個Impalad進(jìn)程的資源信息,用于查詢的調(diào)度,它會創(chuàng)建一個statestored進(jìn)程,來跟蹤集群中的Impalad的健康狀態(tài)及位置信息。statestored進(jìn)程通過創(chuàng)建多個線程來處理Impalad的注冊訂閱以及與多個Impalad保持心跳連接,此外,各Impalad都會緩存一份StateStore中的信息。當(dāng)StateStore離線后,Impalad一旦發(fā)現(xiàn)StateStore處于離線狀態(tài)時,就會進(jìn)入恢復(fù)模式,并進(jìn)行返回注冊。當(dāng)StateStore重新加入集群后,自動恢復(fù)正常,更新緩存數(shù)據(jù)。
CLI:CLI給用戶提供了執(zhí)行查詢的命令行工具。Impala還提供了Hue、JDBC及ODBC使用接口。
3、Impala查詢執(zhí)行過程
圖Impala查詢執(zhí)行過程
注冊和訂閱。當(dāng)用戶提交查詢前,Impala先創(chuàng)建一個Impalad進(jìn)程來負(fù)責(zé)協(xié)調(diào)客戶端提交的查詢,該進(jìn)程會向StateStore提交注冊訂閱信息,StateStore會創(chuàng)建一個statestored進(jìn)程,statestored進(jìn)程通過創(chuàng)建多個線程來處理Impalad的注冊訂閱信息。
提交查詢。通過CLI提交一個查詢到Impalad進(jìn)程,Impalad的QueryPlanner對SQL語句解析,生成解析樹;Planner將解析樹變成若干PlanFragment,發(fā)送到QueryCoordinator。其中PlanFragment由PlanNode組成,能被分發(fā)到單獨的節(jié)點上執(zhí)行,每個PlanNode表示一個關(guān)系操作和對其執(zhí)行優(yōu)化需要的信息。
獲取元數(shù)據(jù)與數(shù)據(jù)地址。QueryCoordinator從MySQL元數(shù)據(jù)庫中獲取元數(shù)據(jù)(即查詢需要用到哪些數(shù)據(jù)),從HDFS的名稱節(jié)點中獲取數(shù)據(jù)地址(即數(shù)據(jù)被保存到哪個數(shù)據(jù)節(jié)點上),從而得到存儲這個查詢相關(guān)數(shù)據(jù)的所有數(shù)據(jù)節(jié)點。
分發(fā)查詢?nèi)蝿?wù)。QueryCoordinator初始化相應(yīng)的Impalad上的任務(wù),即把查詢?nèi)蝿?wù)分配給所有存儲這個查詢相關(guān)數(shù)據(jù)的數(shù)據(jù)節(jié)點。
匯聚結(jié)果。QueryExecutor通過流式交換中間輸出,并由QueryCoordinator匯聚來自各個Impalad的結(jié)果。
返回結(jié)果。QueryCoordinator把匯總后的結(jié)果返回給CLI客戶端。
4、Impala與Hive
圖Impala與Hive的對比
不同點:
Hive適合長時間批處理查詢分析;而Impala適合進(jìn)行交互式SQL查詢。
Hive依賴于MR計算框架,執(zhí)行計劃組合成管道型MR任務(wù)模型進(jìn)行執(zhí)行;而Impala則把執(zhí)行計劃表現(xiàn)為一棵完整的執(zhí)行計劃樹,可更自然地分發(fā)執(zhí)行計劃到各個Impalad執(zhí)行查詢。
Hive在執(zhí)行過程中,若內(nèi)存放不下所有數(shù)據(jù),則會使用外存,以保證查詢能夠順利執(zhí)行完成;而Impala在遇到內(nèi)存放不下數(shù)據(jù)時,不會利用外存,所以Impala處理查詢時會受到一定的限制。
相同點:
使用相同的存儲數(shù)據(jù)池,都支持把數(shù)據(jù)存儲在HDFS和HBase中,其中HDFS支持存儲TEXT、RCFILE、PARQUET、AVRO、ETC等格式的數(shù)據(jù),HBase存儲表中記錄。
使用相同的元數(shù)據(jù)。
對SQL的解析處理比較類似,都是通過詞法分析生成執(zhí)行計劃。
-
數(shù)據(jù)倉庫
+關(guān)注
關(guān)注
0文章
61瀏覽量
10444 -
Hadoop
+關(guān)注
關(guān)注
1文章
90瀏覽量
15959 -
hive
+關(guān)注
關(guān)注
0文章
11瀏覽量
3837
發(fā)布評論請先 登錄
相關(guān)推薦
評論