您的位置:首页 > 其它

Mac 安装kafka踩过的坑

2019-01-09 09:57 190 查看

安装

[code]brew install kafka

使用此命令一键安装

 

运行

启动zookeeper

三种运行方式

[code]brew services start zookeeper

zkServer start

zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties

官方解释,第一种表示后台运行,后两个是前台运行。个人倾向于使用第三种,因为如果用第一种可能出现假启动,此问题后面再描述。

在我启动过程中,发现有个问题,就是现实2181端口被占用,而抛异常,所以我把zookeeper和kafka里面的zookeeper服务器端口全部修改为2080,对应的配置文件在

[code]/usr/local/etc/kafka/server.properties

/usr/local/etc/kafka/zookeeper.properties

在此基础上,使用zkServer start命令启动zk,当出现

[code][2019-01-09 09:16:53,636] INFO Server environment:java.io.tmpdir=/var/folders/r_/8dt5ykzj02xg5rjhsyfgsvz40000gn/T/ (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,636] INFO Server environment:java.compiler=<NA> (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,636] INFO Server environment:os.name=Mac OS X (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,636] INFO Server environment:os.arch=x86_64 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,637] INFO Server environment:os.version=10.14 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,637] INFO Server environment:user.name=dp (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,637] INFO Server environment:user.home=/Users/qinfendexiaoxiannv (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,637] INFO Server environment:user.dir=/usr/local/etc/kafka (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,647] INFO tickTime set to 3000 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,647] INFO minSessionTimeout set to -1 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,647] INFO maxSessionTimeout set to -1 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-01-09 09:16:53,661] INFO Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory (org.apache.zookeeper.server.ServerCnxnFactory)
[2019-01-09 09:16:53,678] INFO binding to port 0.0.0.0/0.0.0.0:2080 (org.apache.zookeeper.server.NIOServerCnxnFactory)

表示zk启动成功,注意最后一句。

 

启动kafka

想启动kafka,首先得保证zookeeper已经成功启动

新建终端

同样,kafka也有两种方式

[code]brew services start kafka

kafka-server-start /usr/local/etc/kafka/server.properties

同样,建议第二种。

当出现

[code][2019-01-09 09:41:24,100] INFO Logs loading complete in 644 ms. (kafka.log.LogManager)
[2019-01-09 09:41:24,121] INFO Starting log cleanup with a period of 300000 ms. (kafka.log.LogManager)
[2019-01-09 09:41:24,122] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2019-01-09 09:41:24,444] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2019-01-09 09:41:24,472] INFO [SocketServer brokerId=0] Started 1 acceptor threads (kafka.network.SocketServer)
[2019-01-09 09:41:24,504] INFO [ExpirationReaper-0-Produce]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2019-01-09 09:41:24,505] INFO [ExpirationReaper-0-Fetch]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2019-01-09 09:41:24,506] INFO [ExpirationReaper-0-DeleteRecords]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2019-01-09 09:41:24,519] INFO [LogDirFailureHandler]: Starting (kafka.server.ReplicaManager$LogDirFailureHandler)
[2019-01-09 09:41:24,590] INFO Creating /brokers/ids/0 (is it secure? false) (kafka.zk.KafkaZkClient)
[2019-01-09 09:41:24,593] INFO Result of znode creation at /brokers/ids/0 is: OK (kafka.zk.KafkaZkClient)
[2019-01-09 09:41:24,595] INFO Registered broker 0 at path /brokers/ids/0 with addresses: ArrayBuffer(EndPoint(10.175.119.178,9092,ListenerName(PLAINTEXT),PLAINTEXT)) (kafka.zk.KafkaZkClient)
[2019-01-09 09:41:24,658] INFO [ExpirationReaper-0-topic]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2019-01-09 09:41:24,664] INFO [ExpirationReaper-0-Heartbeat]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2019-01-09 09:41:24,670] INFO [ExpirationReaper-0-Rebalance]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2019-01-09 09:41:24,707] INFO [GroupCoordinator 0]: Starting up. (kafka.coordinator.group.GroupCoordinator)
[2019-01-09 09:41:24,709] INFO [GroupCoordinator 0]: Startup complete. (kafka.coordinator.group.GroupCoordinator)
[2019-01-09 09:41:24,720] INFO [GroupMetadataManager brokerId=0] Removed 0 expired offsets in 12 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-01-09 09:41:24,746] INFO [ProducerId Manager 0]: Acquired new producerId block (brokerId:0,blockStartProducerId:4000,blockEndProducerId:4999) by writing to Zk with path version 5 (kafka.coordinator.transaction.ProducerIdManager)
[2019-01-09 09:41:24,796] INFO [TransactionCoordinator id=0] Starting up. (kafka.coordinator.transaction.TransactionCoordinator)
[2019-01-09 09:41:24,806] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.coordinator.transaction.TransactionMarkerChannelManager)
[2019-01-09 09:41:24,812] INFO [TransactionCoordinator id=0] Startup complete. (kafka.coordinator.transaction.TransactionCoordinator)
[2019-01-09 09:41:24,900] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread)
[2019-01-09 09:41:24,955] INFO [SocketServer brokerId=0] Started processors for 1 acceptors (kafka.network.SocketServer)
[2019-01-09 09:41:24,974] INFO Kafka version : 2.1.0 (org.apache.kafka.common.utils.AppInfoParser)
[2019-01-09 09:41:24,977] INFO Kafka commitId : 809be928f1ae004e (org.apache.kafka.common.utils.AppInfoParser)
[2019-01-09 09:41:24,985] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

表示启动成功,注意最后一句。

 

如果出现与zk连接超时的异常很可能表示zk没有成功启动。

 

创建主题,收发消息

创建主题

新建终端,执行

[code]kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

创建一个名为test的主题

[code]Created topic "test".

查看已有主题

[code]kafka-topics --list --zookeeper localhost:2181

 

创建生产者消费者

在两个终端中执行

[code]kafka-console-producer --broker-list localhost:9092 --topic test

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning

分别创建生产者和消费者,主题是test

之后在生产者终端输入,消费者终端会对应输出

 

假启动问题

如果在创建主题过程中出现错误

[code]kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Error while executing topic command : Replication factor: 1 larger than available brokers: 0.
[2019-01-09 09:18:31,246] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0.

参考stackoverflow    

[code]https://stackoverflow.com/questions/33098366/error-creating-kafka-topics-replication-factor-larger-than-available-brokers

可能表示kafka根本没有启动起来,这时如果启动发现有一个log文件被占用,我的解决办法是使用命令

[code]brew services stop kafka

关闭假启动的kafka服务,然后使用上面的第二个命令重新启动即可。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: