在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

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

一、Hadoop介紹

Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。

Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(HadoopDistributedFileSystem),簡稱HDFS。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(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就像一個(gè)傳統(tǒng)的分級文件系統(tǒng)。可以創(chuàng)建、刪除、移動(dòng)或重命名文件,等等。但是HDFS的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的(參見圖1),這是由它自身的特點(diǎn)決定的。這些節(jié)點(diǎn)包括NameNode(僅一個(gè)),它在HDFS內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,它為HDFS提供存儲(chǔ)塊。由于僅存在一個(gè)NameNode,因此這是HDFS的一個(gè)缺點(diǎn)(單點(diǎn)失?。?/p>

存儲(chǔ)在HDFS中的文件被分成塊,然后將這些塊復(fù)制到多個(gè)計(jì)算機(jī)中(DataNode)。這與傳統(tǒng)的RAID架構(gòu)大不相同。塊的大?。ㄍǔ?4MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時(shí)由客戶機(jī)決定。NameNode可以控制所有文件操作。HDFS內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的TCP/IP協(xié)議。

NameNode

NameNode是一個(gè)通常在HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問。NameNode決定是否將文件映射到DataNode上的復(fù)制塊上。對于最常見的3個(gè)復(fù)制塊,第一個(gè)復(fù)制塊存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn)上,最后一個(gè)復(fù)制塊存儲(chǔ)在不同機(jī)架的某個(gè)節(jié)點(diǎn)上。注意,這里需要您了解集群架構(gòu)。

二、hive介紹

Hive是部署在hadoop集群上的數(shù)據(jù)倉庫工具。

數(shù)據(jù)庫和數(shù)據(jù)倉庫的區(qū)別:

數(shù)據(jù)庫(如常用關(guān)系型數(shù)據(jù)庫)可以支持實(shí)時(shí)增刪改查。

數(shù)據(jù)倉庫不僅僅是為了存放數(shù)據(jù),它可以存放海量數(shù)據(jù),而且可以查詢、分析和計(jì)算存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)。但他有一個(gè)弱點(diǎn),他不能進(jìn)行實(shí)時(shí)的更新、刪除等操作。也就是一次寫入多次讀取。

Hive也定義了簡單的類SQL查詢語言,稱為QL,它允許熟悉SQL的用戶查詢數(shù)據(jù)?,F(xiàn)在hive2.0也支持更新、索引和事務(wù),幾乎SQL的其它特征都能支持。

Hive支持SQL92大部分功能,我們暫時(shí)可以把hive理解成一個(gè)關(guān)系型數(shù)據(jù)庫,語法和MySQL是幾乎是一樣的。

Hive是Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架之一,是SQL解析引擎,它可以將SQL轉(zhuǎn)換成MapReduce任務(wù),然后在Hadoop執(zhí)行。

實(shí)際的I/O事務(wù)并沒有經(jīng)過NameNode,只有表示DataNode和塊的文件映射的元數(shù)據(jù)經(jīng)過NameNode。當(dāng)外部客戶機(jī)發(fā)送請求要求創(chuàng)建文件時(shí),NameNode會(huì)以塊標(biāo)識和該塊的第一個(gè)副本的DataNodeIP地址作為響應(yīng)。這個(gè)NameNode還會(huì)通知其他將要接收該塊的副本的DataNode。

NameNode在一個(gè)稱為FsImage的文件中存儲(chǔ)所有關(guān)于文件系統(tǒng)名稱空間的信息。這個(gè)文件和一個(gè)包含所有事務(wù)的記錄文件(這里是EditLog)將存儲(chǔ)在NameNode的本地文件系統(tǒng)上。FsImage和EditLog文件也需要復(fù)制副本,以防文件損壞或NameNode系統(tǒng)丟失。

NameNode本身不可避免地具有SPOF(SinglePointOfFailure)單點(diǎn)失效的風(fēng)險(xiǎn),主備模式并不能解決這個(gè)問題,通過HadoopNon-stopnamenode才能實(shí)現(xiàn)100%uptime可用時(shí)間。

DataNode

DataNode也是一個(gè)通常在HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。Hadoop集群包含一個(gè)NameNode和大量DataNode。DataNode通常以機(jī)架的形式組織,機(jī)架通過一個(gè)交換機(jī)將所有系統(tǒng)連接起來。Hadoop的一個(gè)假設(shè)是:機(jī)架內(nèi)部節(jié)點(diǎn)之間的傳輸速度快于機(jī)架間節(jié)點(diǎn)的傳輸速度。

DataNode響應(yīng)來自HDFS客戶機(jī)的讀寫請求。它們還響應(yīng)來自NameNode的創(chuàng)建、刪除和復(fù)制塊的命令。NameNode依賴來自每個(gè)DataNode的定期心跳(heartbeat)消息。每條消息都包含一個(gè)塊報(bào)告,NameNode可以根據(jù)這個(gè)報(bào)告驗(yàn)證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。如果DataNode不能發(fā)送心跳消息,NameNode將采取修復(fù)措施,重新復(fù)制在該節(jié)點(diǎn)上丟失的塊。

