免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)Hive基礎(chǔ)知識(shí)

Hive是基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)工具,可對(duì)存儲(chǔ)在HDFS上的文件中的數(shù)據(jù)集進(jìn)行數(shù)據(jù)整理、特殊查詢和分析處理,提供了類似于SQL語(yǔ)言的查詢語(yǔ)言–HiveQL,可通過(guò)HQL語(yǔ)句實(shí)現(xiàn)簡(jiǎn)單的MR統(tǒng)計(jì),Hive將HQL語(yǔ)句轉(zhuǎn)換成MR任務(wù)進(jìn)行執(zhí)行。

一、概述

1-1 數(shù)據(jù)倉(cāng)庫(kù)概念

數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse)是一個(gè)面向主題的(Subject Oriented)、集成的(Integrated)、相對(duì)穩(wěn)定的(Non-Volatile)、反應(yīng)歷史變化(Time Variant)的數(shù)據(jù)集合,用于支持管理決策。

數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)通常含四個(gè)層次:數(shù)據(jù)源、數(shù)據(jù)存儲(chǔ)和管理、數(shù)據(jù)服務(wù)、數(shù)據(jù)應(yīng)用。

數(shù)據(jù)源:是數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)來(lái)源,含外部數(shù)據(jù)、現(xiàn)有業(yè)務(wù)系統(tǒng)和文檔資料等;

數(shù)據(jù)集成:完成數(shù)據(jù)的抽取、清洗、轉(zhuǎn)換和加載任務(wù),數(shù)據(jù)源中的數(shù)據(jù)采用ETL(Extract-Transform-Load)工具以固定的周期加載到數(shù)據(jù)倉(cāng)庫(kù)中。

數(shù)據(jù)存儲(chǔ)和管理:此層次主要涉及對(duì)數(shù)據(jù)的存儲(chǔ)和管理,含數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)集市、數(shù)據(jù)倉(cāng)庫(kù)檢測(cè)、運(yùn)行與維護(hù)工具和元數(shù)據(jù)管理等。

數(shù)據(jù)服務(wù):為前端和應(yīng)用提供數(shù)據(jù)服務(wù),可直接從數(shù)據(jù)倉(cāng)庫(kù)中獲取數(shù)據(jù)供前端應(yīng)用使用,也可通過(guò)OLAP(OnLine Analytical Processing,聯(lián)機(jī)分析處理)服務(wù)器為前端應(yīng)用提供負(fù)責(zé)的數(shù)據(jù)服務(wù)。

數(shù)據(jù)應(yīng)用:此層次直接面向用戶,含數(shù)據(jù)查詢工具、自由報(bào)表工具、數(shù)據(jù)分析工具、數(shù)據(jù)挖掘工具和各類應(yīng)用系統(tǒng)。

1-2 傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的問(wèn)題

無(wú)法滿足快速增長(zhǎng)的海量數(shù)據(jù)存儲(chǔ)需求,傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)基于關(guān)系型數(shù)據(jù)庫(kù),橫向擴(kuò)展性較差,縱向擴(kuò)展有限。

無(wú)法處理不同類型的數(shù)據(jù),傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)只能存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),企業(yè)業(yè)務(wù)發(fā)展,數(shù)據(jù)源的格式越來(lái)越豐富。

傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)建立在關(guān)系型數(shù)據(jù)倉(cāng)庫(kù)之上,計(jì)算和處理能力不足,當(dāng)數(shù)據(jù)量達(dá)到TB級(jí)后基本無(wú)法獲得好的性能。

1-3 Hive

Hive是建立在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù),由Facebook開(kāi)發(fā),在某種程度上可以看成是用戶編程接口,本身并不存儲(chǔ)和處理數(shù)據(jù),依賴于HDFS存儲(chǔ)數(shù)據(jù),依賴MR處理數(shù)據(jù)。有類SQL語(yǔ)言HiveQL,不完全支持SQL標(biāo)準(zhǔn),如,不支持更新操作、索引和事務(wù),其子查詢和連接操作也存在很多限制。

