機器環境:
4個slave節點
10.200.187.86 cslave1 4核 3G
10.200.187.87 cslave2 2核 4G
10.200.187.88 cslave3 2核 4G
10.200.187.89 cslave4 2核 6G
測試效果:
[img]
[/img]
總結:
1.在內存夠用而且是簡單sql條件下,impala相比hive執行效率高不少,簡單的sql在百萬級別數據中運行,耗時幾秒甚至不用一秒。
2.impala性能如何,與數據的存儲格式關係很大,百萬級別text格式與hbase格式相差十幾倍,千萬級別parquet格式與text格式相差百倍。
3.在當前集羣配置下,百萬級別impala join略比hive性能高(3~4倍),但在千萬級別時impala大表的join執行失敗(內存不足)。
4.impala採用parquet存儲(列式),select部分字段+where條件查詢效率很高。
問題:
官方表示impala新版本能夠在生產環境中使用,但根據業界人反饋,會有不少問題,重點問題是出現內存溢出狀況。官方推薦impala節點的內存是128G。
建議使用場景:
部署於生產環境,可應用於運維,作簡單查數據工做,效率高。但有必定的內存佔用,不建議使用複雜sql例如大表join等。
imapla實時查詢,如上能夠看到,相對hive性能是有很大提升的,但它也不能達到關係型數據庫的效果,因此根據實際業務場景需求而定。
部分資料:
適用面:
Hive: 複雜的批處理查詢任務,數據轉換任務。
Impala:實時數據分析,由於不支持UDF,能處理的問題域有必定的限制,與Hive配合使用,對Hive的結果數據集進行實時分析。
優勢:
支持SQL查詢,快速查詢大數據。
能夠對已有數據進行查詢,減小數據的加載,轉換。
多種存儲格式能夠選擇(Parquet, Text, Avro, RCFile, SequeenceFile)。
能夠與Hive配合使用。
缺點:
不支持用戶定義函數UDF。
不支持text域的全文搜索。
不支持Transforms。
不支持查詢期的容錯。
對內存要求高。
補充:
ERRORS報錯狀況
create table testjoinparquet as
> select a.tid,a.buyer_nick,b.status,b.adjust_fee,b.buyer_email
> from (select tid,buyer_nick from s_trade_big_parquet) a
> join
> (select tid,status,adjust_fee,buyer_email from s_trade_big_parquet) b
> on (a.tid=b.tid);
Query: create table testjoinparquet as select a.tid,a.buyer_nick,b.status,b.adjust_fee,b.buyer_email from (select tid,buyer_nick from s_trade_big_parquet) a join (select tid,status,adjust_fee,buyer_email from s_trade_big_parquet) b on (a.tid=b.tid)
Query aborted.
ERRORS ENCOUNTERED DURING EXECUTION:
Backend 3:Memory Limit Exceeded
Query Limit: Consumption=1.35 GB
Fragment dd496e82ab98ee40:19f71d48047534a2: Consumption=16.00 KB
UDFs: Consumption=0.00
EXCHANGE_NODE (id=4): Consumption=0.00
DataStreamMgr: Consumption=0.00
HdfsTableSink: Consumption=0.00
Fragment dd496e82ab98ee40:19f71d48047534a6: Consumption=1.27 GB
UDFs: Consumption=0.00
HASH_JOIN_NODE (id=2): Consumption=1.07 GB
HDFS_SCAN_NODE (id=0): Consumption=207.88 MB
EXCHANGE_NODE (id=3): Consumption=1.70 MB
DataStreamMgr: Consumption=1.70 MB
DataStreamSender: Consumption=2.45 KB
Fragment dd496e82ab98ee40:19f71d48047534aa: Consumption=82.39 MB
UDFs: Consumption=0.00
HDFS_SCAN_NODE (id=1): Consumption=82.19 MB
DataStreamSender: Consumption=8.00 KB
說明:內存已經用完,致使部分節點讀取異常,parquet格式表寫入很耗內存,由於parquet以1G爲單位,1G得所有加載到內存中再寫入。
相關文檔:
開源中國:http://my.oschina.net/weiqingbin/blog/196143#OSC_h2_31,裏邊也有不少Impala框架優化應用方面的翻譯文檔。
hive與impala對比,sql差別參看http://www.cloudera.com/content/cloudera- content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_langref_unsupported.html#langref_unsupported,
中文:http://my.oschina.net/weiqingbin/blog/189414html