文件操作

可見,HDFS并不是一個(gè)萬能的文件系統(tǒng)。它的主要目的是支持以流的形式訪問寫入的大型文件。

如果客戶機(jī)想將文件寫到HDFS上,首先需要將該文件緩存到本地的臨時(shí)存儲(chǔ)。如果緩存的數(shù)據(jù)大于所需的HDFS塊大小,創(chuàng)建文件的請求將發(fā)送給NameNode。NameNode將以DataNode標(biāo)識和目標(biāo)塊響應(yīng)客戶機(jī)。

同時(shí)也通知將要保存文件塊副本的DataNode。當(dāng)客戶機(jī)開始將臨時(shí)文件發(fā)送給第一個(gè)DataNode時(shí),將立即通過管道方式將塊內(nèi)容轉(zhuǎn)發(fā)給副本DataNode??蛻魴C(jī)也負(fù)責(zé)創(chuàng)建保存在相同HDFS名稱空間中的校驗(yàn)和(checksum)文件。

在最后的文件塊發(fā)送之后,NameNode將文件創(chuàng)建提交到它的持久化元數(shù)據(jù)存儲(chǔ)(在EditLog和FsImage文件)。

Linux集群

Hadoop框架可在單一的Linux平臺(tái)上使用(開發(fā)和調(diào)試時(shí)),官方提供MiniCluster作為單元測試使用,不過使用存放在機(jī)架上的商業(yè)服務(wù)器才能發(fā)揮它的力量。這些機(jī)架組成一個(gè)Hadoop集群。它通過集群拓?fù)渲R決定如何在整個(gè)集群中分配作業(yè)和文件。Hadoop假定節(jié)點(diǎn)可能失敗,因此采用本機(jī)方法處理單個(gè)計(jì)算機(jī)甚至所有機(jī)架的失敗。

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

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

?用戶接口,包括CLI(Shell命令行),JDBC/ODBC,WebUI

?MetaStore元數(shù)據(jù)庫,通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫如mysql,derby中

?Driver包含解釋器、編譯器、優(yōu)化器、執(zhí)行器

?Hadoop:用HDFS進(jìn)行存儲(chǔ),利用MapReduce進(jìn)行計(jì)算

Hive的表和數(shù)據(jù)庫,對應(yīng)的其實(shí)是HDFS(Hadoop分布式文件系統(tǒng))的目錄/文件,按表名把文件夾分開。如果是分區(qū)表,則分區(qū)值是子文件夾,可以直接在MapReduceJob里使用這些數(shù)據(jù)。

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

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

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

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

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

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

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

四、Hive的部署和應(yīng)用

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ù)場景需求。

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

圖企業(yè)中一種常見的大數(shù)據(jù)分析平臺(tái)部署框架

上圖是企業(yè)中一種常見的大數(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正是為此開發(fā),可較好地支持實(shí)時(shí)訪問數(shù)據(jù)。

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

五、Hive工作原理

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

1.1用MapReduce實(shí)現(xiàn)連接操作

假設(shè)連接(join)的兩個(gè)表分別是用戶表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》),其中第一個(gè)“1”是uid的值,第二個(gè)“1”是表User的標(biāo)記位,用來標(biāo)示這個(gè)鍵值對來自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》)傳送到同一臺(tái)Reduce機(jī)器上。當(dāng)Reduce機(jī)器接收到這些KV對時(shí),還需按表的標(biāo)記位對這些鍵值對進(jìn)行排序,以優(yōu)化連接操作;

最后,在Reduce階段,對同一臺(tái)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實(shí)現(xiàn)分組操作

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

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

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

圖用MapReduce實(shí)現(xiàn)分組操作的實(shí)現(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)傳送到同一臺(tái)Reduce機(jī)器上,鍵值對(《B,2》,1)傳送另一Reduce機(jī)器上。然后,Reduce機(jī)器對接收到的這些鍵值對,按“鍵”的值進(jìn)行排序;

在Reduce階段,把具有相同鍵的所有鍵值對的“值”進(jìn)行累加,生成分組的最終結(jié)果。比如,在同一臺(tái)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ū)動(dòng)模塊,由驅(qū)動(dòng)模塊中的編譯器解析編譯,并由優(yōu)化器對該操作進(jìn)行優(yōu)化計(jì)算,然后交給執(zhí)行器去執(zhí)行。執(zhí)行器通常啟動(dòng)一個(gè)或多個(gè)MR任務(wù),有時(shí)也不啟動(dòng)(如SELECT*FROMtb1,全表掃描,不存在投影和選擇操作)

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

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

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

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

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