Hive把HQL語(yǔ)句轉(zhuǎn)換成MR任務(wù)后,采用批處理的方式對(duì)海量數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)的是靜態(tài)數(shù)據(jù),很適合采用MR進(jìn)行批處理。Hive還提供了一系列對(duì)數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換、加載的工具,可以存儲(chǔ)、查詢和分析存儲(chǔ)在HDFS上的數(shù)據(jù)。

1-4 Hive與Hadoop生態(tài)系統(tǒng)中其他組件的關(guān)系

Hive依賴于HDFS存儲(chǔ)數(shù)據(jù),依賴MR處理數(shù)據(jù);

Pig可作為Hive的替代工具,是一種數(shù)據(jù)流語(yǔ)言和運(yùn)行環(huán)境,適合用于在Hadoop平臺(tái)上查詢半結(jié)構(gòu)化數(shù)據(jù)集,用于與ETL過(guò)程的一部分,即將外部數(shù)據(jù)裝載到Hadoop集群中,轉(zhuǎn)換為用戶需要的數(shù)據(jù)格式;

HBase是一個(gè)面向列的、分布式可伸縮的數(shù)據(jù)庫(kù),可提供數(shù)據(jù)的實(shí)時(shí)訪問(wèn)功能,而Hive只能處理靜態(tài)數(shù)據(jù),主要是BI報(bào)表數(shù)據(jù),Hive的初衷是為減少?gòu)?fù)雜MR應(yīng)用程序的編寫工作,HBase則是為了實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)訪問(wèn)。

1-5 Hive與傳統(tǒng)數(shù)據(jù)庫(kù)的對(duì)比

1-6 Hive的部署和應(yīng)用

1-6-1 Hive在企業(yè)大數(shù)據(jù)分析平臺(tái)中的應(yīng)用

當(dāng)前企業(yè)中部署的大數(shù)據(jù)分析平臺(tái),除Hadoop的基本組件HDFS和MR外,還結(jié)合使用Hive、Pig、HBase、Mahout,從而滿足不同業(yè)務(wù)場(chǎng)景需求。

上圖是企業(yè)中一種常見(jiàn)的大數(shù)據(jù)分析平臺(tái)部署框架 ,在這種部署架構(gòu)中:

Hive和Pig用于報(bào)表中心,Hive用于分析報(bào)表,Pig用于報(bào)表中數(shù)據(jù)的轉(zhuǎn)換工作。

HBase用于在線業(yè)務(wù),HDFS不支持隨機(jī)讀寫操作,而HBase正是為此開(kāi)發(fā),可較好地支持實(shí)時(shí)訪問(wèn)數(shù)據(jù)。

Mahout提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域的經(jīng)典算法實(shí)現(xiàn),用于創(chuàng)建商務(wù)智能(BI)應(yīng)用程序。

二、Hive系統(tǒng)架構(gòu)

下圖顯示Hive的主要組成模塊、Hive如何與Hadoop交互工作、以及從外部訪問(wèn)Hive的幾種典型方式。

Hive主要由以下三個(gè)模塊組成:

  1. 用戶接口模塊,含CLI、HWI、JDBC、Thrift Server等,用來(lái)實(shí)現(xiàn)對(duì)Hive的訪問(wèn)。CLI是Hive自帶的命令行界面;HWI是Hive的一個(gè)簡(jiǎn)單網(wǎng)頁(yè)界面;JDBC、ODBC以及Thrift Server可向用戶提供進(jìn)行編程的接口,其中Thrift Server是基于Thrift軟件框架開(kāi)發(fā)的,提供Hive的RPC通信接口。
  2. 驅(qū)動(dòng)模塊(Driver),含編譯器、優(yōu)化器、執(zhí)行器等,負(fù)責(zé)把HiveQL語(yǔ)句轉(zhuǎn)換成一系列MR作業(yè),所有命令和查詢都會(huì)進(jìn)入驅(qū)動(dòng)模塊,通過(guò)該模塊的解析變異,對(duì)計(jì)算過(guò)程進(jìn)行優(yōu)化,然后按照指定的步驟執(zhí)行。
  3. 元數(shù)據(jù)存儲(chǔ)模塊(Metastore),是一個(gè)獨(dú)立的關(guān)系型數(shù)據(jù)庫(kù),通常與MySQL數(shù)據(jù)庫(kù)連接后創(chuàng)建的一個(gè)MySQL實(shí)例,也可以是Hive自帶的Derby數(shù)據(jù)庫(kù)實(shí)例。此模塊主要保存表模式和其他系統(tǒng)元數(shù)據(jù),如表的名稱、表的列及其屬性、表的分區(qū)及其屬性、表的屬性、表中數(shù)據(jù)所在位置信息等。

