我尝试了以下-
./confluent start
给出了-
此CLI仅用于开发,不用于生产
https://docs.confluent.io/current/cli/index.html使用CONFLUENT_CURRENT:/tmp/confluent.w1S9B10m 启动Zookeeper
动物园管理员是[UP] 开始kafka
kafka是[UP]
启动架构注册表 schema-registry是[UP]
开始kafka-rest
kafka-rest是[UP]
开始连接
连接是[UP] 启动ksql-server
ksql-server是[UP]
此后,./kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic users
为主题“用户”创建3个分区。但这会带来错误-
执行主题命令时出错:复制因子:大3 比可用经纪商多:1. [2018-10-03 02:47:19,079]错误
org.apache.kafka.common.errors.InvalidReplicationFactorException: 复制因子:比可用代理大3:1.
(kafka.admin.TopicCommand $)
如何设置3个经纪人? This的帖子与此类似,但我不知道如何实现。
修改
现在,我在不同的Linux终端窗口上使用./confluent start
,然后使用kafka-server-start /path/to/server-1.properties
和server-2.properties。但是,当我尝试启动server-2时,出现“ JVM无法分配内存”错误。
OpenJDK 64位服务器VM警告:INFO: os :: commit_memory(0x00000000c0000000,1073741824,0)失败; error ='无法分配内存'(errno = 12)
没有足够的内存供Java Runtime Environment使用 继续。
本机内存分配(mmap)无法映射1073741824 提交保留内存的字节。
答案 0 :(得分:1)
您收到该错误,是因为您请求的复制因子为3,但只有一个代理。由于Kafka无法满足请求的复制因子(因为您没有> = 3个代理),因此它拒绝创建主题。
有steps shown here用于安装多节点环境。其他两个相关文档:
如果您只想使用一个代理(例如,对于dev),则可以减少复制因子:
./kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic users
答案 1 :(得分:1)
有一个简单的示例,使用terraform和ansible启动5个AWS实例,然后在GitHub上将3个经纪人群集部署到其中
请注意,这仅是为了配合使用,我们需要做更多的工作以使ELB在您要向Internet公开的各种服务(REST Proxy,C3)之前更像生产。 )。
答案 2 :(得分:1)
现在,我在不同的Linux终端窗口上使用./confluent start,然后使用kafka-server-start /path/to/server-1.properties和server-2.properties。但是有时候我会收到“ JVM无法分配内存”的信息。
内存不足,是因为要启动总共3个代理,1个Zookeeper,1个架构注册表,1个Kafka Connect服务器,1个Kafka REST服务器,KSQL服务器,以节省总内存使用量< strong>超过 8 GB ...如果您下载了Confluent Enterprise,则可以同时获得Control Center,以实现更多用途。
强烈建议不要在单个计算机上运行所有单个服务,甚至不要在单个计算机上运行多个Kafka代理,因为如果只有一个磁盘,那么无论如何都将受到一个实例的IO约束
如果只需要Kafka,则不需要融合的cli命令。运行Zookeeper启动命令,然后运行Kafka启动命令。
You're welcome to start either of those in separate terminals on different ports and pointing to different storage locations,但它们都是内存密集型应用程序,因此您应该给它们提供大量可用的堆空间(在Apache Kafka页面上,它说在生产部署中至少为6G)