Hive驅(qū)動(dòng)模塊中的邏輯優(yōu)化器對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)化器,對生成的MR任務(wù)進(jìn)行優(yōu)化,生成最終的MR任務(wù)執(zhí)行計(jì)劃;

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

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

JobTracker/TaskTracker

NameNode/DataNode

六、HiveHA基本原理

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

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

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

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

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

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

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

七、Impala

1、Impala簡介

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

Impala作為新一代開源大數(shù)據(jù)分析引擎,最初參照Dremel(由Google開發(fā)的交互式數(shù)據(jù)分析系統(tǒng)),支持實(shí)時(shí)計(jì)算,提供與Hive類似的功能,在性能上高出Hive3~30倍。Impala可能會(huì)超過Hive的使用率能成為Hadoop上最流行的實(shí)時(shí)計(jì)算平臺(tái)。Impala采用與商用并行關(guān)系數(shù)據(jù)庫類似的分布式查詢引擎,可直接從HDFS、HBase中用SQL語句查詢數(shù)據(jù),不需把SQL語句轉(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語法、ODBC驅(qū)動(dòng)程序和用戶接口,可統(tǒng)一部署Hive和Impala等分析工具,同時(shí)支持批處理和實(shí)時(shí)查詢。

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平臺(tái)上。Impala由Impalad、StateStore和CLI三部分組成。

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

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

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

3、Impala查詢執(zhí)行過程

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

圖Impala查詢執(zhí)行過程

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

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

獲取元數(shù)據(jù)與數(shù)據(jù)地址。QueryCoordinator從MySQL元數(shù)據(jù)庫中獲取元數(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ù)。QueryCoordinator初始化相應(yīng)的Impalad上的任務(wù),即把查詢?nèi)蝿?wù)分配給所有存儲(chǔ)這個(gè)查詢相關(guān)數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)。

匯聚結(jié)果。QueryExecutor通過流式交換中間輸出,并由QueryCoordinator匯聚來自各個(gè)Impalad的結(jié)果。

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

4、Impala與Hive

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

圖Impala與Hive的對比

不同點(diǎn):

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

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

Hive在執(zhí)行過程中,若內(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ù)。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)倉庫
    +關(guān)注

    關(guān)注

    0

    文章

    61

    瀏覽量

    10447
  • Hadoop
    +關(guān)注

    關(guān)注

    1

    文章

    90

    瀏覽量

    15983
  • hive
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    3850
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

    數(shù)據(jù)倉庫
    光點(diǎn)科技
    發(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è)計(jì)

    針對數(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)計(jì)行業(yè)數(shù)據(jù)倉庫構(gòu)建及應(yīng)用

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

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

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

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

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

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

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

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

    本文開始介紹數(shù)據(jù)倉庫是什么,其次詳細(xì)介紹數(shù)據(jù)倉庫的特點(diǎn)、數(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>的特點(diǎn)_<b class='flag-5'>數(shù)據(jù)倉庫</b>與<b class='flag-5'>數(shù)據(jù)</b>庫區(qū)別

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

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

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

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

    如何搭建數(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 ?2331次閱讀

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

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

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

      隨著數(shù)據(jù)倉庫規(guī)模的擴(kuò)大,數(shù)據(jù)倉庫的性能問題就顯得越來越突出,如何提高數(shù)據(jù)倉庫的性能,除了在設(shè)計(jì)階段對其邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計(jì)外;還可以在數(shù)據(jù)倉庫運(yùn)行階段,采取一些優(yōu)化措施來
    發(fā)表于 07-18 16:10 ?0次下載
    主站蜘蛛池模板: 黄色一级片视频| v天堂网| 亚洲系列_1页_mmyy11| se94se最新网站| 夜色伊人| 激情五月亚洲色图| 全免费一级午夜毛片| 日本不卡视频在线观看| 日本www色视频| 午夜国产精品视频| 91av免费在线观看| 色多多视频在线| 夜夜爽爽| 视频1区| 噜噜噜噜噜噜色| 女人又色又爽又黄| 91视频毛片| 黄色毛片免费| 成人免费一区二区三区| 亚洲国产成人在人网站天堂| 国产精品热久久毛片| 窝窝午夜在线观看免费观看| 天堂资源wwww在线看| 222.www免费观看| 55夜色66夜色国产精品站| 日本色色图| 手机看片福利国产| tom影院亚洲国产一区二区| 黄色三级视频| 97精品久久天干天天蜜| 四虎永久精品视频在线| 午夜精品国产| 黄网站色视频免费看无下截| 激情六月色| 日本人69xxxxx| 久在操| 亚洲图色视频| 97人人插| 老师你好大好白好紧好硬| 精品伊人久久大香线蕉网站| 1024手机看片日韩|