喜歡圖形界面的用戶,可采用幾種典型的外部訪問(wèn)工具:Karmasphere、Hue、Qubole等。

三、Hive工作原理

3-1 SQL語(yǔ)句轉(zhuǎn)換成MapReduce作業(yè)的基本原理

3-1-1 用MapReduce實(shí)現(xiàn)連接操作

假設(shè)連接(join)的兩個(gè)表分別是用戶表User(uid,name)和訂單表Order(uid,orderid),具體的SQL命令:

  1. SELECT name, orderid FROM User u JOIN Order o ON u.uid=o.uid; 

上圖描述了連接操作轉(zhuǎn)換為MapReduce操作任務(wù)的具體執(zhí)行過(guò)程。

首先,在Map階段,

User表以u(píng)id為key,以name和表的標(biāo)記位(這里User的標(biāo)記位記為1)為value,進(jìn)行Map操作,把表中記錄轉(zhuǎn)換生成一系列KV對(duì)的形式。比如,User表中記錄(1,Lily)轉(zhuǎn)換為鍵值對(duì)(1,<1,Lily>),其中第一個(gè)“1”是uid的值,第二個(gè)“1”是表User的標(biāo)記位,用來(lái)標(biāo)示這個(gè)鍵值對(duì)來(lái)自User表;

同樣,Order表以u(píng)id為key,以orderid和表的標(biāo)記位(這里表Order的標(biāo)記位記為2)為值進(jìn)行Map操作,把表中的記錄轉(zhuǎn)換生成一系列KV對(duì)的形式;

接著,在Shuffle階段,把User表和Order表生成的KV對(duì)按鍵值進(jìn)行Hash,然后傳送給對(duì)應(yīng)的Reduce機(jī)器執(zhí)行。比如KV對(duì)(1,<1,Lily>)、(1,<2,101>)、(1,<2,102>)傳送到同一臺(tái)Reduce機(jī)器上。當(dāng)Reduce機(jī)器接收到這些KV對(duì)時(shí),還需按表的標(biāo)記位對(duì)這些鍵值對(duì)進(jìn)行排序,以優(yōu)化連接操作;

最后,在Reduce階段,對(duì)同一臺(tái)Reduce機(jī)器上的鍵值對(duì),根據(jù)“值”(value)中的表標(biāo)記位,對(duì)來(lái)自表User和Order的數(shù)據(jù)進(jìn)行笛卡爾積連接操作,以生成最終的結(jié)果。比如鍵值對(duì)(1,<1,Lily>)與鍵值對(duì)(1,<2,101>)、(1,<2,102>)的連接結(jié)果是(Lily,101)、(Lily,102)。

3-1-2 用MR實(shí)現(xiàn)分組操作

假設(shè)分?jǐn)?shù)表Score(rank, level),具有rank(排名)和level(級(jí)別)兩個(gè)屬性,需要進(jìn)行一個(gè)分組(Group By)操作,功能是把表Score的不同片段按照rank和level的組合值進(jìn)行合并,并計(jì)算不同的組合值有幾條記錄。SQL語(yǔ)句命令如下:

  1. SELECT rank,level,count(*) as value FROM score GROUP BY rank,level; 

