Hue 支持 Impala
什么是 impala
Impala 为存储在 HDFS 和 HBase 中的数据提供了一个实时 SQL 查询接口
impala 是 Cloudera 公司主导开发的新型查询系统,它提供 SQL 语义,能查询存储在 Hadoop 的 HDFS 和 HBase 中的 PB 级大数据。已有的 Hive 系统虽然也提供了 SQL 语义,但由于 Hive 底层执行使用的是 MapReduce 引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala 的最大特点也是最大卖点就是它的快速。
1. 部署 Impala
在 Cloudera Manager 部署 impala
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
2
3
4
5
6
即可在 Hue 上基于 impala 查询,比 hive 查询的速度会快很多。
3. 查询
支持执行计划的可视化,方便了解每个阶段的执行耗时,便于 SQL 性能优化;
此外,impala 支持缓存 SCAN HDFS 阶段的数据,不需要重新扫描 HDFS 文件。
以下是同一个 SQL 执行两次的效果:
第一次查询, SCAN HDFS 阶段耗时 6.9s
第二次查询, SCAN HDFS 阶段耗时 毫秒级别
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
,重新查询即可。
mem_limit: 由守护程序本身强制执行的 Impala Daemon 的内存限制(以字节为单位)。如果达到该限制,Impalad Daemon 上运行的查询可能会被停止。将其留空可以让 Impala 选择自己的限制。使用 -1 B 值将指定无任何限制。
reference
- [1] Apache Hue. Connectors: Impalaopen in new window