Apache Drill占用大量堆空间

时间:2019-02-11 09:05:00

标签: hdfs heap-memory apache-drill

嗨,我正在3个节点和3个节点ZK仲裁的3个节点上以分布式模式运行Apache钻探版本1.15,以查询一个150MB的小型csv文件。 但是,Drill继续使用4GB-6GB的堆内存。为了进行测试,我给了它18GB的堆空间(所有3个节点上都有32GB的内存)。

在Drill UI中触发3-4个类似的查询后,Drill使用了将近80-90%的可用堆内存。

我有默认配置,除了18GB的堆空间和20GB的直接内存。

enter image description here 而且,即使在执行查询几分钟后,堆内存仍会被占用。

我怀疑这是Apache Drill的正确行为吗?还是我错过了一点?

1 个答案:

答案 0 :(得分:1)

HEAP内存使用量不仅取决于数据源的大小,而且还取决于SQL查询的复杂性,因为对于计划优化,Calcite HEP计划程序会创建带有RelNode顶点的大型DAG。它使用DEPTH_FIRST算法应用不同的规则进行优化,然后递归处理子级以获得最佳逻辑计划。 HEAP内存用于整个过程。

关于查询执行后堆内存的占用情况,Drill使用不同的caching mechanisms来改善下一个查询的执行。

如果可以在堆转储中找到一些奇怪大小的对象,请随时询问Drill community