上圖描述分組操作轉(zhuǎn)化為MapReduce任務(wù)的具體執(zhí)行過(guò)程。

首先,在Map階段,對(duì)表Score進(jìn)行Map操作,生成一系列KV對(duì),其鍵為<rank, level>,值為“擁有該<rank, level>組合值的記錄的條數(shù)”。比如,Score表的第一片段中有兩條記錄(A,1),所以進(jìn)行Map操作后,轉(zhuǎn)化為鍵值對(duì)(<A,1>,2);

接著在Shuffle階段,對(duì)Score表生成的鍵值對(duì),按照“鍵”的值進(jìn)行Hash,然后根據(jù)Hash結(jié)果傳送給對(duì)應(yīng)的Reduce機(jī)器去執(zhí)行。比如,鍵值對(duì)(<A,1>,2)、(<A,1>,1)傳送到同一臺(tái)Reduce機(jī)器上,鍵值對(duì)(<B,2>,1)傳送另一Reduce機(jī)器上。然后,Reduce機(jī)器對(duì)接收到的這些鍵值對(duì),按“鍵”的值進(jìn)行排序;

在Reduce階段,把具有相同鍵的所有鍵值對(duì)的“值”進(jìn)行累加,生成分組的最終結(jié)果。比如,在同一臺(tái)Reduce機(jī)器上的鍵值對(duì)(<A,1>,2)和(<A,1>,1)Reduce操作后的輸出結(jié)果為(A,1,3)。

3-2 Hive中SQL查詢轉(zhuǎn)換成MR作業(yè)的過(guò)程

當(dāng)Hive接收到一條HQL語(yǔ)句后,需要與Hadoop交互工作來(lái)完成該操作。HQL首先進(jìn)入驅(qū)動(dòng)模塊,由驅(qū)動(dòng)模塊中的編譯器解析編譯,并由優(yōu)化器對(duì)該操作進(jìn)行優(yōu)化計(jì)算,然后交給執(zhí)行器去執(zhí)行。執(zhí)行器通常啟動(dòng)一個(gè)或多個(gè)MR任務(wù),有時(shí)也不啟動(dòng)(如SELECT * FROM tb1,全表掃描,不存在投影和選擇操作)

上圖是Hive把HQL語(yǔ)句轉(zhuǎn)化成MR任務(wù)進(jìn)行執(zhí)行的詳細(xì)過(guò)程。

由驅(qū)動(dòng)模塊中的編譯器–Antlr語(yǔ)言識(shí)別工具,對(duì)用戶輸入的SQL語(yǔ)句進(jìn)行詞法和語(yǔ)法解析,將HQL語(yǔ)句轉(zhuǎn)換成抽象語(yǔ)法樹(shù)(AST Tree)的形式;

遍歷抽象語(yǔ)法樹(shù),轉(zhuǎn)化成QueryBlock查詢單元。因?yàn)锳ST結(jié)構(gòu)復(fù)雜,不方便直接翻譯成MR算法程序。其中QueryBlock是一條最基本的SQL語(yǔ)法組成單元,包括輸入源、計(jì)算過(guò)程、和輸入三個(gè)部分;

遍歷QueryBlock,生成OperatorTree(操作樹(shù)),OperatorTree由很多邏輯操作符組成,如TableScanOperator、SelectOperator、FilterOperator、JoinOperator、GroupByOperator和ReduceSinkOperator等。這些邏輯操作符可在Map、Reduce階段完成某一特定操作;

Hive驅(qū)動(dòng)模塊中的邏輯優(yōu)化器對(duì)OperatorTree進(jìn)行優(yōu)化,變換OperatorTree的形式,合并多余的操作符,減少M(fèi)R任務(wù)數(shù)、以及Shuffle階段的數(shù)據(jù)量;

遍歷優(yōu)化后的OperatorTree,根據(jù)OperatorTree中的邏輯操作符生成需要執(zhí)行的MR任務(wù);

