Impala的特點(diǎn)有哪些

本篇內(nèi)容主要講解“Impala的特點(diǎn)有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Impala的特點(diǎn)有哪些”吧!

創(chuàng)新互聯(lián)長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為灌南企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),灌南網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

Impala 是參照google 的新三篇論文Dremel(大批量數(shù)據(jù)查詢工具)的開源實(shí)現(xiàn),功能類似shark(依賴于hive)和Drill(apache),impala 是clouder 公司主導(dǎo)開發(fā)并開源,基于hive 并使用內(nèi)存進(jìn)行計(jì)算,兼顧數(shù)據(jù)倉庫,具有實(shí)時(shí),批處理,多并發(fā)等優(yōu)點(diǎn)。是使用cdh 的首選PB 級(jí)大數(shù)據(jù)實(shí)時(shí)查詢分析引擎。(Impala 依賴cdh 是完全沒有問題的,官網(wǎng)說可以單獨(dú)運(yùn)行,但是他單獨(dú)運(yùn)行會(huì)出現(xiàn)好多的問題)

Impala與Shark、sparkSQL、Drill等的簡(jiǎn)單比較
Impala的特點(diǎn)有哪些

  • Impala起步較早,目前能夠商用的為數(shù)不多的大數(shù)據(jù)查詢引擎之一;

  • CDH5不支持sparkSQL;

  • Drill起步晚,尚不成熟;

  • shark功能和架構(gòu)上同Impala相似,該項(xiàng)目已經(jīng)停止開發(fā)。

