0%

impala

为 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 支持的数据类型

  1. 原生类型:
  • TINYINT
  • SMALLINT
  • INT
  • BIGINT
  • BOOLEAN
  • FLOAT
  • DOUBLE
  • DECIMAL
  • STRING
  • CHAR
  • VARCHAR
  • TIMESTAMP
  1. 复合类型:
  • struct_type
  • array_type
  • map_type

2. Kudu

Kudu 不支持 TIMESTAMP 类型的字段

3. Docker

1
2
3
4
5
6
7
8
9
$ docker run -i -t cloudera/impala-dev:minimal /bin/bash
[container]$ docker-boot # starts Postgres and SSH both needed to run Impala
[container]$ cd Impala
[container]$ . bin/impala-config.sh # sets the Impala environment variables
[container]$ ./buildall.sh -format -skiptests
[container]$ run-all.sh # starts dependent services -- HDFS, Hive metastore, etc
[container]$ start-impala-cluster.py
[container]$ impala-shell.sh
[localhost:21000] > create database test;

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