啟動(dòng)Hive驅(qū)動(dòng)模塊中的物理優(yōu)化器,對(duì)生成的MR任務(wù)進(jìn)行優(yōu)化,生成最終的MR任務(wù)執(zhí)行計(jì)劃;

最后,有Hive驅(qū)動(dòng)模塊中的執(zhí)行器,對(duì)最終的MR任務(wù)執(zhí)行輸出。

Hive驅(qū)動(dòng)模塊中的執(zhí)行器執(zhí)行最終的MR任務(wù)時(shí),Hive本身不會(huì)生成MR算法程序。它通過(guò)一個(gè)表示“Job執(zhí)行計(jì)劃”的XML文件,來(lái)驅(qū)動(dòng)內(nèi)置的、原生的Mapper和Reducer模塊。Hive通過(guò)和JobTracker通信來(lái)初始化MR任務(wù),而不需直接部署在JobTracker所在管理節(jié)點(diǎn)上執(zhí)行。通常在大型集群中,會(huì)有專門的網(wǎng)關(guān)機(jī)來(lái)部署Hive工具,這些網(wǎng)關(guān)機(jī)的作用主要是遠(yuǎn)程操作和管理節(jié)點(diǎn)上的JobTracker通信來(lái)執(zhí)行任務(wù)。Hive要處理的數(shù)據(jù)文件常存儲(chǔ)在HDFS上,HDFS由名稱節(jié)點(diǎn)(NameNode)來(lái)管理。

  • JobTracker/TaskTracker
  • NameNode/DataNode

四、Hive HA基本原理

在實(shí)際應(yīng)用中,Hive也暴露出不穩(wěn)定的問(wèn)題,在極少數(shù)情況下,會(huì)出現(xiàn)端口不響應(yīng)或進(jìn)程丟失問(wèn)題。Hive HA(High Availablity)可以解決這類問(wèn)題。

在Hive HA中,在Hadoop集群上構(gòu)建的數(shù)據(jù)倉(cāng)庫(kù)是由多個(gè)Hive實(shí)例進(jìn)行管理的,這些Hive實(shí)例被納入到一個(gè)資源池中,由HAProxy提供統(tǒng)一的對(duì)外接口。客戶端的查詢請(qǐng)求,首先訪問(wèn)HAProxy,由HAProxy對(duì)訪問(wèn)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)。HAProxy收到請(qǐng)求后,會(huì)輪詢資源池中可用的Hive實(shí)例,執(zhí)行邏輯可用性測(cè)試。

如果某個(gè)Hive實(shí)例邏輯可用,就會(huì)把客戶端的訪問(wèn)請(qǐng)求轉(zhuǎn)發(fā)到Hive實(shí)例上;

如果某個(gè)實(shí)例不可用,就把它放入黑名單,并繼續(xù)從資源池中取出下一個(gè)Hive實(shí)例進(jìn)行邏輯可用性測(cè)試。

對(duì)于黑名單中的Hive,Hive HA會(huì)每隔一段時(shí)間進(jìn)行統(tǒng)一處理,首先嘗試重啟該Hive實(shí)例,如果重啟成功,就再次把它放入資源池中。

由于HAProxy提供統(tǒng)一的對(duì)外訪問(wèn)接口,因此,對(duì)于程序開(kāi)發(fā)人員來(lái)說(shuō),可把它看成一臺(tái)超強(qiáng)“Hive”。

五、Impala

5-1 Impala簡(jiǎn)介

Impala由Cloudera公司開(kāi)發(fā),提供SQL語(yǔ)義,可查詢存儲(chǔ)在Hadoop和HBase上的PB級(jí)海量數(shù)據(jù)。Hive也提供SQL語(yǔ)義,但底層執(zhí)行任務(wù)仍借助于MR,實(shí)時(shí)性不好,查詢延遲較高。

