【问题标题】:Druid - No space left on device (Middle Manager)Druid - 设备上没有剩余空间(中层管理器)
【发布时间】:2018-11-01 21:47:26
【问题描述】:

Druid 集群有 2 个节点,1 个节点带有代理服务,其他节点执行剩余的 4 个 druid 服务(Coordinator、Overload、Historical、MiddleManager)。 EC2 机器类型为 t2.xlarge。

我的 Druid 摄取数据的目标是 1 个数据源中的 1.5 亿条记录,以测试 Druid 的消费能力,以秒级响应。

问题

我已将 10M 的记录加载到 Druids 数据源中。在此基准测试之后,由于中间管理器服务,我面临 Java.io.IOException: No Space Left on device。谁能指导我使用合适的配置来加载这个大块中的数据。

我尝试了以下选项作为 Hit & Try 策略:

  • 增加中层管理人员和历史服务的 JVM 内存
  • 历史节点的缓冲区大小增加到 300 GB
  • 重启 EC2 机器并重启正在运行的服务

【问题讨论】:

  • 分享你当前的 jvm 中间管理配置和摄取任务,段的持续时间是多少?
  • @mdeora 历史节点 JVM -Xms8g -Xmx8g -XX:MaxDirectMemorySize=1280m MiddleManager: -Xms64m -Xmx64m 由于缓冲区大小和避免缓冲区,我已将中间管理器的线程数从 27 减少到 9摄取时出现内存错误
  • 什么是段粒度?
  • 分段粒度为“DAY”,因为我正在加载 30 天的数据,目标分区大小为 5000000。数据源包含 54 列。
  • 30天的数据文件总大小是多少?

标签: java amazon-ec2 memory-management druid


【解决方案1】:

请检查以下配置中的 tmp dir 设置。

grep -r "var" conf/druid/cluster/data

conf/druid/cluster/data/middleManager/jvm.config:-Djava.io.tmpdir=var/tmp conf/druid/cluster/data/middleManager/runtime.properties:druid.indexer.task.baseTaskDir=var/druid/task conf/druid/cluster/data/historical/jvm.config:-Djava.io.tmpdir=var/tmp conf/druid/cluster/data/historical/runtime.properties:druid.processing.tmpDir=var/druid/processing conf/druid/cluster/data/historical/runtime.properties:druid.segmentCache.locations=[{"path":"var/druid/segment-cache","maxSize":300000000000}]

在我的情况下,var 文件夹位于一个小卷中(您可以使用“df -h”来检查它。),我必须将其更新为 /data/var,它有更多的空间。

希望它会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 2012-01-14
    • 2012-05-15
    • 2018-11-22
    • 2015-07-21
    • 2020-12-16
    • 2014-11-20
    • 2018-12-27
    相关资源
    最近更新 更多