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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java使用impala存放多条sql_Impala基于内存的SQL引擎的详细介绍

發(fā)布時間:2023/12/1 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java使用impala存放多条sql_Impala基于内存的SQL引擎的详细介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)存儲

使用相同的存儲數(shù)據(jù)池都支持把數(shù)據(jù)存儲于HDFS, HBase。

元數(shù)據(jù):

兩者使用相同的元數(shù)據(jù)

SQL解釋處理:

比較相似都是通過詞法分析生成執(zhí)行計劃。

執(zhí)行計劃:

Hive: 依賴于MapReduce執(zhí)行框架,執(zhí)行計劃分成 map->shuffle->reduce->map->shuffle->reduce…的模型。如果一個Query會 被編譯成多輪MapReduce,則會有更多的寫中間結果。由于MapReduce執(zhí)行框架本身的特點,過多的中間過程會增加整個Query的執(zhí)行時間。

Impala: 把執(zhí)行計劃表現(xiàn)為一棵完整的執(zhí)行計劃樹,可以更自然地分發(fā)執(zhí)行計劃到各個Impalad執(zhí)行查詢,而不用像Hive那樣把它組合成管道型的 map->reduce模式,以此保證Impala有更好的并發(fā)性和避免不必要的中間sort與shuffle。

數(shù)據(jù)流:

Hive: 采用推的方式,每一個計算節(jié)點計算完成后將數(shù)據(jù)主動推給后續(xù)節(jié)點。

Impala: 采用拉的方式,后續(xù)節(jié)點通過getNext主動向前面節(jié)點要數(shù)據(jù),以此方式數(shù)據(jù)可以流式的返回給客戶端,且只要有1條數(shù)據(jù)被處理完,就可以立即展現(xiàn)出來,而不用等到全部處理完成,更符合SQL交互式查詢使用。

內(nèi)存使用:

Hive: 在執(zhí)行過程中如果內(nèi)存放不下所有數(shù)據(jù),則會使用外存,以保證Query能順序執(zhí)行完。每一輪MapReduce結束,中間結果也會寫入HDFS中,同樣由于MapReduce執(zhí)行架構的特性,shuffle過程也會有寫本地磁盤的操作。

Impala: 在遇到內(nèi)存放不下數(shù)據(jù)時,當前版本1.0.1是直接返回錯誤,而不會利用外存,以后版本應該會進行改進。這使用得Impala目前處理Query會受到一 定的限制,最好還是與Hive配合使用。Impala在多個階段之間利用網(wǎng)絡傳輸數(shù)據(jù),在執(zhí)行過程不會有寫磁盤的操作(insert除外)

調(diào)度

Hive任務的調(diào)度依賴于Hadoop的調(diào)度策略。

Impala的調(diào)度由自己完成,目前的調(diào)度算法會盡量滿足數(shù)據(jù)的局部性,即掃描數(shù)據(jù)的進程應盡量靠近數(shù)據(jù)本身所在的物理機器。但目前調(diào)度暫時還沒有考慮負載均衡的問題。從Cloudera的資料看,Impala程序的瓶頸是網(wǎng)絡IO,目前Impala中已經(jīng)存在對Impalad機器網(wǎng)絡吞吐進行統(tǒng)計,但目前還沒有利用統(tǒng)計結果進行調(diào)度。

容錯

Hive任務依賴于Hadoop框架的容錯能力,可以做到很好的failover

Impala中不存在任何容錯邏輯,如果執(zhí)行過程中發(fā)生故障,則直接返回錯誤。當一個Impalad失敗時,在這個Impalad上正在運行的所有query都將失敗。但由于Impalad是對等的,用戶可以向其他Impalad提交query,不影響服務。當StateStore失敗時,也不會影響服務,但由于Impalad已經(jīng)不能再更新集群狀態(tài),如果此時有其他Impalad失敗,則無法及時發(fā)現(xiàn)。這樣調(diào)度時,如果謂一個已經(jīng)失效的Impalad調(diào)度了一個任務,則整個query無法執(zhí)行。

三、Impala Shell

1、Impala 外部shell

不進入Impala內(nèi)部,直接執(zhí)行的ImpalaShell

例如:

$impala-shell -h -- 通過外部Shell查看Impala幫助

$impala-shell -p select count(*) from t_stu -- 顯示一個SQL語句的執(zhí)行計劃

下面是Impala的外部Shell的一些參數(shù):

-h (--help) 幫助

-v (--version) 查詢版本信息

-V (--verbose) 啟用詳細輸出

--quiet 關閉詳細輸出

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

-i hostname (--impalad=hostname) 指定連接主機格式hostname:port 默認端口21000, impalad shell 默認連接本機impalad

- r(--refresh_after_connect)刷新所有元數(shù)據(jù)

-q query (--query=query) 從命令行執(zhí)行查詢,不進入impala-shell

-d default_db (--database=default_db) 指定數(shù)據(jù)庫

-B(--delimited)去格式化輸出

--output_delimiter=character 指定分隔符

--print_header 打印列名

-f query_file(--query_file=query_file)執(zhí)行查詢文件,以分號分隔

-o filename (--output_file filename) 結果輸出到指定文件

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

-k (--kerberos) 使用kerberos安全加密方式運行impala-shell

-l 啟用LDAP認證

-u 啟用LDAP時,指定用戶名

2、Impala內(nèi)部Shell

#impala shell進入

#普通連接

impala-shell

#impala shell命令

#查看impala版本

select version;

#特殊數(shù)據(jù)庫

#default,建立的沒有指定任何數(shù)據(jù)庫的新表

#_impala_builtins,用于保存所有內(nèi)置函數(shù)的系統(tǒng)數(shù)據(jù)庫

#庫操作

#創(chuàng)建

create database tpc;

#展示

show databases;

#展示庫名中含有指定(格式)字符串的庫展示

#進入

use tpc;

#當前所在庫

select current_database();

#表操作

#展示(默認default庫的表)

show tables;

#指定庫的表展示

show tables in tpc;

#展示指定庫中表名中含有指定字符串的表展示

show tables in tpc like 'customer*';

#表結構

describe city; 或 desc city;

#select insert create alter

#表導到另一個庫中(tcp:city->d1:city)

alter table city rename to d1.city

#列是否包含null值

select count(*) from city where c_email_address is null

#hive中 create、drop、alter,切換到impala-shell中需要如下操作

invalidate metadata

#hive中 load、insert、change表中數(shù)據(jù)(直接hdfs命令操作),切換到impala-shell中需要如下操作

refresh table_name

3、參考文章

總結

以上是生活随笔為你收集整理的java使用impala存放多条sql_Impala基于内存的SQL引擎的详细介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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