【问题标题】:Mesos Kafka task failed memory limitMesos Kafka 任务内存限制失败
【发布时间】:2015-10-17 14:25:30
【问题描述】:

我打算在 apache mesos 上建立一个 kafka 集群。 我按照kafka-mesos on github 的说明进行操作。我安装了一个 mesos 集群(使用 Mesosphere 没有 Marathon),它有 3 个节点,每个节点有 2 个 CPU 和 4GB 内存。我使用 hello world 示例成功测试了集群。

我可以在其上运行 kafka-mesos 调度程序,并可以向其添加代理。 但是当我想启动代理时,会出现内存限制。

broker-191-.... TASK_FAILED slave:#c3-S1 reason:REASON_MEMORY_LIMIT

虽然集群有 12GB 内存,但 broker 只需要 3GB 内存和 1GB 堆。 (我用从 512M 到 3GB 的各种配置对其进行了测试,但没有成功)

有什么问题?解决办法是什么?

完整的故事在这里:

2015-10-17 17:39:24,748 [Jetty-17] INFO  ly.stealth.mesos.kafka.HttpServer$  - handling - http://192.168.11.191:7000/api/broker/start
2015-10-17 17:39:28,202 [Thread-605] INFO  ly.stealth.mesos.kafka.Scheduler$  - [resourceOffers]
mesos-2#O1160 cpus:2.00 mem:4098.00 disk:9869.00 ports:[31000..32000]
mesos-3#O1161 cpus:2.00 mem:4098.00 disk:9869.00 ports:[31000..32000]
mesos-1#O1162 cpus:2.00 mem:4098.00 disk:9869.00 ports:[31000..32000]
2015-10-17 17:39:28,204 [Thread-605] INFO  ly.stealth.mesos.kafka.Scheduler$  - Starting broker 191: launching task broker-191-0abe9e57-b0fb-4d87-a1b4-529acb111940 by offer mesos-2#O1160
broker-191-0abe9e57-b0fb-4d87-a1b4-529acb111940 slave:#c6-S3 cpus:1.00 mem:3096.00 ports:[31000..31000] data:defaults=broker.id\=191\,log.dirs\=kafka-logs\,port\=31000\,zookeeper.connect\=192.168.11.191:2181\\\,192.168.11.192:2181\\\,192.168.11.193:2181\,host.name\=mesos-2\,log.retention.bytes\=10737418240,broker={"stickiness" : {"period" : "10m"\, "stopTime" : "2015-10-17 13:43:29.278"}\, "id" : "191"\, "mem" : 3096\, "cpus" : 1.0\, "heap" : 1024\, "failover" : {"delay" : "1m"\, "maxDelay" : "10m"}\, "active" : true}
2015-10-17 17:39:28,417 [Thread-606] INFO  ly.stealth.mesos.kafka.Scheduler$  - [statusUpdate] broker-191-0abe9e57-b0fb-4d87-a1b4-529acb111940 TASK_FAILED slave:#c6-S3 reason:REASON_MEMORY_LIMIT
2015-10-17 17:39:28,418 [Thread-606] INFO  ly.stealth.mesos.kafka.Scheduler$  - Broker 191 failed 1, waiting 1m, next start ~ 2015-10-17 17:40:28+03
2015-10-17 17:39:29,202 [Thread-607] INFO  ly.stealth.mesos.kafka.Scheduler$  - [resourceOffers]

我在 Mesos 主日志中发现了以下内容:

...validation.cpp:422] Executor broker-191-... for task broker-191-... uses less CPUs (None) than the minimum required (0.01). Please update your executor, as this will be mandatory in future releases.
...validation.cpp:434] Executor broker-191-... for task broker-191-... uses less memory (None) than the minimum required (32MB). Please update your executor, as this will be mandatory in future releases.

但我通过代理添加(更新)为代理设置 CPU 和 MEM:

broker updated:
id: 191
active: false
state: stopped
resources: cpus:1.00, mem:2048, heap:1024, port:auto
failover: delay:1m, max-delay:10m
stickiness: period:10m, expires:2015-10-19 11:15:53+03

【问题讨论】:

  • REASON_MEMORY_LIMIT 并不一定意味着任务因 OOM 而被终止。可以附上执行者的stderr吗?
  • 我将kafka-mesos.properties 中的user=vagrant 更改为user=root 并重新启动mesos,从而解决问题。

标签: apache-kafka mesos mesosphere


【解决方案1】:

执行程序不会仅获得代理的堆设置。我为此https://github.com/mesos/kafka/issues/137 开了一个问题。请增加内存,直到有补丁可用。

我怀疑这不是问题,因为 mem 被设置为一个更大的值(你的数据集的大小,你不想在读取时从磁盘上命中)所以有页面缓存以实现最大效率@ 987654322@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多