一. 引言
Hadoop生態(tài)中的NoSQL數(shù)據(jù)分析三劍客Hive、HBase扩劝、Impala分別在海量批處理分析庸论、大數(shù)據(jù)列式存儲(chǔ)、實(shí)時(shí)交互式分析各有所長(zhǎng)棒呛。尤其是Impala聂示,自從加入Hadoop大家庭以來(lái),憑借其各個(gè)特點(diǎn)鮮明的優(yōu)點(diǎn)博取了廣大大數(shù)據(jù)分析人員的歡心簇秒。
Impala通過(guò)主節(jié)點(diǎn)生成執(zhí)行計(jì)劃樹(shù)并分發(fā)執(zhí)行計(jì)劃至各節(jié)點(diǎn)并行執(zhí)行的拉式獲取數(shù)據(jù)的工作方式催什,替代了Hadoop中傳統(tǒng)的MapReduce推式獲取數(shù)據(jù)的工作方式,計(jì)算的中間結(jié)果不寫(xiě)入磁盤(pán)宰睡,及時(shí)通過(guò)網(wǎng)絡(luò)以stream的方式傳遞蒲凶,交互性和實(shí)時(shí)性更強(qiáng);Impala不花費(fèi)額外的精力管理元數(shù)據(jù)拆内,而是使用Hive的Metastore進(jìn)行元數(shù)據(jù)管理旋圆,能夠直接訪問(wèn)存儲(chǔ)在Hadoop的HDFS和HBase中的PB級(jí)大數(shù)據(jù);Impala采用塊的方式將元數(shù)據(jù)加載到內(nèi)存進(jìn)行運(yùn)算麸恍,相比Hive灵巧、HBase而言運(yùn)算性能有了較大的提升;Impala提供SQL語(yǔ)義抹沪,相比HBase對(duì)于用戶而言使用方便快捷并且簡(jiǎn)單實(shí)用刻肄,無(wú)需其他編程語(yǔ)言,只需使用SQL語(yǔ)句即可完成復(fù)雜的數(shù)據(jù)分析任務(wù)融欧;Impala還繼承了Hadoop的靈活性敏弃、伸縮性和經(jīng)濟(jì)性,具有分布式本地化處理的特性以避免網(wǎng)絡(luò)瓶頸噪馏。
說(shuō)了Impala這么多優(yōu)點(diǎn)麦到,難道它真是一點(diǎn)缺點(diǎn)沒(méi)有的一款“完美”的分析工具嗎绿饵?
非也!在一年以上的Impala海量數(shù)據(jù)分析瓶颠、web應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn)中拟赊,Impala也陸陸續(xù)續(xù)暴露出了一些致命的問(wèn)題:
“啃內(nèi)存”一族,對(duì)于內(nèi)存的依賴過(guò)于嚴(yán)重粹淋,內(nèi)存溢出直接導(dǎo)致技術(shù)任務(wù)的失敗吸祟。
“閹割版”SQL——不支持UDF,不支持UPDATE/DELTE操作桃移,不支持同一SELECT中多個(gè)DISTINCT欢搜。
-
權(quán)限角色等安全機(jī)制的實(shí)現(xiàn)需要額外的安全組件,管理配置較復(fù)雜谴轮。
但是瑕不掩瑜,通過(guò)研究Impala的工作機(jī)制及錯(cuò)誤日志吹埠,我們發(fā)現(xiàn)Impala的上述缺陷都可以通過(guò)一些優(yōu)化方案和替代措施得以很好的解決第步。通過(guò)合理的優(yōu)化將Impala的性能最大化的挖掘,利用Hadoop生態(tài)開(kāi)源的優(yōu)勢(shì)與商業(yè)化的NewSQL數(shù)據(jù)庫(kù)相對(duì)抗缘琅,在節(jié)省軟件成本的同時(shí)獲取不遜于NewSQL數(shù)據(jù)庫(kù)的分析性能粘都。由于篇幅有限,今天我們先來(lái)談一談Impala內(nèi)存溢出問(wèn)題的優(yōu)化刷袍。
二. 告別“Memorylimit exceeded”——Impala內(nèi)存優(yōu)化
- SQLOperations that Spill to Disk
在介紹Impala內(nèi)存優(yōu)化技巧之前翩隧,我們先來(lái)看一下Impala官方針對(duì)內(nèi)存溢出問(wèn)題所作出的努力。Impala從Impala 1.4 for CDH4呻纹、CDH5.1版本開(kāi)始新增了“SQL Operations that Spill to Disk”功能堆生,即當(dāng)Impala內(nèi)存運(yùn)算溢出時(shí)轉(zhuǎn)移到磁盤(pán)進(jìn)行運(yùn)算,雖然在計(jì)算時(shí)需要占用臨時(shí)的磁盤(pán)空間雷酪,增加了磁盤(pán)I/O淑仆,導(dǎo)致運(yùn)算時(shí)間遠(yuǎn)高于純內(nèi)存運(yùn)算,但至少解決了內(nèi)存溢出時(shí)分析任務(wù)直接失敗這一“0”容錯(cuò)的致命問(wèn)題哥力。
該功能的開(kāi)啟也非常簡(jiǎn)單蔗怠,只需在impalashell中執(zhí)行set DISABLE_UNSAFE_SPILLS=0
或者set DISABLE_UNSAFE_SPILLS=FALSE
命令即可。當(dāng)設(shè)置DISABLE_UNSAFE_SPILLS
參數(shù)的值為0(FALSE)時(shí)吩跋,內(nèi)存運(yùn)算瀕臨溢出時(shí)轉(zhuǎn)為磁盤(pán)運(yùn)算寞射;設(shè)置為1(TRUE)時(shí),當(dāng)內(nèi)存溢出時(shí)直接報(bào)內(nèi)存溢出Memory limit exceeded
錯(cuò)誤锌钮。
測(cè)試在開(kāi)啟DISABLE_UNSAFE_SPILLS
參數(shù)時(shí)桥温,禁用了內(nèi)存溢出寫(xiě)入磁盤(pán)的功能,查詢?nèi)蝿?wù)失斄呵稹策治;但關(guān)閉DISABLE_UNSAFE_SPILLS
參數(shù)時(shí)脓魏,開(kāi)啟了內(nèi)存溢出寫(xiě)入磁盤(pán)的功能,雖然查詢?nèi)蝿?wù)用時(shí)1225秒通惫,但完成了該查詢?nèi)蝿?wù)茂翔。
在Cloudera manager的Impala查詢監(jiān)控界面中,我們可以看到兩次查詢所消耗的資源情況:
在測(cè)試中履腋,筆者將集群Impala節(jié)點(diǎn)的內(nèi)存限制為3.5GB珊燎,可以看到該查詢語(yǔ)句累積內(nèi)存使用峰值為3.6GB,產(chǎn)生“Memory limit exceeded”錯(cuò)誤遵湖。而開(kāi)啟了“SQL Operations that Spill to Disk”功能后悔政,使用內(nèi)存峰值改變?yōu)?.3GB,計(jì)算所需多余的內(nèi)存都轉(zhuǎn)為至磁盤(pán)進(jìn)行運(yùn)算(在集群三個(gè)DataNode節(jié)點(diǎn)各寫(xiě)入了10G的臨時(shí)數(shù)據(jù))延旧,避免了“Memory limit exceeded”報(bào)錯(cuò)谋国,成功完成了查詢。
內(nèi)存溢出的問(wèn)題僅憑借這一招就解決了迁沫?其實(shí)不然芦瘾!
實(shí)際上,Impala官方也承認(rèn)該功能存在很多限制集畅,并且還建議用戶盡可能的規(guī)避觸發(fā)“Spill to Disk”功能近弟。該功能目前存在的限制包括:
不是所有的SQL語(yǔ)句都能觸發(fā),例如union關(guān)鍵字還是會(huì)觸發(fā)內(nèi)存溢出錯(cuò)誤挺智;
各個(gè)節(jié)點(diǎn)的內(nèi)存峰值限制不能過(guò)低祷愉,低于運(yùn)算所需分配給各個(gè)節(jié)點(diǎn)的最小內(nèi)存;
運(yùn)算explain輸出的各個(gè)節(jié)點(diǎn)預(yù)估內(nèi)存不能過(guò)分高于各個(gè)節(jié)點(diǎn)的實(shí)際物理內(nèi)存赦颇;
當(dāng)觸發(fā)“Spill to Disk”功能時(shí)有其他并發(fā)查詢二鳄,仍會(huì)觸發(fā)內(nèi)存溢出錯(cuò)誤;
-
對(duì)磁盤(pán)的空間有一定的要求媒怯,磁盤(pán)運(yùn)算的數(shù)據(jù)會(huì)寫(xiě)入到impala各個(gè)節(jié)點(diǎn)的臨時(shí)目錄下泥从,增加了磁盤(pán)I/O,并且會(huì)引發(fā)不可控制的磁盤(pán)占用沪摄。
無(wú)論是官方建議躯嫉,還是實(shí)際使用經(jīng)驗(yàn)而言,“Spillto Disk”不是一個(gè)長(zhǎng)遠(yuǎn)之計(jì)杨拐。還是應(yīng)該通過(guò)優(yōu)化SQL查詢祈餐、修改系統(tǒng)參數(shù)、提高硬件配置等方式來(lái)解決內(nèi)存溢出的發(fā)生哄陶。
優(yōu)化SQL查詢
SQL優(yōu)化不僅是一個(gè)成熟的分析帆阳、開(kāi)發(fā)團(tuán)隊(duì)需要具備的基本素質(zhì),更能最大限度的挖掘Impala集群的性能屋吨,在數(shù)據(jù)分析時(shí)達(dá)到事半功倍的效果蜒谤。下面介紹一下Impala SQL優(yōu)化的四大法寶:
法寶一:Compute Stats
COMPUTE STATS(DDL)完成對(duì)表山宾、分區(qū)、列的數(shù)據(jù)量和數(shù)據(jù)分布信息的搜集鳍徽,搜集到的相關(guān)信息會(huì)被存儲(chǔ)在元數(shù)據(jù)庫(kù)中资锰。看似只是Impala中一條獲取表的統(tǒng)計(jì)信息的簡(jiǎn)單語(yǔ)句阶祭,但在整個(gè)分析任務(wù)調(diào)度過(guò)程中卻起著相當(dāng)重要的作用绷杜。該語(yǔ)句獲取的統(tǒng)計(jì)信息不僅在Impala對(duì)JOIN、GROUP BY濒募、ORDER BY鞭盟、UNION、DISTINCT等資源高消耗的查詢進(jìn)行優(yōu)化時(shí)會(huì)使用到瑰剃,而且對(duì)HBase的表也同樣起作用齿诉。
在Impala的分析任務(wù)中,無(wú)論是數(shù)據(jù)庫(kù)中的原始表晌姚、中間表粤剧、結(jié)果表還是查詢用到的海量數(shù)據(jù)表或者影響性能的關(guān)鍵表,建議在生成表之后執(zhí)行COMPUTE STATS table_name命令對(duì)表的相關(guān)信息進(jìn)行統(tǒng)計(jì)舀凛,集群會(huì)根據(jù)統(tǒng)計(jì)信息自動(dòng)選擇優(yōu)化的查詢方案。越是規(guī)模大的表(GB途蒋、TB級(jí)以上)統(tǒng)計(jì)命令執(zhí)行時(shí)間越長(zhǎng)猛遍,統(tǒng)計(jì)完成后的查詢優(yōu)化效果越是明顯。
在執(zhí)行完成統(tǒng)計(jì)信息命令后号坡,使用SHOW TABLE STATS table_name命令懊烤,檢測(cè)確認(rèn)統(tǒng)計(jì)信息是否可用,輸出表的詳細(xì)統(tǒng)計(jì)信息宽堆。
Compute Stats究竟有多重要腌紧?一起看看下面這個(gè)例子就知道了。
在做用戶畫(huà)像專題分析的過(guò)程中畜隶,我需要將用戶基礎(chǔ)信息表(3億條)壁肋、用戶語(yǔ)音業(yè)務(wù)信息表(1.6億條)、用戶數(shù)據(jù)業(yè)務(wù)信息表(9千萬(wàn)條)三張大表進(jìn)行關(guān)聯(lián)匯總籽慢,在使用Compute Stats命令前任務(wù)耗時(shí)50分鐘浸遗,各節(jié)點(diǎn)內(nèi)存峰值占用140GB,最終分析結(jié)果出現(xiàn)BUG箱亿,存在多條重復(fù)記錄的情況跛锌,任務(wù)所消耗的資源情況如下圖所示:
在對(duì)三張大表分別執(zhí)行ComputeStats命令之后,再次執(zhí)行該分析任務(wù)届惋,任務(wù)耗時(shí)32分鐘髓帽,各節(jié)點(diǎn)內(nèi)存峰值僅為17GB菠赚,分析結(jié)果正常,任務(wù)所消耗的資源情況如下圖所示:
可以看到Impala各節(jié)點(diǎn)在獲取到表的統(tǒng)計(jì)信息后郑藏,能夠更加合理的生成任務(wù)執(zhí)行計(jì)劃并完成任務(wù)的調(diào)度衡查,不僅降低了產(chǎn)生“Memory limit exceeded”錯(cuò)誤的風(fēng)險(xiǎn),而且避免了內(nèi)存消耗過(guò)大導(dǎo)致分析任務(wù)異常的BUG译秦。
值得一提的是在實(shí)際應(yīng)用過(guò)程中峡捡,經(jīng)常會(huì)有一些規(guī)模較大的表(TB級(jí)上千億條記錄)在執(zhí)行COMPUTE STATS命令時(shí)假死無(wú)法完成統(tǒng)計(jì)任務(wù)的情況。針對(duì)這種情況筑悴,有兩種方法可以解決:一是從Impala 2.1 for CDH5.3版本新增了COMPUTE INCREMENTAL STATS(DDL)命令们拙,將大表分區(qū)存儲(chǔ)后,可用該命令增量的對(duì)各分區(qū)進(jìn)行統(tǒng)計(jì)阁吝,并且當(dāng)分區(qū)變動(dòng)時(shí)只對(duì)變化部分進(jìn)行掃描砚婆,并更新相應(yīng)的統(tǒng)計(jì)信息;二是對(duì)于沒(méi)有升級(jí)到高版本的Impala集群或是物理資冶受限的增量統(tǒng)計(jì)也無(wú)法完成統(tǒng)計(jì)任務(wù)的情況突勇,我們可以通過(guò)手動(dòng)更新表的統(tǒng)計(jì)信息装盯、設(shè)置分區(qū)的統(tǒng)計(jì)信息等方式解決。如下圖示例甲馋,首先對(duì)表count()埂奈,然后通過(guò)alter table table_name settblproperties('numRows'='n')命令(n表示count()獲取到的具體記錄條數(shù))手動(dòng)設(shè)置表的記錄條數(shù),再次查詢表的統(tǒng)計(jì)信息定躏,發(fā)現(xiàn)Impala集群已經(jīng)成功獲取到表的統(tǒng)計(jì)信息了账磺。-
法寶二:執(zhí)行計(jì)劃
通過(guò)在SQL語(yǔ)句前加入“EXPLAIN”關(guān)鍵字,可以返回該語(yǔ)句的執(zhí)行計(jì)劃痊远。執(zhí)行計(jì)劃從底層顯示Impala如何讀取數(shù)據(jù)垮抗,如何在各節(jié)點(diǎn)之間協(xié)調(diào)工作,組合并傳輸中間結(jié)果碧聪,并獲得最終結(jié)果集的全過(guò)程冒版。
根據(jù)執(zhí)行計(jì)劃,可以判斷這個(gè)語(yǔ)句的執(zhí)行效率逞姿,如果發(fā)現(xiàn)效率過(guò)低辞嗡,可以調(diào)整語(yǔ)句本身,或者調(diào)整表結(jié)構(gòu)滞造。例如可以通過(guò)改變WHERE查詢條件欲间、對(duì)JOIN查詢使用hints、引入子查詢断部、改變表的連接順序猎贴、改變表的分區(qū)、搜集表及列統(tǒng)計(jì)信息或者其他方式來(lái)對(duì)語(yǔ)句進(jìn)行性能優(yōu)化。
上圖是對(duì)一個(gè)查詢語(yǔ)句調(diào)用EXPLAIN查看執(zhí)行計(jì)劃她渴,對(duì)于輸出結(jié)果自底向上按序閱讀:
(1)最后一部分內(nèi)容展示了讀取的總數(shù)據(jù)量等底層的詳細(xì)信息达址。通過(guò)讀取的數(shù)據(jù)量,我們可以判斷分區(qū)策略是否有效趁耗,并結(jié)合集群大小預(yù)估讀取這些數(shù)據(jù)需要的實(shí)際等沉唠。
(2)可以看到執(zhí)行過(guò)程中聚合、排序苛败、統(tǒng)計(jì)函數(shù)满葛、交互的順序及具體執(zhí)行細(xì)節(jié),可以從更高級(jí)別看到中間結(jié)果在不同節(jié)點(diǎn)間的流向罢屈。
(3)我們可以看到操作是否被Impala不同的節(jié)點(diǎn)并行執(zhí)行嘀韧,以及各節(jié)點(diǎn)所需內(nèi)存預(yù)估值。(4)通過(guò)配置EXPLAIN_LEVEL參數(shù)缠捌,可以了解到更詳細(xì)的輸出信息锄贷。取值從0~3,對(duì)應(yīng)的執(zhí)行計(jì)劃信息越來(lái)越詳細(xì)曼月。
- 法寶三:PROFILE查詢信息
使用PROFILE語(yǔ)句可以輸出最近執(zhí)行的SQL查詢的更詳細(xì)更底層的信息谊却。在查詢執(zhí)行完成后,無(wú)論查詢成功與否哑芹,輸入PROFILE命令即可輸出查詢的詳細(xì)信息炎辨。它包括了執(zhí)行該查詢每個(gè)節(jié)點(diǎn)讀取的物理字節(jié)數(shù),使用的最大內(nèi)存量等信息聪姿。通過(guò)這些信息碴萧,我們可以判斷查詢是IP消耗型的、CPU消耗型的咳燕、網(wǎng)絡(luò)消耗型的勿决,或者受性能低下節(jié)點(diǎn)的影響乒躺,從而可以檢查某些推薦的配置是否生效等招盲。
Profile輸出的查詢信息內(nèi)容包括:
(1)執(zhí)行查詢的查詢狀態(tài)、查詢起始時(shí)間嘉冒、查詢語(yǔ)句曹货、提交查詢?nèi)蝿?wù)的Impala節(jié)點(diǎn)等基礎(chǔ)信息:
(2)查詢的執(zhí)行計(jì)劃和步驟:
(3)各個(gè)步驟執(zhí)行情況的統(tǒng)計(jì)信息,包括各節(jié)點(diǎn)的執(zhí)行平均時(shí)長(zhǎng)讳推、最大時(shí)長(zhǎng)顶籽、讀取數(shù)據(jù)量、內(nèi)存峰值等信息:
(4)各個(gè)步驟執(zhí)行情況的詳細(xì)信息及每個(gè)步驟分配到各個(gè)節(jié)點(diǎn)執(zhí)行的詳細(xì)信息(由于該部分信息過(guò)多银觅,截圖省略)礼饱。
在運(yùn)行一個(gè)查詢之后,使用PROFILE命令從底層確認(rèn)該查詢的IO、內(nèi)存消耗镊绪、網(wǎng)絡(luò)帶寬占用匀伏、CPU使用率等信息是否在我們期望的范圍之內(nèi),若不是最優(yōu)方案蝴韭,則有的放矢通過(guò)對(duì)SQL語(yǔ)句進(jìn)行調(diào)優(yōu)够颠、調(diào)整節(jié)點(diǎn)配置等方式進(jìn)行優(yōu)化。
法寶四:結(jié)構(gòu)優(yōu)化
在使用了上述三個(gè)法寶之后若Impala內(nèi)存溢出問(wèn)題還是沒(méi)有解決的話榄鉴,那么就有必要從結(jié)構(gòu)方面考慮一下優(yōu)化措施了履磨。
(1)Parquet表存儲(chǔ)
為Impala中源數(shù)據(jù)、中間表庆尘、結(jié)果表選擇合適的存儲(chǔ)結(jié)構(gòu)剃诅。Impala默認(rèn)是建立TEXT格式的表存儲(chǔ),而對(duì)于海量數(shù)據(jù)的存儲(chǔ)减余,優(yōu)選Parquet格式的存儲(chǔ)方式综苔。在建表時(shí)顯示的指定以Parquet格式建表,并且避免使用INSER...VALUES語(yǔ)句向Parquet表中插入數(shù)據(jù)位岔。因?yàn)檫@種方式每插入一行數(shù)據(jù)就會(huì)在HDFS上產(chǎn)生單獨(dú)的一個(gè)小數(shù)據(jù)文件如筛,會(huì)降低數(shù)據(jù)查詢的并行度從而影響查詢速度。
(2)分區(qū)技術(shù)
當(dāng)表的數(shù)據(jù)量非常龐大或者表總是按照某些特定的列進(jìn)行查詢時(shí)抒抬,通過(guò)分區(qū)技術(shù)能極大的提升Impala的查詢速度杨刨。在分區(qū)時(shí)分區(qū)列要有一定的區(qū)分度,也就是要包含一定數(shù)據(jù)的非重復(fù)值擦剑。根據(jù)實(shí)際情況選擇分區(qū)的粒度妖胀,盡量保證每個(gè)分區(qū)的數(shù)據(jù)都大于1GB或者是1GB的倍數(shù)捍岳。只有分區(qū)的粒度使數(shù)據(jù)文件的大小合適殖妇,才能充分利用HDFS的IO批處理性能和Impala的分布式查詢亥宿。
(3)SQL語(yǔ)句
SQL語(yǔ)句性能對(duì)最終任務(wù)的執(zhí)行效率有著直接的影響撑帖。以下是SQL優(yōu)化的一些“經(jīng)驗(yàn)之談”:
關(guān)聯(lián)條件盡量避免用過(guò)長(zhǎng)的string進(jìn)行關(guān)聯(lián)搀绣,盡可能使用數(shù)字進(jìn)行關(guān)聯(lián)忧陪。
對(duì)龐大任務(wù)拆分后“分而治之”鹦牛,用建立中間表逐步執(zhí)行的方式替代多層嵌套任務(wù)羹幸。
如果參與關(guān)聯(lián)的表的統(tǒng)計(jì)信息不可用售担,或者Impala自動(dòng)選擇的連接順效率很低赁遗,可以在SELECT關(guān)鍵字后使用STRAIGHT_JOIN關(guān)鍵字按照“大表在左,小表在右”的原則手動(dòng)指定表連接順序族铆。
使用Hints手動(dòng)從底層調(diào)整SQL查詢的工作方式岩四,Hints的使用方式為使用[]將特定的Hints括起來(lái)放在SQL語(yǔ)句中。
大表與小表的關(guān)聯(lián)時(shí)哥攘,使用Hints指定[BROADCAST]為連接方式剖煌;處理大表之間的關(guān)聯(lián)時(shí)材鹦,使用Hints指定[SHUFFLE]為連接方式。
優(yōu)化集群系統(tǒng)資源
除了從SQL查詢方面進(jìn)行優(yōu)化之外耕姊,還可以通過(guò)對(duì)Impala集群系統(tǒng)在資源配置方面加以優(yōu)化侠姑,做到“雙管齊下”。Impala的準(zhǔn)入控制功能是一個(gè)輕量級(jí)的箩做、分布式資源控制機(jī)制莽红,它可以限制查詢使用的內(nèi)存段大小,并行執(zhí)行的查詢數(shù)量等邦邦。利用該功能對(duì)系統(tǒng)配置進(jìn)行優(yōu)化視具體集群環(huán)境而定安吁,優(yōu)化的思路包括:
合理對(duì)impalad進(jìn)程制定-MEM_LIMIT選項(xiàng)來(lái)限制預(yù)留給查詢的內(nèi)存大小。
配置YARN進(jìn)行動(dòng)態(tài)分配燃辖,合理制定Impala與Hadoop其他組件的內(nèi)存分配關(guān)系鬼店。
針對(duì)不同的用戶組的應(yīng)用請(qǐng)求,配置Cgroup資源池機(jī)制來(lái)隔離資源的使用黔龟。
若內(nèi)存溢出大多出現(xiàn)在并行小查詢數(shù)過(guò)多而非少量?jī)?nèi)存占用較高的大查詢時(shí)妇智,通過(guò)Impala admission control功能限制并發(fā)查詢。
配置查詢隊(duì)列氏身,新的查詢請(qǐng)求到來(lái)時(shí)若系統(tǒng)資源已達(dá)到峰值巍棱,則被放入等待隊(duì)列,在之前查詢執(zhí)行完成并釋放相關(guān)資源后蛋欣,等待隊(duì)列中的查詢才能夠被執(zhí)行航徙。
使用準(zhǔn)入控制來(lái)控制集群中Impala作業(yè)對(duì)并發(fā)和內(nèi)存的消耗,使用YARN控制Hadoop其他組件的資源消耗陷虎。
三. 寫(xiě)在后面
Impala作為一款開(kāi)源的大數(shù)據(jù)分析引擎到踏,其自身存在的一些缺陷是可以接受的。通過(guò)采用一些合理的優(yōu)化方案尚猿,挖掘它的潛力窝稿,當(dāng)真正“玩轉(zhuǎn)”之后,Impala一定會(huì)帶給你意想不到的驚喜凿掂。