【问题标题】:Kafka fails to create Topic with large number of partitions (64k)Kafka无法创建具有大量分区(64k)的Topic
【发布时间】:2017-10-27 18:00:09
【问题描述】:

我在 Windows 上运行 Kafka 0.10.1.0。

我正在尝试使用 kafka-topics.bat 创建一个具有 64k 分区的大型主题。但它无法创建并出现错误 -

[2017-10-26 15:35:01,232] WARN Session 0x25f59be4474000f for server <ZK server name>/<ZK Server IP>:<ZK server port>, unexpected error, closing socket connection and attempting reconnect (org.apache.z
ookeeper.ClientCnxn)

java.io.IOException: An established connection was aborted by the software in your host machine
        at sun.nio.ch.SocketDispatcher.write0(Native Method)
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
        at sun.nio.ch.IOUtil.write(IOUtil.java:65)
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:117)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:366)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)

还有其他人遇到过这个问题吗?此外,拥有如此多分区的 Kafka 主题是否存在任何已知问题?还是将它们分成多个主题会更好?

谢谢, 维奈

【问题讨论】:

  • 您肯定希望将主题划分为更小的主题。如此高的分区管理对于磁盘IO来说是个问题。通常对于这样的大数据需求,我们设置了 5 个法定人数的 Zookeeper 和多个 Kafka 代理。这些许多分区需要分布在代理上以进行适当的管理

标签: java apache-kafka kafka-consumer-api kafka-producer-api


【解决方案1】:

查看您的应用程序在给定时间打开的句柄总数(不仅仅是文件句柄):只是为了确保它是句柄限制。

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx 下载 Process Explorer 确保设置适当的刷新速度。打开它并转到查看 -> 选择列 -> 按选项卡“流程性能”,然后单击“处理计数”。

对于 Windows 7 x64 位,一个进程可以同时打开 16.711.680 个句柄。如果您想自己检查限制,请阅读以下内容。使用 Windows Internals Book (https://technet.microsoft.com/en-us/sysinternals/bb963901.aspx) 中的工具进行检查。工具的名称是 TestLimit,您可以在页面下方的 Book Tools 标题下找到它。

据我所知,没有办法增加 Windows 操作系统的此限制,我也查看了。

正如其他人所说,想出一种方法来最小化大量线程。也许您的应用程序关闭了文件,但没有关闭句柄。我的建议,如果您真的需要使用非常大的句柄数,请在每次句柄数约为 16m 时启动一个新进程。

【讨论】:

    【解决方案2】:

    创建 64k 分区,需要文件处理程序。我还没有在 Windows 中运行 Kafka。但是在linux中,你必须通过/etc/security/limits.conf增加文件处理程序

    这个article 可能有助于选择正确数量的主题分区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2015-12-22
      • 2018-12-21
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多