日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Impala:大数据丛林中敏捷迅速的黑斑羚

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Impala:大数据丛林中敏捷迅速的黑斑羚 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


在大數(shù)據(jù)蓬勃發(fā)展的今天,基于Hadoop黃金搭檔HDFS和MapReduce的Hive,已經(jīng)無法滿足人們對于海量數(shù)據(jù)處理速度越來越快的要求。時勢造英雄,Cloudera依據(jù)Google的Dremel為原型開發(fā)了跨時代的查詢引擎:Impala。


Impala的本意是黑斑羚,產(chǎn)于非洲中南部,行動敏捷,奔跑迅速。下面我們就來揭開這只敏捷迅速黑斑羚的神秘面紗,以饗各位看官。?



01 概述


Impala是基于MPP的SQL查詢系統(tǒng),可以直接為存儲在HDFS或HBase中的Hadoop數(shù)據(jù)提供快速、交互式的SQL查詢。Impala和Hive一樣也使用了相同的元數(shù)據(jù)、SQL語法(Hive SQL)、ODBC驅(qū)動和用戶接口(Hue Beeswax),這就很方便地為用戶提供了一個相似并且統(tǒng)一的平臺來進行批量或?qū)崟r查詢。


Impala系統(tǒng)架構(gòu)圖如下所示:



Impala主要包括以下組成部分:


  • Impala Shell:客戶端工具,提供一個交互接口ODBC,供使用者連接到Impalad發(fā)起數(shù)據(jù)查詢或管理任務(wù)等。

  • Impalad:分布式查詢引擎,由Query Planner、Query Coordinator和Query Exec Engine三部分組成,可以直接從HDFS或者HBase中用SELECT、JOIN和統(tǒng)計函數(shù)查詢數(shù)據(jù)。

  • State Store:主要為跟蹤各個Impalad實例的位置和狀態(tài),讓各個Impalad實例以集群的方式運行起來。

  • Catalog Service:主要跟蹤各個節(jié)點上對元數(shù)據(jù)的變更操作,并且通知到每個節(jié)點。


Impala支持以下特性:


  • 支持ANSI-92 SQL所有子集,包括CREATE/ALTER/SELECT/INSERT/JOIN/subqueries

  • 支持分區(qū)join、完全分布式聚合以及完全分布式top-n查詢

  • 支持多種數(shù)據(jù)格式:Hadoop原生格式(apache Avro,SequenceFile,RCFile with Snappy,GZIP, BZIP或未壓縮)、文本(未壓縮或者LZO壓縮)和Parquet(Snappy或未壓縮)

  • 可以通過JDBC、ODBC、Hue GUI或者命令行shell進行連接



02 查詢處理流程


Impalad分為Java前端(Frontend)與C++處理后端(Backend),接受客戶端連接的Impalad即作為這次查詢的Coordinator,Coordinator通過JNI調(diào)用Java前端對用戶的查詢SQL進行分析生成執(zhí)行計劃樹,不同的操作對應(yīng)不用的PlanNode, 如:SelectNode, ScanNode, SortNode, AggregationNode, HashJoinNode等等。


執(zhí)行計劃樹的每個原子操作由一個PlanFragment表示,通常一條查詢語句由多個Plan Fragment組成, Plan Fragment 0表示執(zhí)行樹的根,匯聚結(jié)果返回給用戶,執(zhí)行樹的葉子結(jié)點一般是Scan操作,分布式并行執(zhí)行。


Java前端產(chǎn)生的執(zhí)行計劃樹以Thrift數(shù)據(jù)格式返回給Impala C++后端Coordinator,執(zhí)行計劃分為多個階段,每一個階段叫做一個PlanFragment,每一個PlanFragment在執(zhí)行時可以由多個Impalad實例并行執(zhí)行(有些PlanFragment只能由一個Impalad實例執(zhí)行,如聚合操作),整個執(zhí)行計劃即為一個執(zhí)行計劃樹。Coordinator收到執(zhí)行計劃后,數(shù)據(jù)存儲信息(Impala通過libhdfs與HDFS進行交互,通過hdfsGetHosts方法獲得文件數(shù)據(jù)塊所在節(jié)點的位置信息),通過調(diào)度器(現(xiàn)在只有simple-scheduler, 使用round-robin算法)Coordinator::Exec對生成的執(zhí)行計劃樹分配給相應(yīng)的后端執(zhí)行器Impalad執(zhí)行(查詢會使用LLVM進行代碼生成,編譯,執(zhí)行),通過調(diào)用GetNext()方法獲取計算結(jié)果,如果是insert語句,則將計算結(jié)果通過libhdfs寫回HDFS,當所有輸入數(shù)據(jù)被消耗光,執(zhí)行結(jié)束,之后注銷此次查詢服務(wù)。


