精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于hadoop的數(shù)據(jù)倉庫介紹

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-02-11 10:17 ? 次閱讀

一、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)

基于hadoop的數(shù)據(jù)倉庫介紹

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)

基于hadoop的數(shù)據(jù)倉庫介紹

?用戶接口,包括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ù)的實時訪問。

基于hadoop的數(shù)據(jù)倉庫介紹

Hive與傳統(tǒng)數(shù)據(jù)庫的對比

基于hadoop的數(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ù)場景需求。

基于hadoop的數(shù)據(jù)倉庫介紹

圖企業(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;

基于hadoop的數(shù)據(jù)倉庫介紹

上圖描述了連接操作轉(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;

基于hadoop的數(shù)據(jù)倉庫介紹

圖用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,全表掃描,不存在投影和選擇操作)

基于hadoop的數(shù)據(jù)倉庫介紹

上圖是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)可以解決這類問題。

基于hadoop的數(shù)據(jù)倉庫介紹

在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)

基于hadoop的數(shù)據(jù)倉庫介紹

圖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í)行過程

基于hadoop的數(shù)據(jù)倉庫介紹

圖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

基于hadoop的數(shù)據(jù)倉庫介紹

圖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í)行計劃。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(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
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)倉庫的基本架構(gòu)及架構(gòu)圖介紹

    本文開始介紹了什么是數(shù)據(jù)倉庫以及數(shù)據(jù)倉庫的用途,其次介紹數(shù)據(jù)倉庫分層的原因,最后介紹
    的頭像 發(fā)表于 02-11 10:08 ?6w次閱讀
    <b class='flag-5'>數(shù)據(jù)倉庫</b>的基本架構(gòu)及架構(gòu)圖<b class='flag-5'>介紹</b>

    什么是數(shù)據(jù)倉庫數(shù)據(jù)倉庫的優(yōu)勢分析

    數(shù)據(jù)倉庫,有一個被廣泛接受的定義:數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩(wěn)定的(Non-Volatile)、反映歷史變化(Time Variant)的
    發(fā)表于 11-01 10:57 ?9635次閱讀

    數(shù)據(jù)倉庫解決方案的實施過程是什么?#數(shù)據(jù)倉庫 #光點科技

    數(shù)據(jù)倉庫
    光點科技
    發(fā)布于 :2023年06月19日 14:24:46

    數(shù)據(jù)之Hive數(shù)據(jù)倉庫

    數(shù)據(jù) Hive數(shù)據(jù)倉庫
    發(fā)表于 03-19 11:10

    多版本數(shù)據(jù)倉庫模型設(shè)計

    針對數(shù)據(jù)倉庫多維模式結(jié)構(gòu)的進(jìn)化問題提出一種多版本數(shù)據(jù)倉庫模型,給出模型結(jié)構(gòu)、模型對象以及對象之間指派關(guān)系的定義。多版本數(shù)據(jù)倉庫基于“版本控制”策略管理數(shù)據(jù)倉庫
    發(fā)表于 04-21 09:39 ?0次下載

    統(tǒng)計行業(yè)數(shù)據(jù)倉庫構(gòu)建及應(yīng)用

    數(shù)據(jù)倉庫可以管理和重組統(tǒng)計行業(yè)大量分散數(shù)據(jù),便于以后分析和決策。介紹數(shù)據(jù)倉庫概念、改進(jìn)的三層體系結(jié)構(gòu)、構(gòu)建過程和實現(xiàn)方法、統(tǒng)計行業(yè)應(yīng)用步驟及前景,對提高統(tǒng)計行
    發(fā)表于 09-16 10:57 ?28次下載

    電信數(shù)據(jù)倉庫設(shè)計

    本文針對佳木斯電信的業(yè)務(wù)需求,設(shè)計了佳木斯電信數(shù)據(jù)倉庫的總體架構(gòu),并以營業(yè)受理情況主題為例介紹了佳木斯電信數(shù)據(jù)倉庫數(shù)據(jù)模型的設(shè)計過程。
    發(fā)表于 12-18 17:01 ?14次下載

    OLAP在電信數(shù)據(jù)倉庫中的設(shè)計

    通過研究數(shù)據(jù)倉庫在電信業(yè)務(wù)中的應(yīng)用,論述電信領(lǐng)域數(shù)據(jù)倉庫和部分聯(lián)機(jī)分析處理的設(shè)計開發(fā)過程。綜述數(shù)據(jù)倉庫模型、聯(lián)機(jī)分析處理(OLAP)模型、匯總表的設(shè)計以及開發(fā)中所要
    發(fā)表于 12-29 17:31 ?0次下載

    保護(hù)MySQL數(shù)據(jù)倉庫的最佳實踐

    數(shù)據(jù)倉庫中最常見的數(shù)據(jù)庫管理系統(tǒng)可能就是開源的MySQL數(shù)據(jù)庫。以下5個小技巧重點介紹了一些保護(hù)MySQL數(shù)據(jù)倉庫的最佳實踐。 1.限制訪問
    發(fā)表于 09-27 14:10 ?0次下載

    數(shù)據(jù)倉庫是什么_數(shù)據(jù)倉庫的特點_數(shù)據(jù)倉庫數(shù)據(jù)庫區(qū)別

    本文開始介紹數(shù)據(jù)倉庫是什么,其次詳細(xì)介紹數(shù)據(jù)倉庫的特點、數(shù)據(jù)倉庫的基本架構(gòu)與數(shù)據(jù)倉庫用途,最
    的頭像 發(fā)表于 02-11 10:42 ?2.6w次閱讀
    <b class='flag-5'>數(shù)據(jù)倉庫</b>是什么_<b class='flag-5'>數(shù)據(jù)倉庫</b>的特點_<b class='flag-5'>數(shù)據(jù)倉庫</b>與<b class='flag-5'>數(shù)據(jù)</b>庫區(qū)別

    數(shù)據(jù)倉庫是什么_數(shù)據(jù)倉庫有什么特點_數(shù)據(jù)庫和數(shù)據(jù)倉庫區(qū)別分析

    數(shù)據(jù)倉庫是一個面向主題的、集成的、不可更新的、隨時間不斷變化的數(shù)據(jù)集合,它用于支持企業(yè)或組織的決策分析處理。數(shù)據(jù)倉庫是一個過程而不是一個項目。
    發(fā)表于 02-24 14:04 ?1.9w次閱讀
    <b class='flag-5'>數(shù)據(jù)倉庫</b>是什么_<b class='flag-5'>數(shù)據(jù)倉庫</b>有什么特點_<b class='flag-5'>數(shù)據(jù)</b>庫和<b class='flag-5'>數(shù)據(jù)倉庫</b>區(qū)別分析

    數(shù)據(jù)倉庫的模型設(shè)計

    本文詳細(xì)介紹了關(guān)于數(shù)據(jù)倉庫的模型設(shè)計,A. 數(shù)據(jù)建模方法論,B. 分層設(shè)計原則,C. 主題域設(shè)計方法。
    發(fā)表于 02-24 14:30 ?5890次閱讀
    <b class='flag-5'>數(shù)據(jù)倉庫</b>的模型設(shè)計

    如何搭建數(shù)據(jù)倉庫

    數(shù)據(jù)倉庫是所有產(chǎn)品的數(shù)據(jù)中心,公司體系下的所有產(chǎn)品產(chǎn)生的所有數(shù)據(jù)最終都流向數(shù)據(jù)倉庫,可以說數(shù)據(jù)倉庫不產(chǎn)生
    發(fā)表于 06-25 15:41 ?2248次閱讀

    數(shù)據(jù)數(shù)據(jù)倉庫應(yīng)該如何建設(shè)

    互聯(lián)網(wǎng)行業(yè),除了數(shù)據(jù)量大之外,業(yè)務(wù)時效性要求也很高,甚至很多是要求實時的,另外,互聯(lián)網(wǎng)行業(yè)的業(yè)務(wù)變化非常快,不可能像傳統(tǒng)行業(yè)一樣,可以使用自頂向下的方法建立數(shù)據(jù)倉庫,一勞永逸,它要求新的業(yè)務(wù)很快能融入數(shù)據(jù)倉庫中來,老的下線的業(yè)務(wù)
    發(fā)表于 03-10 16:37 ?920次閱讀

    如何提高數(shù)據(jù)倉庫的性能及優(yōu)化設(shè)計

      隨著數(shù)據(jù)倉庫規(guī)模的擴(kuò)大,數(shù)據(jù)倉庫的性能問題就顯得越來越突出,如何提高數(shù)據(jù)倉庫的性能,除了在設(shè)計階段對其邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計外;還可以在數(shù)據(jù)倉庫運行階段,采取一些優(yōu)化措施來
    發(fā)表于 07-18 16:10 ?0次下載