初探Apache Impala
Impala是什么?
Impala提高了Apache Hadoop上SQL查詢性能的標準,同時保留了熟悉的用戶體驗。使用Impala,您可以實時查詢存儲在HDFS或Apache HBase中的數據-包括SELECT,JOIN和聚合函數。此外,Impala使用與Apache Hive相同的元數據,SQL語法(Hive SQL),ODBC驅動程序和用戶界面(Hue Beeswax),為面向批處理或實時查詢提供了一個熟悉且統一的平臺。(因此,Hive用戶可以以很少的設置開銷使用Impala。)它是一個用C ++和Java編寫的開源軟件。 與其他Hadoop的SQL引擎相比,它提供了高性能和低延遲。換句話說,Impala是性能最高的SQL引擎(提供類似RDBMS的體驗),它提供了訪問存儲在Hadoop分布式文件系統中的數據的最快方法。
架構:
為了避免延遲,Impala避開了MapReduce通過與商業并行RDBMS中非常相似的專用分布式查詢引擎直接訪問數據。其結果是,性能比Hive快了幾個數量級,具體取決于查詢和配置的類型。
? ?優點
- Impala不需要把中間結果寫入磁盤,省掉了大量的I/O開銷。
- 省掉了MapReduce作業啟動的開銷。MapReduce啟動task的速度很慢(默認每個心跳間隔是3秒鐘),Impala直接通過相應的服務進程來進行作業調度,速度快了很多。
- Impala完全拋棄了MapReduce這個不太適合做SQL查詢的范式,而是像Dremel一樣借鑒了MPP并行數據庫的思想另起爐灶,因此可做更多的查詢優化,從而省掉不必要的shuffle、sort等開銷。
- 通過使用LLVM來統一編譯運行時代碼,避免了為支持通用編譯而帶來的不必要開銷。
- 用C++實現,做了很多有針對性的硬件優化,例如使用SSE指令。
- 使用了支持Data locality的I/O調度機制,盡可能地將數據和計算分配在同一臺機器上進行,減少了網絡開銷。
?
? 功能
- Impala可以根據Apache許可證作為開源免費提供。
- Impala支持內存中數據處理,它訪問/分析存儲在Hadoop數據節點上的數據,而無需數據移動。
- 使用類SQL查詢訪問數據。
- Impala為HDFS中的數據提供了更快的訪問。
- 可以將數據存儲在Impala存儲系統中,如Apache HBase和Amazon s3。
- Impala支持各種文件格式,如LZO,序列文件,Avro,RCFile和Parquet。
對于關系數據庫和Impala
Impala使用類似于SQL和HiveQL的Query語言。 下表描述了SQL和Impala查詢語言之間的一些關鍵差異。
Hive,Hbase和Impala
雖然Cloudera Impala使用與Hive相同的查詢語言,元數據和用戶界面,但在某些方面它與Hive和HBase不同。 下表介紹了HBase,Hive和Impala之間的比較分析。
?
所有這三個數據庫?-?
是NOSQL數據庫。
可用作開源。
支持服務器端腳本。
按照ACID屬性,如Durability和Concurrency。
使用分片進行分區。
部分摘自:https://blog.csdn.net/linxiyimeng007/article/details/80943378
總結
以上是生活随笔為你收集整理的初探Apache Impala的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一份非常完整的MySQL规范
- 下一篇: 高大上的介绍实时流式计算!