Kafka 代理启动内存问题

Kafka broker startup memory issue

我是 Kafka 和 Hadoop 技术的新手。我试图在 AWS EC2 VM 实例上安装并 运行 我的第一个单节点、单代理集群,我完成了:

1) java 安装

2) 使用 java 个相关条目更新 ~/.bashrc and ~/.nash_profile 个文件

3) 能够 运行 内部 zookeeper 实例,但是

4) 一旦我尝试启动 kafka 代理,它就会向我抛出以下错误消息:

$ bin/kafka-server-start.sh config/server.properties
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0130000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (malloc) failed to allocate 986513408 bytes for committing reserved memory.
An error report file with more information is saved as:
/usr/local/kafka/hs_err_pid2549.log

我不确定我做错了什么。此 AWS EC2 VM 实例是新创建的 Ubuntu-t2.micro 实例,具有 8 GB 通用 SSD 卷。

所以我认为您遇到的错误是关于 RAM 内存,而不是 SSD 内存。

我进行了快速 google 搜索,t2.micro 帐户似乎只有 1GB 内存?那是对的吗?从错误和这个 Stack Overflow Answer 来看,您似乎没有足够的 RAM。它说 malloc 请求 986mb 或内存,这基本上是 1gb,而你的机器上只有 1gb。

这是内存问题。我将 kafka-server-startup.sh 和 zookeeper-server-start.sh 中的最小和最大内存分配值更新为 export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" 并启动了 zookeeper 和 kafka 服务器都工作正常。谢谢

如果需要对 Confluent Kafka 进行相同的更改。对于 centos,修改 /usr/lib/systemd/system/confluent-kafka.service 文件并在该文件中传递 "KAFKA_HEAP_OPTS=-Xmx512M -Xms512M" 值。这可以保护环境免于升级。然后 systemctl daemon-reload。通过服务 systemctl status confluent-kafka 上的 运行 状态检查新 kafka 的值。