Impala查詢處理流程如下圖所示:





03 訪問Impala


訪問Impala有兩種方式,一種是使用命令行工具impala-shell,另一種是使用JDBC編程,下面分別闡述。


Impala-shell


可以通過命令行工具Impala-shell來創(chuàng)建數(shù)據(jù)庫、表、插入數(shù)據(jù)、執(zhí)行查詢等。


Impala shell命令格式如下:


impala-shell [選項]


impala-shell使用選項如下:


選項

描述

-B or --delimited

導(dǎo)致使用分隔符分割的普通文本格式打印查詢結(jié)果。當為其他?Hadoop?組件生成數(shù)據(jù)時有用。對于避免整齊打印所有輸出的性能開銷有用,特別是使用查詢返回大量的結(jié)果集進行基準測試的時候。使用?--output_delimiter 選項指定分隔符。使用 -B 選項常用于保存所有查詢結(jié)果到文件里而不是打印到屏幕上。

--print_header

是否打印列名。整齊打印時是默認啟用。同時使用 -B 選項時,在首行打印列名

-o?filename?or ?--output_file?filename

保存所有查詢結(jié)果到指定的文件。通常用于保存在命令行使用 -q 選項執(zhí)行單個查詢時的查詢結(jié)果。對交互式會話同樣生效;此時你只會看到獲取了多少行數(shù)據(jù),但看不到實際的數(shù)據(jù)集。當結(jié)合使用 -q 和 -o 選項時,會自動將錯誤信息輸出到 /dev/null。

--output_delimiter=character

當使用 -B 選項以普通文件格式打印查詢結(jié)果時,用于指定字段之間的分隔符。默認是制表符 tab ('\t')。假如輸出結(jié)果中包含了分隔符,該列會被引起且/或轉(zhuǎn)義。

-p or --show_profiles

對 shell 中執(zhí)行的每一個查詢,顯示其查詢執(zhí)行計劃 (與?EXPLAIN 語句輸出相同) 和發(fā)生低級故障的執(zhí)行步驟的更詳細的信息

-h or --help

顯示幫助信息

-i?hostname?or ?--impalad=hostname

指定連接運行 impalad 守護進程的主機。默認端口是 21050。你可以連接到集群中運行 impalad 的任意主機。假如你連接到 impalad 實例通過?--fe_port 標志使用了其他端口,則應(yīng)當同時提供端口號,格式為 hostname:port

-q?query?or --query=query

從命令行中傳遞一個查詢或其他 shell 命令。執(zhí)行完這一語句后 shell 會立即退出。限制為單條語句,可以是?SELECT,?CREATE ?TABLE,?SHOW TABLES, 或其他 impala-shell 認可的語句。因為無法傳遞 USE 語句再加上其他查詢,對于 default?數(shù)據(jù)庫之外的表,應(yīng)在表名前加上數(shù)據(jù)庫標識符(或者使用 -f 選項傳遞一個包含 USE 語句和其他查詢的文件)

-f?query_file?or --query_file=query_file

傳遞一個文件中的 SQL 查詢。文件內(nèi)容必須以分號分隔

-k or --kerberos

當連接到 impalad 時使用 Kerberos 認證。如果要連接的 impalad 實例不支持?Kerberos,將顯示一個錯誤

-s?kerberos_service_name?or ?--kerberos_service_name=name

指示impala-shell對特定impalad服務(wù)主體進行身份驗證。 如果沒有設(shè)置 ?kerberos_service_name?,默認使用 impala。如果啟用了本選項,而試圖建立不支持Kerberos 的連接時,返回一個錯誤。

-V or --verbose

啟用詳細輸出

--quiet

關(guān)閉詳細輸出

-v or --version

顯示版本信息

-c

查詢執(zhí)行失敗時繼續(xù)執(zhí)行

-r or --refresh_after_connect

建立連接后刷新 Impala 元數(shù)據(jù),與建立連接后執(zhí)行?REFRESH?語句效果相同