Impala作為新一代開(kāi)源大數(shù)據(jù)分析引擎,最初參照Dremel(由Google開(kāi)發(fā)的交互式數(shù)據(jù)分析系統(tǒng)),支持實(shí)時(shí)計(jì)算,提供與Hive類似的功能,在性能上高出Hive3~30倍。Impala可能會(huì)超過(guò)Hive的使用率能成為Hadoop上最流行的實(shí)時(shí)計(jì)算平臺(tái)。Impala采用與商用并行關(guān)系數(shù)據(jù)庫(kù)類似的分布式查詢引擎,可直接從HDFS、HBase中用SQL語(yǔ)句查詢數(shù)據(jù),不需把SQL語(yǔ)句轉(zhuǎn)換成MR任務(wù),降低延遲,可很好地滿足實(shí)時(shí)查詢需求。

Impala不能替換Hive,可提供一個(gè)統(tǒng)一的平臺(tái)用于實(shí)時(shí)查詢。Impala的運(yùn)行依賴于Hive的元數(shù)據(jù)(Metastore)。Impala和Hive采用相同的SQL語(yǔ)法、ODBC驅(qū)動(dòng)程序和用戶接口,可統(tǒng)一部署Hive和Impala等分析工具,同時(shí)支持批處理和實(shí)時(shí)查詢。

5-2 Impala系統(tǒng)架構(gòu)

上圖是Impala系統(tǒng)結(jié)構(gòu)圖,虛線模塊數(shù)據(jù)Impala組件。Impala和Hive、HDFS、HBase統(tǒng)一部署在Hadoop平臺(tái)上。Impala由Impalad、State Store和CLI三部分組成。

Implalad:是Impala的一個(gè)進(jìn)程,負(fù)責(zé)協(xié)調(diào)客戶端提供的查詢執(zhí)行,給其他Impalad分配任務(wù),以及收集其他Impalad的執(zhí)行結(jié)果進(jìn)行匯總。Impalad也會(huì)執(zhí)行其他Impalad給其分配的任務(wù),主要是對(duì)本地HDFS和HBase里的部分?jǐn)?shù)據(jù)進(jìn)行操作。Impalad進(jìn)程主要含Query Planner、Query Coordinator和Query Exec Engine三個(gè)模塊,與HDFS的數(shù)據(jù)節(jié)點(diǎn)(HDFS DataNode)運(yùn)行在同一節(jié)點(diǎn)上,且完全分布運(yùn)行在MPP(大規(guī)模并行處理系統(tǒng))架構(gòu)上。

State Store:收集分布在集群上各個(gè)Impalad進(jìn)程的資源信息,用于查詢的調(diào)度,它會(huì)創(chuàng)建一個(gè)statestored進(jìn)程,來(lái)跟蹤集群中的Impalad的健康狀態(tài)及位置信息。statestored進(jìn)程通過(guò)創(chuàng)建多個(gè)線程來(lái)處理Impalad的注冊(cè)訂閱以及與多個(gè)Impalad保持心跳連接,此外,各Impalad都會(huì)緩存一份State Store中的信息。當(dāng)State Store離線后,Impalad一旦發(fā)現(xiàn)State Store處于離線狀態(tài)時(shí),就會(huì)進(jìn)入恢復(fù)模式,并進(jìn)行返回注冊(cè)。當(dāng)State Store重新加入集群后,自動(dòng)恢復(fù)正常,更新緩存數(shù)據(jù)。

CLI:CLI給用戶提供了執(zhí)行查詢的命令行工具。Impala還提供了Hue、JDBC及ODBC使用接口。

5-3 Impala查詢執(zhí)行過(guò)程

注冊(cè)和訂閱。當(dāng)用戶提交查詢前,Impala先創(chuàng)建一個(gè)Impalad進(jìn)程來(lái)負(fù)責(zé)協(xié)調(diào)客戶端提交的查詢,該進(jìn)程會(huì)向State Store提交注冊(cè)訂閱信息,State Store會(huì)創(chuàng)建一個(gè)statestored進(jìn)程,statestored進(jìn)程通過(guò)創(chuàng)建多個(gè)線程來(lái)處理Impalad的注冊(cè)訂閱信息。

