Hue 支持 Impala

什么是 impala

Impala 为存储在 HDFS 和 HBase 中的数据提供了一个实时 SQL 查询接口

impala 是 Cloudera 公司主导开发的新型查询系统,它提供 SQL 语义,能查询存储在 Hadoop 的 HDFS 和 HBase 中的 PB 级大数据。已有的 Hive 系统虽然也提供了 SQL 语义,但由于 Hive 底层执行使用的是 MapReduce 引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala 的最大特点也是最大卖点就是它的快速。

1. 部署 Impala

在 Cloudera Manager 部署 impala -w1675

2. 修改 Hue 配置

修改 hue_safety_valve.ini 配置文件,增加如下内容

[impala]
  # Host of the Impala Server (one of the Impalad)
  server_host=localhost

  # Port of the Impala Server
  server_port=21050
1
2
3
4
5
6

-w1917

即可在 Hue 上基于 impala 查询,比 hive 查询的速度会快很多。

3. 查询

支持执行计划的可视化,方便了解每个阶段的执行耗时,便于 SQL 性能优化; -w1917

此外,impala 支持缓存 SCAN HDFS 阶段的数据,不需要重新扫描 HDFS 文件。

以下是同一个 SQL 执行两次的效果:

  • 第一次查询, SCAN HDFS 阶段耗时 6.9s -w1917

  • 第二次查询, SCAN HDFS 阶段耗时 毫秒级别 -w1917

FAQ

因内存限制太小导致查询失败

查询时有如下提示

ExecQueryFInstances rpc query_id=0543b4d3b4ead6ee:d56d484b00000000 failed: Failed to get minimum memory reservation of 70.00 MB on daemon hadoop-46.com:22000 for query 0543b4d3b4ead6ee:d56d484b00000000 due to following error: Memory limit exceeded: Could not allocate memory while trying to increase reservation. Query(0543b4d3b4ead6ee:d56d484b00000000) could not allocate 70.00 MB without exceeding limit. Error occurred on backend hadoop-46.com:22000 Memory left in process limit: 2.12 MB Query(0543b4d3b4ead6ee:d56d484b00000000): Reservation=0 ReservationLimit=204.80 MB OtherMemory=0 Total=0 Peak=0Process: Limit=256.00 MB Total=253.88 MB Peak=273.12 MB Buffer Pool: Free Buffers: Total=0 Buffer Pool: Clean Pages: Total=0 Buffer Pool: Unused Reservation: Total=-70.00 MB Control Service Queue: Limit=50.00 MB Total=0 Peak=25.42 KB Data Stream Service Queue: Limit=12.80 MB Total=0 Peak=240.00 B Data Stream Manager Early RPCs: Total=0 Peak=0 TCMalloc Overhead: Total=23.52 MB RequestPool=fe-eval-exprs: Total=0 Peak=0 RequestPool=root.admin: Total=442.00 B Peak=72.51 MB Query(d5413093428cfc74:6adc410400000000): Reservation=0 ReservationLimit=204.80 MB OtherMemory=442.00 B Total=442.00 B Peak=72.51 MB Query(a548dad975a47b93:9d9d313e00000000): Reservation=0 ReservationLimit=204.80 MB OtherMemory=0 Total=0 Peak=71.40 MB Query(4f484fd40fff7020:3836c05c00000000): Reservation=0 ReservationLimit=204.80 MB OtherMemory=0 Total=0 Peak=0 Query(0543b4d3b4ead6ee:d56d484b00000000): Reservation=0 ReservationLimit=204.80 MB OtherMemory=0 Total=0 Peak=0 Untracked Memory: Total=300.36 MB Memory is likely oversubscribed. Reducing query concurrency or configuring admission control may help avoid this error.
1

可以看到内存不足,修改 impala 的 mem_limit,重新查询即可。

-w1884

mem_limit: 由守护程序本身强制执行的 Impala Daemon 的内存限制(以字节为单位)。如果达到该限制,Impalad Daemon 上运行的查询可能会被停止。将其留空可以让 Impala 选择自己的限制。使用 -1 B 值将指定无任何限制。

reference