为 hadoop 提供 SQL 支持, 性能比 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.
1. Impala 支持的数据类型
- 原生类型:
- TINYINT
- SMALLINT
- INT
- BIGINT
- BOOLEAN
- FLOAT
- DOUBLE
- DECIMAL
- STRING
- CHAR
- VARCHAR
- TIMESTAMP
- 复合类型:
- struct_type
- array_type
- map_type
2. Kudu
Kudu 不支持 TIMESTAMP 类型的字段
3. Docker
1 | $ docker run -i -t cloudera/impala-dev:minimal /bin/bash |
4. Resource
http://impala.apache.org/docs/build/html/
http://impala.apache.org/docs/build/html/topics/impala_langref_sql.html
http://impala.apache.org/docs/build/html/topics/impala_functions_overview.html#functions