提交查詢。通過(guò)CLI提交一個(gè)查詢到Impalad進(jìn)程,Impalad的Query Planner對(duì)SQL語(yǔ)句解析,生成解析樹(shù);Planner將解析樹(shù)變成若干PlanFragment,發(fā)送到Query Coordinator。其中PlanFragment由PlanNode組成,能被分發(fā)到單獨(dú)的節(jié)點(diǎn)上執(zhí)行,每個(gè)PlanNode表示一個(gè)關(guān)系操作和對(duì)其執(zhí)行優(yōu)化需要的信息。

獲取元數(shù)據(jù)與數(shù)據(jù)地址。Query Coordinator從MySQL元數(shù)據(jù)庫(kù)中獲取元數(shù)據(jù)(即查詢需要用到哪些數(shù)據(jù)),從HDFS的名稱節(jié)點(diǎn)中獲取數(shù)據(jù)地址(即數(shù)據(jù)被保存到哪個(gè)數(shù)據(jù)節(jié)點(diǎn)上),從而得到存儲(chǔ)這個(gè)查詢相關(guān)數(shù)據(jù)的所有數(shù)據(jù)節(jié)點(diǎn)。

分發(fā)查詢?nèi)蝿?wù)。Query Coordinator初始化相應(yīng)的Impalad上的任務(wù),即把查詢?nèi)蝿?wù)分配給所有存儲(chǔ)這個(gè)查詢相關(guān)數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)。

匯聚結(jié)果。Query Executor通過(guò)流式交換中間輸出,并由Query Coordinator匯聚來(lái)自各個(gè)Impalad的結(jié)果。

返回結(jié)果。Query Coordinator把匯總后的結(jié)果返回給CLI客戶端。

5-4 Impala與Hive

不同點(diǎn):

Hive適合長(zhǎng)時(shí)間批處理查詢分析;而Impala適合進(jìn)行交互式SQL查詢。

Hive依賴于MR計(jì)算框架,執(zhí)行計(jì)劃組合成管道型MR任務(wù)模型進(jìn)行執(zhí)行;而Impala則把執(zhí)行計(jì)劃表現(xiàn)為一棵完整的執(zhí)行計(jì)劃樹(shù),可更自然地分發(fā)執(zhí)行計(jì)劃到各個(gè)Impalad執(zhí)行查詢。

Hive在執(zhí)行過(guò)程中,若內(nèi)存放不下所有數(shù)據(jù),則會(huì)使用外存,以保證查詢能夠順利執(zhí)行完成;而Impala在遇到內(nèi)存放不下數(shù)據(jù)時(shí),不會(huì)利用外存,所以Impala處理查詢時(shí)會(huì)受到一定的限制。

相同點(diǎn):

使用相同的存儲(chǔ)數(shù)據(jù)池,都支持把數(shù)據(jù)存儲(chǔ)在HDFS和HBase中,其中HDFS支持存儲(chǔ)TEXT、RCFILE、PARQUET、AVRO、ETC等格式的數(shù)據(jù),HBase存儲(chǔ)表中記錄。

使用相同的元數(shù)據(jù)。

對(duì)SQL的解析處理比較類似,都是通過(guò)詞法分析生成執(zhí)行計(jì)劃。

【編輯推薦】

【責(zé)任編輯:武曉燕 TEL:(010)68476606】

點(diǎn)贊 0
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Impala:大數(shù)據(jù)叢林中敏捷迅速的黑斑羚
大數(shù)據(jù)時(shí)代快速SQL引擎-Impala
impala與hive的比較以及impala的有缺點(diǎn)
SQL on Hadoop系統(tǒng)的最新進(jìn)展(1)
Impala 3.4在網(wǎng)易的最新實(shí)踐
開(kāi)源大數(shù)據(jù)查詢分析引擎現(xiàn)狀
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服