Apache Drill占用大量堆空间

问题描述 投票:0回答:1

我在具有3个节点ZK仲裁的3个节点上以分布式模式运行Apache Drill版本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的正确行为吗?还是我错过了一点?

hdfs heap-memory apache-drill
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.