Impala特點(diǎn)

  • 基于內(nèi)存進(jìn)行計(jì)算,能夠?qū)B級(jí)數(shù)據(jù)進(jìn)行交互式實(shí)時(shí)查詢/分析;

  • 無需轉(zhuǎn)換為MR,直接讀取HDFS數(shù)據(jù)

  • C++編寫,LLVM統(tǒng)一編譯運(yùn)行

  • 兼容HiveSQL

  • 具有數(shù)據(jù)倉庫的特性,可對(duì)hive數(shù)據(jù)直接做數(shù)據(jù)分析

  • 支持Data Local

  • 支持列式存儲(chǔ)

  • 支持JDBC/ODBC遠(yuǎn)程訪問

  • 支持sql92標(biāo)準(zhǔn),并具有自己的解析器和優(yōu)化器Impala的特點(diǎn)有哪些

    Impala的特點(diǎn)有哪些

    Impala核心組件

    對(duì)于impala 來講,是沒有主節(jié)點(diǎn)的,而要理解主節(jié)點(diǎn),impala statestore 和catalog server兩個(gè)角色,就具備集群調(diào)節(jié)的功能,根據(jù)以上的特點(diǎn),對(duì)impala 進(jìn)行配置優(yōu)化配置impala 內(nèi)存,每一個(gè)deamon 都需要配置內(nèi)存,因?yàn)檎嬲霾樵児ぷ鞯木褪莇eamon 所在的節(jié)點(diǎn),所以impala 的總內(nèi)存,就是所有deamon 節(jié)點(diǎn)的內(nèi)存之和;如果要在哪臺(tái)機(jī)器上面匯總,就需要在那一臺(tái)機(jī)器上的內(nèi)存調(diào)大一些;我們了解到的,真正提供查詢的是deamon,那么我們連接哪一臺(tái)呢?Impala,你可以連接其中deamon 任何一個(gè)都行,可以根據(jù)自己的需求來,(1)當(dāng)你查詢的量相對(duì)大的時(shí)候,你就連接內(nèi)存大的機(jī)器,(2)當(dāng)每臺(tái)機(jī)器都適合查詢的情況下也可以隨機(jī)找一臺(tái)機(jī)器,自己寫一個(gè)輪詢或者權(quán)重算法;解決高并發(fā)問題

    • Statestore Daemon

      • 負(fù)責(zé)收集分布在集群中各個(gè)impalad 進(jìn)程的資源信息,各節(jié)點(diǎn)健康狀況、同步節(jié)點(diǎn)信息.
        負(fù)責(zé)query 的調(diào)度.(并非絕對(duì),倘若他存在,那就幫忙,若不存在,那就不用他)
        對(duì)于一個(gè)正常運(yùn)轉(zhuǎn)的集群,并不是一個(gè)關(guān)鍵進(jìn)程.

    • Catalog Daemon(1.2 版本之后才加入)

      • 把impala表的metadata分發(fā)到各個(gè)impalad 中,說他是基于hive 的,所以就需要metadata數(shù)據(jù)分到impalad 中,以前沒有此進(jìn)程,就是手動(dòng)來進(jìn)行同步的。雖然之后加入了,但是也沒有那么智能,并不是保證所有的數(shù)據(jù)都能同步,比如你插入一些數(shù)據(jù),他可以把數(shù)據(jù)發(fā)到其他節(jié)點(diǎn),但是比如創(chuàng)建表ddl 語句,建議去手動(dòng)做一下。接收來自statestore 的所有請(qǐng)求,當(dāng)impala deamon節(jié)點(diǎn)插入或者查詢數(shù)據(jù)時(shí)候(數(shù)據(jù)改變的時(shí)候),他把自己的操作結(jié)果匯報(bào)給state deamon,然后state store 請(qǐng)求catelog deamon,告知重新更新元數(shù)據(jù)信息給impalad 中,所以catalog deamon 與statedeamon 放到一臺(tái)機(jī)器上,而且不建議在此機(jī)器上再去安裝impala deamon 進(jìn)程,避免造成提供查詢?cè)斐杉汗芾沓鰡栴}

    • Impala Daemon(主要來提供查詢)

      • 主要接收查詢請(qǐng)求,接收client、hue、jdbc 或者odbc 請(qǐng)求、query 執(zhí)行并返回給中心協(xié)調(diào)節(jié)點(diǎn)(對(duì)應(yīng)的服務(wù)實(shí)例是impalad)子節(jié)點(diǎn)上的守護(hù)進(jìn)程,負(fù)責(zé)向statestore 保持通信,匯報(bào)工作Impala的特點(diǎn)有哪些

        • Client(shell,jdbc,odbc)發(fā)送請(qǐng)求到impalad 進(jìn)程上,發(fā)送節(jié)點(diǎn)可以是隨機(jī)的,impalad 之間,也有相互通信

        • Statestore 和catelog 劃到同一節(jié)點(diǎn),目的就是這兩個(gè)進(jìn)程在協(xié)調(diào)工作時(shí)候,避免因網(wǎng)絡(luò)問題造成失敗

        • Hive metastore 是比較重要的,此時(shí)statestore 和catelog 通信,將數(shù)據(jù)同步到其他節(jié)點(diǎn)

        • Impalad 最好與hdfsDataNode 在同一節(jié)點(diǎn),這樣能更快速的查詢計(jì)算,然后返回結(jié)果即可(理想狀態(tài)的就是數(shù)據(jù)本地化)

          • Query planner(查詢解析器)

          • ii. Query coordinator(中心協(xié)調(diào)節(jié)點(diǎn))

          • Query executor(查詢執(zhí)行器)

          • 將我們的字符串sql 語句解釋成為執(zhí)行計(jì)劃,

          • 由這個(gè)組件來指定來查詢的主節(jié)點(diǎn)(頭),指定好之后通知其他節(jié)點(diǎn)我的主節(jié)點(diǎn)作用,待你們查詢完成之后的結(jié)果,返回給頭節(jié)點(diǎn)

          • 而做查詢工作的是就是executor

          • Impalad 里面包含三個(gè)組件

        impala 外部shell

        • -h(--help)幫助-------查看所有命令的幫助文檔

        • -r(--refresh_after_connect)刷新所有元數(shù)據(jù)(當(dāng)hive 創(chuàng)建數(shù)據(jù)的時(shí)候,你需要刷新到,才能看到hive 元數(shù)據(jù)的改變)整體刷新*---全量刷新,萬不得已才能用;不建議定時(shí)去刷新hive 源數(shù)據(jù),數(shù)據(jù)量太大時(shí)候,一個(gè)刷新,很有可能會(huì)掛掉;創(chuàng)建hive 表,然后刷新。

        • -B(--delimited)去格式化輸出* 大量數(shù)據(jù)加入格式化,性能受到影響

          • --output_delimiter=character 指定分隔符與其他命令整合

          • --print_header 打印列名(去格式化,但是顯示列名字)

        • -v 查看對(duì)應(yīng)版本(會(huì)有坑)

          • Impala 的查詢會(huì)以最新版本為準(zhǔn),如果版本不一致,會(huì)造成查詢結(jié)果失敗

          • mpala-shell 與impala 的版本查看,必須版本一致

        • -f 執(zhí)行查詢文件*

          select name,count(name) as name_count from person group by name--創(chuàng)建包含該sql的文件

           

          • --query_file 指定查詢文件(建議sql 語句寫到一行,因?yàn)閟hell 會(huì)讀取文件一行一行的命令)

          • Impala-shell --query_file=xxx

        • -i 連接到對(duì)應(yīng)的impalad

          • --impalad 指定impalad 去執(zhí)行任務(wù)

          • --fe_port 指定備用端口(通常不用去指定)

        • -o 保存執(zhí)行結(jié)果到文件***

          • --output_file 指定輸出文件名

        • 組合應(yīng)用:

          impala-shell -B --Print_header -f test.sss -o result.txt
          Impala-shell -B -f test.xxx -o result.txt

          非重要的shell

          • Impala-shell --user root

          • Impala-shell -d database(database 指定數(shù)據(jù)庫名稱)

          • --quiet 不顯示多余信息

            impala-shell -q "select * from impala.rstest limit 5">

             

          • --user 指定用戶執(zhí)行shell 命令

          • --ssl 通過ssl 驗(yàn)證方式方式執(zhí)行

          • --ca_cert 指定第三方用戶證書

          • --config_file 臨時(shí)指定配置文件

          • -u 執(zhí)行某一用戶運(yùn)行impala-shell

          • -p 顯示執(zhí)行計(jì)劃

          • -q 不進(jìn)入impala-shell 執(zhí)行查詢

          • -c 忽略錯(cuò)誤語句繼續(xù)執(zhí)行

          • -d 指定進(jìn)入某一個(gè)數(shù)據(jù)庫

          • mpala-shell 命令用法:

        Impala-shell(內(nèi)部shell)

        • 幫助選項(xiàng)

          • help

        • 連接到某個(gè)impalad 實(shí)例

          • connect <hostname>

        • 刷新某個(gè)表元數(shù)據(jù)

          • *refresh <tablename> //屬于增量刷新

        • 刷新元數(shù)據(jù)庫

          • *invalidate metadata //全量刷新,性能消耗較大

        • 顯示一個(gè)查詢的執(zhí)行計(jì)劃及各步驟信息

          • *explain <sql> //可以設(shè)置set explain_level 四個(gè)級(jí)別0開始,一般用2級(jí)別即可,查看執(zhí)行計(jì)劃等詳細(xì)信息

        • 不退出impala-shell 執(zhí)行操作系統(tǒng)命令

          • shell <shell>

          • shell ls

        • 顯示查詢底層信息(底層執(zhí)行計(jì)劃,用于性能優(yōu)化)

          • *profile //在查詢完成之后執(zhí)行

        • 執(zhí)行計(jì)劃存儲(chǔ)下來分析

          impala-shell -q "select name from person" -p >> impalalog.123

        • 查看StateStore(監(jiān)控管理)

          • – http://cdh2:25020/

             

        • 查看Catalog(監(jiān)控管理)

          • – http://cdh3:25010/

             

        Impala 存儲(chǔ)與分區(qū)

        • 需要注意的是impala 除了全部支持hive 的文件類型,自己還支持parquet 這樣的文件類型,當(dāng)然了,這個(gè)類型并不是impala 自己獨(dú)有的,比如spark sql,shark sql 都支持這樣的類型;Rcfile 本身快一些,但是不如text 才做起來更方便Impala的特點(diǎn)有哪些

        • 壓縮方式

        • 添加分區(qū)方式

          --1、partitioned by 創(chuàng)建表時(shí),添加該字段指定分區(qū)列表
          --2、使用alter table 進(jìn)行分區(qū)的添加和刪除操作
          ? create table t_person(id int, name string, age int) partitioned by (type string);
          ? alter table t_person add partition (type='man');
          ? alter table t_person drop partition (type='man');
          ? alter table t_person drop partition (sex='man',type='boss');

        • 分區(qū)內(nèi)添加數(shù)據(jù)

          insert into t_person partition (type='boss') values (1,'zhangsan',18),(2,'lisi',23)
          
          insert into t_person partition (type='coder') values
          (3,'wangwu',22),(4,'zhaoliu’,28),(5,'tianqi',24)

        • 查詢指定分區(qū)數(shù)據(jù)

          select id,name from t_person where type='coder'

           

        impala-SQL、JDBC、性能優(yōu)化

        • 加載數(shù)據(jù):

          • insert 語句:插入數(shù)據(jù)時(shí)每條數(shù)據(jù)產(chǎn)生一個(gè)數(shù)據(jù)文件,不建議用此方式加載批量數(shù)據(jù)

          • load data 方式:在進(jìn)行批量插入時(shí)使用這種方式比較合適

          • 來自中間表:此種方式使用于從一個(gè)小文件較多的大表中讀取文件并寫入新的表生產(chǎn)少量的數(shù)據(jù)文件。也可以通過此種方式進(jìn)行格式轉(zhuǎn)換。

        • 空值處理:

        • impala 將“\n”表示為NULL,在結(jié)合sqoop 使用是注意做相應(yīng)的空字段過濾,也可以使用以下方式進(jìn)行處理:

          alter table name set tblproperties (“serialization.null.format”=“null”)

           

        • 配置:

          – impala.driver=org.apache.hive.jdbc.HiveDriver
          – impala.url=jdbc:hive2://node2:21050/;auth=noSasl
          – impala.username=
          – impala.password=

           

        • 盡量使用PreparedStatement執(zhí)行SQL語句:

          • 性能上PreparedStatement要好于Statement

          • Statement存在查詢不出數(shù)據(jù)的情況

        • 執(zhí)行計(jì)劃

        • – 查詢sql執(zhí)行之前,先對(duì)該sql做一個(gè)分析,列出需要完成這一項(xiàng)查詢的
          詳細(xì)方案(命令:explain sql、profile)Impala的特點(diǎn)有哪些

        總結(jié):

        1、SQL優(yōu)化,使用之前調(diào)用執(zhí)行計(jì)劃
        2、選擇合適的文件格式進(jìn)行存儲(chǔ)
        3、避免產(chǎn)生很多小文件(如果有其他程序產(chǎn)生的小文件,可以使用中間
        表)
        4、使用合適的分區(qū)技術(shù),根據(jù)分區(qū)粒度測(cè)算
        5、使用compute stats進(jìn)行表信息搜集
        6、網(wǎng)絡(luò)io的優(yōu)化:
            a.避免把整個(gè)數(shù)據(jù)發(fā)送到客戶端
            b.盡可能的做條件過濾
            c.使用limit字句
            d.輸出文件時(shí),避免使用美化輸出
        7、使用profile輸出底層信息計(jì)劃,在做相應(yīng)環(huán)境優(yōu)化

        Impala SQL VS HiveQL

        • 支持?jǐn)?shù)據(jù)類型

          • INT

          • TINYINT

          • SMALLINT

          • BIGINT

          • BOOLEAN

          • CHAR

          • VARCHAR

          • STRING

          • FLOAT

          • DOUBLE

          • REAL

          • DECIMAL

          • TIMESTAMP

        • CDH5.5版本以后才支持一下類型

          • ARRAY

          • MAP

          • STRUCT

          • Complex

        • 此外,Impala不支持HiveQL以下特性:

          • covar_pop, covar_samp, corr, percentile,percentile_approx, histogram_numeric, collect_set

          • Impala僅支持:AVG,COUNT,MAX,MIN,SUM

          • – 多Distinct查詢

          • – HDF、UDAF

          • – 可擴(kuò)展機(jī)制,例如:TRANSFORM、自定義文件格式、自定義SerDes

          • – XML、JSON函數(shù)

          • – 某些聚合函數(shù):

        Impala SQL(和Hive類似)

        • 視圖

          • 不能向impala的視圖進(jìn)行插入操作

          • insert 表可以來自視圖

          • – 創(chuàng)建視圖:create view v1 as select count(id) as total from tab_3 ;

          • – 查詢視圖:select * from v1;

          • – 查看視圖定義:describe formatted v1

        到此,相信大家對(duì)“Impala的特點(diǎn)有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

        網(wǎng)站欄目:Impala的特點(diǎn)有哪些
        標(biāo)題鏈接:http://muchs.cn/article18/ihcigp.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)外貿(mào)建站

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站