Kafka 1.x快速入门

Posted 玩大数据的snoopy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka 1.x快速入门相关的知识,希望对你有一定的参考价值。

本博客文章如无特别说明,均为原创!转载请注明出处:Big data enthusiast(http://www.lubinsu.com/)

参考文档:http://kafka.apache.org/10/documentation.html#quickstart

这个章节我们将从Kafka集群的安装部署讲起,并测试topic的创建,消息的发布订阅等功能。希望对你有所帮助。

废话不多说,我们开始

  • 单机模式的安装

  1. 下载Kafka组件

[hadoop@master kafka]$ wget http://mirrors.hust.edu.cn/apache/kafka/1.0.1/kafka_2.11-1.0.1.tgz

–2018-05-08 11:39:56– http://mirrors.hust.edu.cn/apache/kafka/1.0.1/kafka_2.11-1.0.1.tgz

Resolving mirrors.hust.edu.cn… 202.114.18.160

Connecting to mirrors.hust.edu.cn|202.114.18.160|:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 49766096 (47M) [application/octet-stream]

Saving to: “kafka_2.11-1.0.1.tgz”

  1. 下载安装包并解压,配置zookeeper节点

因为Kafka用到了Zookeeper,这里需要先安装zookeeper集群:

[hadoop@master zookeeper]$ wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

–2018-05-08 11:47:33– http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

Resolving mirrors.hust.edu.cn… 202.114.18.160

Connecting to mirrors.hust.edu.cn|202.114.18.160|:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 35042811 (33M) [application/octet-stream]

Saving to: “zookeeper-3.4.10.tar.gz”

解压并修改zookeeper配置文件:

[hadoop@master zookeeper-3.4.10]$ tar -xzf zookeeper-3.4.10.tar.gz

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/home/hadoop/zookeeper/zookeeper-3.4.10/tmp

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to “0” to disable auto purge feature

#autopurge.purgeInterval=1

  1. 启动Kafka

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-server-start.sh config/server.properties

  1. 创建topic

现在我们创建一个名字为test的topic

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test

Created topic “test”.

然后检查看zookeeper中是否已经有了该topic

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-topics.sh –list –zookeeper localhost:2181

test

  1. 发送测试消息

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-console-producer.sh –broker-list localhost:9092 –topic test

>this is a message

>this is another message

  1. 接收消息

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic test –from-beginning

this is a message

this is another message

至此单机模式的kafka已经可以正常收发消息了,但是在生产环境中我们肯定是需要搭建分布式集群的,下面我们来看下集群模式的安装。

  • 集群模式的安装

在Kafka 1.x中我们发现已经将zookeeper集成进去了,如果直接是用kafka自带的zookeeper,那么部署起来更方便了。

  1. 修改zookeeper配置文件

[hadoop@master kafka_2.11-1.0.1]$ vim config/zookeeper.properties

dataDir=/home/hadoop/kafka/kafka_2.11-1.0.1/zData

dataLogDir=/home/hadoop/kafka/kafka_2.11-1.0.1/zLog

# the port at which the clients will connect

clientPort=2181

# disable the per-ip limit on the number of connections since this is a non-production config

maxClientCnxns=0

initLimit=5

syncLimit=2

server.1=192.168.0.181:2888:3888

server.2=192.168.0.182:2888:3888

server.3=192.168.0.183:2888:3888

添加myid(另外两台服务器的id必须不一样,myid是zookeeper互相识别用的id):

echo “1” > /home/hadoop/kafka/kafka_2.11-1.0.1/zData/myid

  1. 修改kafka配置文件

vim config/server.properties

broker.id=0(另外两台服务器的id必须不一样)

listeners=PLAINTEXT://:9092

log.dirs=/home/hadoop/kafka/kafka_2.11-1.0.1/log

  1. 复制kafka整个安装目录到集群的各个节点

scp -r kafka_2.11-1.0.1 slaver01:/home/hadoop/kafka/

scp -r kafka_2.11-1.0.1 slaver02:/home/hadoop/kafka/

  1. 分别在其他节点上修改zookeeper的myid和kafka的broker.id

echo “2” > /home/hadoop/kafka/kafka_2.11-1.0.1/zData/myid

echo “3” > /home/hadoop/kafka/kafka_2.11-1.0.1/zData/myid

vim config/server.properties

broker.id=1

broker.id=2

  1. 启动集群

启动各个节点的zookeeper:

nohup bin/zookeeper-server-start.sh config/zookeeper.properties >> zoo.out 2>&1 &

启动各个节点的kafka:

nohup bin/kafka-server-start.sh config/server.properties >> kafka.out 2>&1 &

  1. 创建一个多副本的topic

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 3 –partitions 1 –topic my-replicated-topic

Created topic “my-replicated-topic”.

然后我们通过以下命令可以发现该topic下的各个副本均匀分布到了各个节点broker上

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-topics.sh –describe –zookeeper localhost:2181 –topic my-replicated-topic

Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:

Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0

  1. 发送接收消息测试

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-console-producer.sh –broker-list localhost:9092 –topic my-replicated-topic

>message 1

>message 2

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –from-beginning –topic my-replicated-topic

message 1

message 2

  1. 高可用测试

我们kill掉leader所在的broker节点

kill -9 19681

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-topics.sh –describe –zookeeper localhost:2181 –topic my-replicated-topic

Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:

Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0

可以发现leader已经变成2了

  1. 使用Kafka Conect导入导出数据

echo -e “foo\nbar” > test.txt

启动连接:

bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

检查接收到的消息:

[hadoop@master kafka_2.11-1.0.1]$ tail -f test.sink.txt

foo

bar

通过consumer接收消息:

[hadoop@master kafka_2.11-1.0.1]$ bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic connect-test –from-beginning

{“schema”:{“type”:”string”,”optional”:false},”payload”:”foo”}

{“schema”:{“type”:”string”,”optional”:false},”payload”:”bar”}

支持Kafka 1.x安装使用已经基本讲完了,个人能力有限,难免有所纰漏,欢迎大家指正。


以上是关于Kafka 1.x快速入门的主要内容,如果未能解决你的问题,请参考以下文章

Kafka快速入门

Kafka快速入门

Kafka快速入门——Python客户端

Kafka快速入门——Kafka架构

Kafka快速入门——Kafka架构

Kafka快速入门——Kafka管理