




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1 概述1. Impala是參照谷歌新三篇論文Dremel的開源實現(xiàn),和Shark、Drill功能相似。Impala是Cloudera公司主導(dǎo)開發(fā)并開源。基于Hive并使用內(nèi)存進行計算,兼顧數(shù)據(jù)倉庫,具有實時、批處理、多并發(fā)等優(yōu)點。是使用CDH的首選PB級大數(shù)據(jù)實時查詢分析引擎。2. Impala是基于Hive的大數(shù)據(jù)實時分析查詢引擎,直接使用Hive的元數(shù)據(jù)庫Metadata,意味著impala元數(shù)據(jù)都存儲在Hive的metastore中。并且impala兼容Hive的sql解析,實現(xiàn)了Hive的SQL語義的子集,功能還在不斷的完善中。1.1 特點1. 基于內(nèi)存進行計算,能夠?qū)B級數(shù)據(jù)進行
2、交互式實時查詢、分析2. 摒棄了MR計算改用C+編寫,有針對性的硬件優(yōu)化,例如使用SSE指令3. 兼容HiveSQL,無縫遷移4. 通過使用LLVM來統(tǒng)一編譯運行時代碼,避免了為支持通用編譯而帶來的不必要開銷。5. 支持sql92標準,并具有自己的解析器和優(yōu)化器。6. 具有數(shù)據(jù)倉庫的特性,對hive原有數(shù)據(jù)做數(shù)據(jù)分析。7. 使用了支持Data locality的I/O調(diào)度機制。8. 支持列式存儲。9. 支持jdbc/odbc遠程訪問。1.2 缺點1. 基于內(nèi)存進行計算,對內(nèi)存依賴性較大2. 改用C+編寫,意味著對C+普通用戶不可見。3. 基于Hive,與Hive共存亡4. 實踐中impala的
3、分區(qū)數(shù)超過一萬,性能嚴重下降,容易出現(xiàn)問題。5. 穩(wěn)定性不如Hive。2 配置共分為三種角色:Impala Catalog Server、Impala Daemon、Impala StateStore:注:Impala沒有主節(jié)點, Impala Catalog Server和Impala StateStore具有主節(jié)點的功能,可當作主節(jié)點,Impala Daemon可理解為從節(jié)點Ø 配置impala的內(nèi)存,impala需要內(nèi)存的是Impala Daemon,Impala提供查詢實例的是 Impala Daemon,Impala的總內(nèi)存就是Impala Daemon的內(nèi)存總和,如果要在
4、某臺機器做匯總操作,該臺機器內(nèi)存需要大一些Ø Impala的客戶端可以連Impala Daemon的任意一臺機器,但做匯總操作可以連內(nèi)存大的Impala Daemon的機器Ø 如果每臺機器的內(nèi)存大小相差不大時,可以輪詢Impala Daemon的機器,或隨機進行切換(獲取機器的資源,如果某臺機器的資源多,就使用這臺機器發(fā)請求),可解決線程的問題和返回數(shù)據(jù)內(nèi)存的問題,也可解決高并發(fā)問題。配置State Store的工作線程數(shù),一般會給的高一些,給高后會快一些3 Impala三大核心主件1. Statestore daemon:服務(wù)名StateStore 1) 負責(zé)收集分布在集
5、群中各個impalad進程的資源信息,各節(jié)點健康狀況、同步節(jié)點信息。檢查Daemon是否活著2) 負責(zé)query的調(diào)度.3) 對于一個正常運轉(zhuǎn)的集群,并不是一個關(guān)鍵進程.2. Catalog daemon:服務(wù)名Catalog:1) 把impala表的metadata(也是hive的源數(shù)據(jù)表)分發(fā)到各個impalad中2) 接收來自statestore的所有請求3. Impala daemon:服務(wù)名impalad:1) 接收client、hue、jdbc或者odbc請求、query 執(zhí)行并返回給中心協(xié)調(diào)節(jié)點2) 子節(jié)點上的守護進程,負責(zé)向statestore保持通信,匯報工作注:插入數(shù)據(jù)在D
6、aemon上操作,操作后匯報給StateStore說明節(jié)點的數(shù)據(jù)變了,StateStore發(fā)請求給Catalog,Catalog去同步源數(shù)據(jù)表,StateStore進程和Catalog進程經(jīng)常放到一臺機器上。建議不要在StateStore進程和Catalog進程的機器上安裝Daemon。4 Impala架構(gòu)1 client發(fā)出請求到impalad上(impalad可以是隨機的),impalad可以相互通信2 catalog與hive的Metastore進行通信,隨時拿源數(shù)據(jù),拿到的源數(shù)據(jù)再分發(fā)到各個impalad上3 impalad搭建在datanode上,因為數(shù)據(jù)就在這上面,可直接進行操作,
7、實現(xiàn)數(shù)據(jù)操作本地化4 impalad包括三個主鍵:Query Planner:執(zhí)行計劃的生成,把sql解析成執(zhí)行計劃Query Coordinator:中心協(xié)調(diào)節(jié)點,根據(jù)執(zhí)行計劃,將執(zhí)行的任務(wù)分發(fā)到每一臺機器,Query Executor:具體來執(zhí)行任務(wù)5 impalad執(zhí)行完后,返回給client5 impala shell 外部命令5.1 impala-shell -h 萬能幫助5.2 impala-shell -r刷新整個元數(shù)據(jù) *說明:不光刷新表結(jié)構(gòu),表內(nèi)的數(shù)據(jù)也會刷新出來(包括增刪改的數(shù)據(jù)),不建議使用這個命令定時刷新,如果表較多時,這個刷新需要很長時間,不得以的時候可以做整體刷新1
8、) 在hive中創(chuàng)建表test2) 在impala中查看表,看不到hive內(nèi)創(chuàng)建的表3) 刷新impala源數(shù)據(jù)4) 查看impala內(nèi)的表5) 刪除impala內(nèi)的test表6) 查看hive內(nèi)的表,發(fā)現(xiàn)hive內(nèi)的表也被刪除了5.3 impala-shell -B去格式化說明:查詢大數(shù)據(jù)量時可以提高性能子命令:impala-shell -B -print_header 去格式化時顯示列名impala-shell -B -output_delimiter 指定分隔符1) 查看impala內(nèi)的表,發(fā)現(xiàn)表外面有框,這就是被格式化的2) 去格式化3) 去格式化時顯示列名在hive內(nèi)查詢數(shù)據(jù)在imp
9、ala內(nèi)查詢5.4 impala-shell -v查看版本查看impala shell的版本注:如果在impala升級時,發(fā)現(xiàn)impala和impala shell的版本不一致時說明升級有問題。5.5 impala-shell -f 執(zhí)行查詢文件 *子命令: -query_file 指定查詢文件1. 執(zhí)行查詢文件$ vi testselect * from test limit 5;$ impala-shell -f test2. 使用子命令查詢文件3. 使用子命令查詢結(jié)果去格式化注:測試些處用impala-shell -B -print_header -f test.sss命令是否能執(zhí)行成功
10、5.6 impala-shell -i連接到對應(yīng)的impalad說明:如果在某臺服務(wù)器上未安裝impalad服務(wù),可以連接其他服務(wù)器的impalad服務(wù)子命令:-impalad 指定impalad去執(zhí)行任務(wù)-fe_port 指定備用端口5.7 impala-shell -o保存執(zhí)行結(jié)果到文件 *子命令:-output_file 指定輸出文件名 1. 保存執(zhí)行結(jié)果到文件注:測試些處用impala-shell o result.txt -f test.sss命令是否能執(zhí)行成功2. 查詢結(jié)果去格式化,執(zhí)行test.sss文件,結(jié)果保存在result.ex內(nèi)注:測試些處用impala-shell -B
11、 -print_header o result.txt -f test.sss命令是否能執(zhí)行成功3. 查詢結(jié)果去格式化,不顯示列名,執(zhí)行test.sss文件,結(jié)果保存在result.ex內(nèi)5.8 impala-shell -u 指定某一用戶運行impala-shell子命令:-user 指定用戶執(zhí)行shell命令-ssl 通過ssl驗證方式方式執(zhí)行-ca_cert 指定第三方用戶證書-config_file 臨時指定配置文件注:上面未配置kerberos,因此沒有用戶權(quán)限控制5.9 impala-shell -p 顯示執(zhí)行計劃子命令:-quiet 不顯示多余信息以上先顯示執(zhí)行結(jié)果,再顯示執(zhí)行計
12、劃如果執(zhí)行計劃顯示的結(jié)果較多,可以寫到文件中5.10 impala-shell -d指定進入某一個數(shù)據(jù)庫子命令:-database 指定數(shù)據(jù)庫名稱5.11 其他命令Ø q 不進入impala-shell執(zhí)行查詢Ø -k 使用kerberos安全加密方式運行impala-shellØ -c 忽略錯誤語句繼續(xù)執(zhí)行Ø -l 使用LDAP協(xié)議進行訪問6 Impala shell 內(nèi)部命令6.1 help幫助選項6.2 version 查看impala版本6.3 connect連接到某個impalad實例connect <hostname>在沒在安裝i
13、mpalad的服務(wù)器上執(zhí)行:6.4 refresh刷新某個表元數(shù)據(jù) *refresh <tablename> /增量刷新1. 在impala內(nèi)新建表,插入數(shù)據(jù)2. 在hive內(nèi)可查看到在imaplaq內(nèi)新建的表,插入數(shù)據(jù)3. 在imapla中查詢,發(fā)現(xiàn)hive內(nèi)新增的記錄查詢不到4. 在imapla中刷新該表6.5 invalidate metadata 全量刷新,性能消耗較大 *1. 外部命令impala-shell -r就是調(diào)用內(nèi)部命令invalidate metadata2. 在hive內(nèi)創(chuàng)建表3. 此時在impala內(nèi)查不到該表4. 在impala內(nèi)全量刷新5. 此時在sh
14、ow tables;可以查看在hive內(nèi)創(chuàng)建的表6.6 explain顯示一個查詢的執(zhí)行計劃及各步驟信息 *explain <sql> /該sql語句不會真正執(zhí)行,會打出一個簡單的執(zhí)行計劃,1. 使用執(zhí)行計劃files 表示讀取幾個文件, size 表示讀取多大的文件2. 設(shè)置執(zhí)行計劃的級別,set explain_level,共四個級別,分別是0、1、2、31) 設(shè)置3級,最高級別2) 設(shè)置0級,最低級別6.7 shell <shell> 不退出impala-shell執(zhí)行操作系統(tǒng)命令shell <shell>6.8 profile顯示查詢底層信息(底層執(zhí)
15、行計劃,用于性能優(yōu)化) * profile /在查詢完成之后執(zhí)行外部命令impala-shell -p就是調(diào)用內(nèi)部命令profile可以查看那臺機器使用的內(nèi)存7 Impala的管理 Ø Impala StateStore Web UI (hadoop01):StateStore的web界面Ø StateStore:用于統(tǒng)計集群的健康信息、同步節(jié)點信息Catalog:用于和集群的原數(shù)據(jù)信息進行同步顯示有那些數(shù)據(jù)庫,那些表8 Impala存儲Hive能支持的數(shù)據(jù)類型,impala都能支持Parquet:impala支持特別的格式,Parquet格式是列工存儲推薦用sn
16、appy壓縮9 Impala分區(qū)Ø 添加分區(qū)方式: 1、partitioned by:創(chuàng)建表時,添加該字段指定分區(qū)列表 2、使用alter table 進行分區(qū)的添加和刪除操作 create table tab_p0(id int, name string, age int ) partitioned by (year int);Ø 向分區(qū)內(nèi)插入數(shù)據(jù):insert into tab_p0 partition (year=2014) values (1,zhangsan,18),(2,lisi,23)insert into tab_p0 partition (year=201
17、5) values (3,wangwu,22),(4,zhaoliu,28),(5,tianqi,24)注:只有Parquet、Text可以使用impala加載數(shù)據(jù),其他格式需要在hive中加載數(shù)據(jù)Ø 查詢指定分區(qū)數(shù)據(jù):select name from tab_p0 where year = 2015;10 Impala sql內(nèi)部表刪除后會把數(shù)據(jù)都刪了,外部表刪除后不會刪除數(shù)據(jù)1. 創(chuàng)建表(內(nèi)部表)Ø Impala創(chuàng)建的內(nèi)部表源數(shù)據(jù)也會寫到hive內(nèi),hdfs目錄為/user/hive/warehouseØ 如何區(qū)分hive和impala創(chuàng)建的表,前面用戶是im
18、pala就是impala創(chuàng)建的表,其他用戶創(chuàng)建的是hive的表Ø 默認方式創(chuàng)建表: create table tab_1( id int, value string )Ø 指定存儲方式: 1) create table tab_2( id int, value string )row format delimited fields terminated by 0 (impala1.3.1版本以上支持0 ) stored as textfile;2) create table parquet_table_name(x INT, y STRING) STORED AS PARQ
19、UET;Ø 其他方式創(chuàng)建內(nèi)部表 使用現(xiàn)有表結(jié)構(gòu): create table tab_3 like tab_1; 指定文本表字段分隔符: alter table tab_3 set serdeproperties (serialization.format=,field.delim=,);Ø 插入數(shù)據(jù) 直接插入值方式: insert into tab_2 values (1,hex(hello world); 從其他表插入數(shù)據(jù): insert (overwrite) into tab_3 select * form tab_2 ; 批量導(dǎo)入文件方式方式: load data
20、local inpath /xxx/xxx into table tab_1;2. 創(chuàng)建表(外部表)Ø 默認方式創(chuàng)建表: create external table tab_p1( id int, value string ) location /user/xxx.txtØ 指定存儲方式: create external table tab_p2 like parquet_tab /user/xxx/xxx/1.dat partition (year int , month tinyint, day tinyint) location /user/xxx/xxx store
21、d as parquet;3. 視圖Ø 創(chuàng)建視圖: create view v1 as select count(id) as total from tab_3 ;Ø 查詢視圖: select * from v1;Ø 查看視圖定義: describe formatted v1Ø 注意: 1)不能向impala的視圖進行插入操作 2)insert 表可以來自視圖(從視圖查詢出數(shù)據(jù)insert到一張表里)11 數(shù)據(jù)文件處理Ø 加載數(shù)據(jù): 1、insert語句:插入數(shù)據(jù)時每條數(shù)據(jù)產(chǎn)生一個數(shù)據(jù)文件,不建議用此方式加載批量數(shù)據(jù) 2、load data方式
22、:再進行批量插入時使用這種方式比較合適(在hive中l(wèi)oad data完,在impala中進行插入)(parquet在hive中不能創(chuàng)建,在impala中創(chuàng)建parquet格式的表,在hive的一個表插入數(shù)據(jù),在impala中刷新出來就有兩張表了,一張是impala創(chuàng)建的parguet表,一張是從hive中刷新出來的業(yè)務(wù)數(shù)據(jù),從有數(shù)據(jù)的hive表查詢出來插入到impala的parguet表) 3、來自中間表:此種方式使用于從一個小文件較多的大表中讀取文件并寫入新的表生產(chǎn)少量的數(shù)據(jù)文件。也可以通過此種方式進行格式轉(zhuǎn)換。Ø 空值處理:impala將“n”表示為NULL,在結(jié)合sqoop使
23、用是注意做相應(yīng)的空字段過濾,也可以使用以下方式進行處理: alter table name set tblproperties (“serialization.null.format”=“null”)12 impala與hbase整合Impala可以通過Hive外部表方式和HBase進行整合,步驟如下:Ø 步驟1:創(chuàng)建hbase 表,向表中添加數(shù)據(jù)create 'test_info', 'info'put 'test_info','1','info:name','zhangsanput '
24、test_info','2','info:name','lisi'Ø 步驟2:創(chuàng)建hive表CREATE EXTERNAL TABLE test_info(key string,name string )STORED by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,info:name") TBLPROPERTIES
25、("" = "test_info");Ø 步驟3:刷新Impala表invalidate metadata(注:hbase里在增加數(shù)據(jù),impala不能刷新,直接就能查出來)13 impala與jdbc整合package cn.crxy.impala;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;/* * Created by xd on 2015/8/19. */public cla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024學(xué)年六年級數(shù)學(xué)課堂管理計劃
- 2025四年級下冊綜合素質(zhì)提升計劃
- 高效量子計算驅(qū)動的催化反應(yīng)設(shè)計-全面剖析
- 家電行業(yè)材料采購與組織計劃
- 黃斑水腫光動力療法研究-全面剖析
- 蛋白質(zhì)工程驅(qū)動精準醫(yī)療的創(chuàng)新-全面剖析
- 西北小農(nóng)戶玉米生產(chǎn)碳排放的空間差異及影響因素分析
- 空間插補算法進展-全面剖析
- 環(huán)境因素對運動表現(xiàn)影響-全面剖析
- 環(huán)保產(chǎn)品供貨安全保障措施
- (T8聯(lián)考)2025屆高三部分重點中學(xué)3月聯(lián)合測評生物試卷(含答案詳解)河北版
- 員工入職申請表(完整版)
- T-GDEIIA 56-2024 垂直起降低空航空器起降場基礎(chǔ)設(shè)施配置技術(shù)要求
- 整本書閱讀《林海雪原》【知識精研】六年級語文下冊 (統(tǒng)編版五四制2024)
- 9《我的戰(zhàn)友邱少云》說課稿-2024-2025學(xué)年六年級語文上冊統(tǒng)編版
- 亞朵酒店前臺培訓(xùn)
- 大學(xué)假期安全主題班會課件
- 創(chuàng)業(yè)培訓(xùn)講師手冊
- 威脅情報評估體系-洞察分析
- 2024 CSCO 黑色素瘤指南解讀
- 中國類風(fēng)濕關(guān)節(jié)炎診療指南(2024版)解讀
評論
0/150
提交評論