-d?default_db?or --database=default_db

指定啟動后使用的數(shù)據(jù)庫,與建立連接后使用?USE?語句選擇數(shù)據(jù)庫作用相同,如果沒有指定,那么使用 default 數(shù)據(jù)庫

-l

啟用 LDAP 認證

-u

當使用 -l 選項啟用 LDAP 認證時,提供用戶名(使用短用戶名,而不是完整的 LDAP 專有名稱distinguished name),shell 會提示輸入密碼


JDBC編程


Impala支持JDBC訪問,JAVA程序通過JDBC驅(qū)動訪問Impala。配置Impala的JDBC連接包括以下步驟:


  • 配置Impala JDBC端口


默認的Impala JDBC訪問端口是21050,確保Impala上此端口能被其他機器訪問;如果使用其他端口,啟動impalad時帶上--hs2_port參數(shù)。


  • 在客戶端安裝Impala JDBC驅(qū)動


客戶端impala JDBC驅(qū)動包含一些jar文件,文件列表如下:


  • 下載上述jar文件到impala JDBC客戶端。

  • 保存jar文件到CLASSPATH路徑中。

  • 設(shè)置CLASSPATH環(huán)境變量包含jar文件路徑


  • 在linux系統(tǒng):增加jar路徑到CLASSPATH前面:比如jar文件保存到/opt/jars/,設(shè)置命令為:export CLASSPATH=/opt/jars/*.jar:$CLASSPATH


    在windows系統(tǒng):在“系統(tǒng)屬性”控制面板中修改“環(huán)境變量”,設(shè)置CLASSPATH開頭包含jar文件路徑


    • Java應(yīng)用程序配置JDBC連接字符串,連接Impalad


    JDBC驅(qū)動類是org.apache.hive.jdbc.HiveDriver,連接分為以下幾種:


  • 連接的Impala集群沒有使用Kerberos鑒權(quán),JDBC連接字符串形式為:jdbc:hive2://host:port/;auth=noSasl

  • 連接的Impala集群使用Kerberos鑒權(quán),JDBC連接字符串形式為:jdbc:hive2://host:port/;principal=principal_name

  • 連接的Impala集群使用LDAP鑒權(quán),JDBC連接字符串形式為:jdbc:hive2://host:port/db_name;user=ldap_userid;password=ldap_password


  • 下面的例子使用Impala JDBC編程接口查詢指定表的數(shù)據(jù):




    04 性能調(diào)優(yōu)


    Impala性能調(diào)優(yōu)使用以下方法:


    • 選擇合適的文件格式


    通常情況,對大量數(shù)據(jù),Parquet文件格式是最好的,因為它結(jié)合了列存儲布局、大的I / O請求大小、壓縮和編碼。


    • 避免數(shù)據(jù)攝入過程產(chǎn)生許多小文件


    使用INSERT……SELECT復(fù)制表數(shù)據(jù),避免對任何海量數(shù)據(jù)或影響性能的關(guān)鍵型表使用INSERT……VALUES,因為每一個這樣的語句產(chǎn)生一個單獨的小數(shù)據(jù)文件。


    如果在數(shù)據(jù)處理中產(chǎn)生過多小文件,需要使用INSERT……SELECT將數(shù)據(jù)復(fù)制到另外一張表,這樣解決了小文件過多的問題。


    • 選擇合適的分區(qū)技術(shù)


    分區(qū)是一種技術(shù),基于一個或多個列的值物理上把數(shù)據(jù)分成多部分。當你發(fā)出查詢請求一個特定分區(qū)鍵列的值或值范圍,Impala可以避免讀取無關(guān)的數(shù)據(jù)可能產(chǎn)生的巨大的磁盤I / O。


    分區(qū)技術(shù)適用于以下情況:


  • 表的數(shù)據(jù)量非常大,讀取整個表的時間不在我們的承受范圍之內(nèi)

  • 表總是依據(jù)某些特定的列進行查詢

  • 列有合理的基數(shù)(不同值的數(shù)量)

  • 數(shù)據(jù)已經(jīng)經(jīng)過ETL處理


    • 使用COMPUTE STATS搜集連接查詢中海量數(shù)據(jù)表或者影響性能的關(guān)鍵表的統(tǒng)計信息

    • 最小化返回結(jié)果給客戶端的傳輸開銷


    使用聚合、過濾、限制、避免精細打印結(jié)果集等方法返回最小化結(jié)果。


    • 在運行查詢前使用EXPLAIN查看執(zhí)行計劃是否高效合理

    • 在運行查詢后使用PROFILE從底層確認IO、內(nèi)存消耗、網(wǎng)絡(luò)帶寬占用、CPU使用率等信息是否在預(yù)期范圍內(nèi)


    來源:中興大數(shù)據(jù)


    精彩活動

    福利 · 閱讀 | 免費申請讀大數(shù)據(jù)新書 第23期

    推薦閱讀

    2017年數(shù)據(jù)可視化的七大趨勢!?

    全球100款大數(shù)據(jù)工具匯總(前50款)?

    論大數(shù)據(jù)的十大局限

    大數(shù)據(jù)時代的10個重大變革

    大數(shù)據(jù)七大趨勢 第一個趨勢是物聯(lián)網(wǎng)


    Q:?關(guān)于Impala,你還了解什么?

    歡迎留言與大家分享

    請把這篇文章分享給你的朋友

    轉(zhuǎn)載 / 投稿請聯(lián)系:hzzy@hzbook.com

    更多精彩文章,請在公眾號后臺點擊“歷史文章”查看

    總結(jié)

    以上是生活随笔為你收集整理的Impala:大数据丛林中敏捷迅速的黑斑羚的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 激情综合文学 | 一区二区在线视频播放 | 国产又大又黄的视频 | 不卡中文av | 免费一区二区三区 | 男同精品| 婷婷开心激情 | 99成人在线观看 | 中文字幕啪啪 | 护士的小嫩嫩好紧好爽 | 澳门三级 | 日本中文字幕久久 | 夜夜操夜夜爽 | 精品伦精品一区二区三区视频密桃 | 激情小说一区 | 超碰男人天堂 | 狂野欧美性猛交免费视频 | 亚洲综合成人亚洲 | 艳母日本动漫在线观看 | 免费中文视频 | 久久黄色免费网站 | 欧美人与性囗牲恔配 | 午夜视频一区二区 | 国产高清一级 | 久久久久久高清 | 久久精品亚洲无码 | 久草免费看 | 91看片视频| 性感美女黄色片 | 国产激情视频一区二区三区 | 三年中国片在线高清观看 | 九七在线视频 | 国产精品成人无码 | 久久99精品久久久久久国产越南 | 18p在线观看| 午夜av免费观看 | 亚洲一区亚洲二区 | 先锋av资源网 | 99国产精品久久久久久久 | 国产精品久久久久影院色老大 | 国产一区二区三区毛片 | 激情综合一区二区三区 | 国产成年人免费视频 | 五月综合色婷婷 | 国产福利短视频 | 日韩欧美精品免费 | 欧美先锋影音 | 成人片在线看 | 国产精品hd | 国产精品视频大全 | 女教师高潮黄又色视频 | 日韩欧美国产中文字幕 | 亚洲精品97 | 在线97视频 | 成人欧美精品 | 成人日韩在线 | 欧洲精品码一区二区三区免费看 | 国产中文字幕免费 | 亚洲女人被黑人巨大进入 | 毛片基地视频 | 中文字幕亚洲不卡 | 天天爽天天爽天天爽 | 波多野 在线| 国产主播精品在线 | 色婷婷亚洲 | 毛片一区二区三区 | 69av在线 | 天堂bt在线 | 成人自拍在线 | 色福利hd写真video | 韩国jizz| 裸体一区二区三区 | 欧美人体一区二区三区 | www日韩 | 人人澡人人澡人人澡 | 潘金莲裸体一级淫片视频 | 日本成人在线免费观看 | 欧洲美一区二区三区亚洲 | 永久在线观看 | 成年人av在线 | 国产主播专区 | 国产精品三级在线观看无码 | 亚洲成人黄色av | 欧美日韩乱国产 | 91亚洲精品一区 | 国产老妇视频 | www色中色| 天堂av亚洲av国产av电影 | 亚洲国产成人无码av在线 | 欧美日批视频 | 欧美aa一级| 99亚洲国产精品 | free女性xx性老大太 | 成人av动漫 | 日韩极品视频在线观看 | 麻豆视频网站在线观看 | 尤物视频在线观看免费 | 丰满人妻一区二区三区53 | 精品人妻人人做人人爽夜夜爽 |