我在具有3个节点ZK quorum的3个节点上以分布式模式运行Apache drill version 1.15,以查询一个150MB的csv文件。但是,Drill继续使用4 4GB 6 4GB的堆内存。为了测试,我给它提供了18 on的堆空间(所有3个节点上都有32 on的内存)。
在Drill UI中触发3-4个类似的查询后,drill几乎使用了80-90%的可用堆内存。
我有默认的配置,除了18 and的堆空间和20 and的直接内存。

此外,即使在查询执行了几分钟之后,堆内存也会一直被占用。
我怀疑这是否是Apache Drill的正确行为?还是说我漏掉了什么?
发布于 2019-02-15 06:09:21
堆内存的使用不仅取决于数据源的大小,还取决于SQL查询的复杂性,因为对于计划优化来说,Calcite HEP planner会创建一个具有RelNode顶点的大型DAG。它使用DEPTH_FIRST算法应用不同的规则进行优化,然后递归处理子代以获得最优的逻辑规划。整个过程都使用堆内存。
对于查询执行后堆内存的占用,Drill使用不同的caching mechanisms来提高下一次查询的执行效率。
如果您可以在堆转储中找到一些奇怪大小的对象,请随时询问Drill community。
https://stackoverflow.com/questions/54627036
复制相似问题