Pulsar 磁盘被写满后需要清理哪些文件?

答:清理 bookie 不能通过直接清理文件的方式进行,这会导致整个 bookie 状态的不一致,并且一旦文件被删除可能会导致不可逆的灾难。

处理这个文件需视环境而定。如果是测试环境或者不会关心数据丢失的其他环境,那么可以直接使用 admin 删除掉集群的所有的 topic,然后逐个 bookie 节点触发手动 GC curl,bookie 就可以逐渐释放磁盘空间。

如果是线上环境,肯定是不能直接把 topic 都删除掉的。首先,优先考虑扩容保证服务不会中断,然后根据 topic 使用的存储大小来检查是哪些 topic 占用了大量的存储空间。Pulsar 的机制是 subscription 没有 ack 的消息是不会被删除掉的。因此如果发现是某些不用的 subscription 导致 topic 数据无法删除,可以检查 subscription 是不是还再用/可以清理掉。总之,找出那些可以清理数据的 topic,让不用的数据过期或被删除,然后再到 bookie 节点触发手动 GC 来清理数据。

触发手动 GC 清理 bookie 数据可以使用

curl -XPUT 127.0.0.1:8000/api/v1/bookie/gc

如果没有为 bookkeeper 开启 http server, 需要根据下边的配置开启 bookkeeper http server
开启bookkeeper对应配置:vim conf/bk_server.conf
httpServerEnabled=true
httpServerPort=8080 #如果是和pulsar混布的,这个端口需要改下,因为pulsar默认也是8080端口

curl -XPUT bookkeeper-server-host:/api/v1/bookie/gc