1.下载kafka
Apache官网
http://kafka.apache.org/downloads.html
2.解压重命名
tar -zxvf kafka_2.12-1.0.0.tgz
mv kafka_2.12-1.0.0 kafka
rm -rf kafka_2.12-1.0.0.tgz(删除包)
3.配置kafka
vi /usr/local/kafka/config/server.properties
broker.id:依次增长的整数,0、1、2,集群中Broker的唯一id
advertised.listeners=PLAINTEXT://cache03:9092 cache01 公网地址已经在/etc/hosts做好了映射,其他三台也一样
zookeeper.connect=cache01:2181,cache02:2181,cache03:2181
4.启动kafka和关闭命令
在三台机器上的kafka目录下,分别执行以下命令:
nohup bin/kafka-server-start.sh config/server.properties &
或者
bin/kafka-server-start.sh config/server.properties &
使用jps检查启动是否成功
关闭kafka
bin/kafka-server-stop.sh
或者
kill -9 端口号
5.使用基本命令检查kafka是否搭建成功
创建一个名称为test的Topic,1个分区,并且复制因子为1
bin/kafka-topics.sh --zookeeper cache01:2181,cache02:2181,cache03:2181 --replication-factor 1 --partitions 1 --create --topic test01
删除一个名称为test的Topic,但不是马上,先标记,一段时间后才会删除
bin/kafka-topics.sh --delete --zookeeper cache01:2181,cache02:2181,cache03:2181 --topic test
你看到的“ Topic test is already marked for deletion.”是正常的。Kafka删除topic的过程实际上
是异步的:命令行仅仅是提交一个删除申请给到controller,并标记该topic为“待删除”状态。其实在Kafka服务器端
真正的删除逻辑应该已经开启,正常情况下您需要多等待一段时间topic自然会被成功删除。
查看创建的Topic
bin/kafka-topics.sh --describe --zookeeper cache01:2181,cache02:2181,cache03:2181 --topic test01
查看所有的Topic
bin/kafka-topics.sh --list --zookeeper cache01:2181,cache02:2181,cache03:2181
启动Producer ,并向我们上面创建的名称为test的Topic中生产消息,
bin/kafka-console-producer.sh --broker-list cache01:9092,cache02:9092,cache03:9092 --topic test01
启动Consumer ,并订阅我们上面创建的名称为test的Topic中生产的消息
bin/kafka-console-consumer.sh --zookeeper cache01:2181,cache02:2181,cache03:2181 --from-beginning --topic test01
1. kafka 启动的时候报错了,生成了一个类似这样的日志文件hs_err_pid4301.log
主要原因原因:kafka启动脚本kafka-server-start.sh中指定了kafka启动时需要的最小内存,默认为1G
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
虚拟机分配的虚拟内存在1G以下时就会出现该错误
解决:
vi /usr/local/kafka/bin/kafka-server-start.sh
将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
改为export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
2. kafka 启动的时候报错了:
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at kafka.log.SkimpyOffsetMap.<init>(OffsetMap.scala:45)
at kafka.log.LogCleaner$CleanerThread.<init>(LogCleaner.scala:222)
at kafka.log.LogCleaner.$anonfun$cleaners$1(LogCleaner.scala:108)
at kafka.log.LogCleaner.$anonfun$cleaners$1$adapted(LogCleaner.scala:108)
at kafka.log.LogCleaner$$Lambda$143/783191662.apply(Unknown Source)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
at scala.collection.TraversableLike$$Lambda$12/2074185499.apply(Unknown Source)
at scala.collection.immutable.Range.foreach(Range.scala:156)
at scala.collection.TraversableLike.map(TraversableLike.scala:234)
at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at kafka.log.LogCleaner.<init>(LogCleaner.scala:108)
原因:kafka启动时分配的内存过小导致
解决方法:同样脚本kafka-server-start.sh中的最小启动内存,设置为较大值
3. kafka producer报了一个错kafka org.apache.kafka.clients.producer.internals.ErrorLoggingCallback
原因:配置文件的advertised.listeners配置出错了
Apache官网
http://kafka.apache.org/downloads.html
2.解压重命名
tar -zxvf kafka_2.12-1.0.0.tgz
mv kafka_2.12-1.0.0 kafka
rm -rf kafka_2.12-1.0.0.tgz(删除包)
3.配置kafka
vi /usr/local/kafka/config/server.properties
broker.id:依次增长的整数,0、1、2,集群中Broker的唯一id
advertised.listeners=PLAINTEXT://cache03:9092 cache01 公网地址已经在/etc/hosts做好了映射,其他三台也一样
zookeeper.connect=cache01:2181,cache02:2181,cache03:2181
4.启动kafka和关闭命令
在三台机器上的kafka目录下,分别执行以下命令:
nohup bin/kafka-server-start.sh config/server.properties &
或者
bin/kafka-server-start.sh config/server.properties &
使用jps检查启动是否成功
关闭kafka
bin/kafka-server-stop.sh
或者
kill -9 端口号
5.使用基本命令检查kafka是否搭建成功
创建一个名称为test的Topic,1个分区,并且复制因子为1
bin/kafka-topics.sh --zookeeper cache01:2181,cache02:2181,cache03:2181 --replication-factor 1 --partitions 1 --create --topic test01
删除一个名称为test的Topic,但不是马上,先标记,一段时间后才会删除
bin/kafka-topics.sh --delete --zookeeper cache01:2181,cache02:2181,cache03:2181 --topic test
你看到的“ Topic test is already marked for deletion.”是正常的。Kafka删除topic的过程实际上
是异步的:命令行仅仅是提交一个删除申请给到controller,并标记该topic为“待删除”状态。其实在Kafka服务器端
真正的删除逻辑应该已经开启,正常情况下您需要多等待一段时间topic自然会被成功删除。
查看创建的Topic
bin/kafka-topics.sh --describe --zookeeper cache01:2181,cache02:2181,cache03:2181 --topic test01
查看所有的Topic
bin/kafka-topics.sh --list --zookeeper cache01:2181,cache02:2181,cache03:2181
启动Producer ,并向我们上面创建的名称为test的Topic中生产消息,
bin/kafka-console-producer.sh --broker-list cache01:9092,cache02:9092,cache03:9092 --topic test01
启动Consumer ,并订阅我们上面创建的名称为test的Topic中生产的消息
bin/kafka-console-consumer.sh --zookeeper cache01:2181,cache02:2181,cache03:2181 --from-beginning --topic test01
1. kafka 启动的时候报错了,生成了一个类似这样的日志文件hs_err_pid4301.log
主要原因原因:kafka启动脚本kafka-server-start.sh中指定了kafka启动时需要的最小内存,默认为1G
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
虚拟机分配的虚拟内存在1G以下时就会出现该错误
解决:
vi /usr/local/kafka/bin/kafka-server-start.sh
将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
改为export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
2. kafka 启动的时候报错了:
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at kafka.log.SkimpyOffsetMap.<init>(OffsetMap.scala:45)
at kafka.log.LogCleaner$CleanerThread.<init>(LogCleaner.scala:222)
at kafka.log.LogCleaner.$anonfun$cleaners$1(LogCleaner.scala:108)
at kafka.log.LogCleaner.$anonfun$cleaners$1$adapted(LogCleaner.scala:108)
at kafka.log.LogCleaner$$Lambda$143/783191662.apply(Unknown Source)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
at scala.collection.TraversableLike$$Lambda$12/2074185499.apply(Unknown Source)
at scala.collection.immutable.Range.foreach(Range.scala:156)
at scala.collection.TraversableLike.map(TraversableLike.scala:234)
at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at kafka.log.LogCleaner.<init>(LogCleaner.scala:108)
原因:kafka启动时分配的内存过小导致
解决方法:同样脚本kafka-server-start.sh中的最小启动内存,设置为较大值
3. kafka producer报了一个错kafka org.apache.kafka.clients.producer.internals.ErrorLoggingCallback
原因:配置文件的advertised.listeners配置出错了