使用kafka时遇到的一些问题
当我使用kafka时,启动了broker,创建了主题,此时我对主题的分区进行了扩充。但是我发现生产者拉取元数据时并没有成功拉取,还是以前的数据,重启kafka生产者也没有任何用。此时我想是不是应该重启下kafka broker。我是先强制关掉kafka,然后再启动kafka,但是这一启动就报错了。
org.apache.kafka.common.KafkaException: Failed to acquire lock on file .lock in /tmp/kafka-logs. A Kafka instance in another process or thread is using this directory.
现实上面的错误,其含义似乎是另一个进程在log文件中正在运行(上了锁),这时我们的broker无法在这个文件上运行了,所以就运行失败了。 那么想要成功启动该怎么办? -> 关掉那个运行相应日志的进程
怎么查找到这个进程? -> 使用ps命令
怎么关掉这个进程 -> 使用kill命令
然后重新运行kafka即可
重点讲解下ps查找进程的过程。 首先,我们要明白,kafka进程的特征。其在运行时一定为指定配置文件。 这条命令的作用是列出系统中所有正在运行的进程,然后通过管道符号 | 将输出结果传递给下一个命令。第二个命令 grep server.properties 是在前面输出的结果中查找包含 server.properties 字符串的行。而第三个命令 grep -v grep 则是去除查找结果中包含 grep 字符串的行,因为这些行只是表示我们执行了查找命令本身,并不代表真正的进程。总之,这条命令的目的是查找正在运行的与 server.properties 相关的进程并显示其相关信息。 grep -v 命令是 grep 的一个选项,它的作用是排除掉包含指定模式的行,只输出不包含该模式的行。具体来说,-v 选项可以理解为取反操作,即将匹配模式和待匹配文本进行比较,如果一致就排除掉该行,否则保留该行。在实际使用中,grep -v 常用于过滤掉一些不需要的行或者筛选出与我们所需内容无关的行,使得输出结果更加精准。
ps aux | grep server.properties | grep -v grep