Hadoop(九)kafka配置

Kafka是一个分布式流媒体平台,Kafka作为一个集群运行在一台或多台可以跨越多个数据中心的服务器上。
Kafka集群在称为主题的类别中存储记录流。每个记录由一个键,一个值和一个时间戳组成。

第1步:下载代码

下载地址 https://www.apache.org/dyn/closer.cgi?path=/kafka/1.1.0/kafka_2.11-1.1.0.tgz

下载完后上传到linux服务器总解压

 tar -zxvf kafka_2.11-1.1.0.tgz
 cd kafka_2.11-1.1.0

第二步 启动服务器

Kafka使用ZooKeeper,因此如果没有启动ZooKeeper服务器,需要首先启动ZooKeeper服务器。可以使用与kafka打包在一起的便捷脚本来获得快速且简单的单节点ZooKeeper实例。

启动zookeeper

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

启动启动 Kafka

bin/kafka-server-start.sh -daemon config/server.properties

加上-daemon 可以让他们去后台运行

第3步:创建一个主题

 bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

运行list topic命令,我们现在可以看到该主题

> bin/kafka-topics.sh --list --zookeeper localhost:2181
test

可以看到输出 test

第4步:发送一些消息(生产数据)

Kafka带有一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。默认情况下,每行将作为单独的消息发送。

运行生产者,然后在控制台中输入几条消息发送到服务器。

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
hello kafka

第5步:启动消费者

kafka也有一个命令行消费者,将消息转储到标准输出。
另外启动⼀个终端消费数据

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
hello kafka

第6步:设置多代理群集

上面的操作只是在同一台机器上运行,我们一般情况下都是使用分布式的在多台机器上设置。这里使用3台机器 master , slave , slave2

把master中kafka的解压文件分别复制道slave 和 slave2节点中。

scp -r kafka_2.11-1.1.0 slave:/home/chs/software
scp -r kafka_2.11-1.1.0 slave2:/home/chs/software

配置slave和slave2中kafka下的config/server.properties文件
进入config文件夹中 vim server.properties

slave节点上

broker.id=1
zookeeper.connect=master:2181

slave2节点上

broker.id=2
zookeeper.connect=master:2181

各节点分别启动 Zookeeper

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

各节点分别启动kafka

bin/kafka-server-start.sh -daemon config/server.properties

创建一个新的主题:

 bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

跟上面一样产生一些新的数据给这个新主题

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic
...
my test message 1
my test message 2

另外启动⼀个终端消费数据

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
...
my test message 1
my test message 2

OK测试成功,现在我们是在一个集群上布置了kafka ,我们该怎么知道每个broker 在做什么呢?运行下面的命令

[root@master kafka_2.11-1.1.0]# 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: 2,0,1 Isr: 1,2
[root@master kafka_2.11-1.1.0]# 

上面的输出中
“leader” : 负责给定分区的所有读写操作的节点。这个领导者是随机选择出来的。上面的例子中就选择了2当做leader,也就是slave2中的kafka。

“replicas” : 是复制此分区的日志的节点列表。

“isr” : 是一组“同步”副本。这是复制品列表的子集,目前活着并被引导到leader身边。

如果我们在最开始创建的test主题上运行这个命令

[root@master kafka_2.11-1.1.0]# bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
Topic:test  PartitionCount:1    ReplicationFactor:1 Configs:
    Topic: test Partition: 0    Leader: 0   Replicas: 0 Isr: 0
[root@master kafka_2.11-1.1.0]#   

因为那时候还没有配置集群,他的副本数就是0

下面来看一下kafka的容错机制
上面的集群中我们可以看到leader是2也就是slave2中的kafka。下面我们去slave2中把kafka的进程杀掉

[root@slave2 kafka_2.11-1.1.0]# jps
2493 Kafka
2542 Jps
2175 QuorumPeerMain
[root@slave2 kafka_2.11-1.1.0]# kill -9 2493

这个时候master中会看到一些日志

2018-06-07 17:36:11,807] WARN [Consumer clientId=consumer-1, groupId=console-consumer-831] Connection to node 2 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2018-06-07 17:36:11,912] WARN [Consumer clientId=consumer-1, groupId=console-consumer-831] Connection to node 2 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2018-06-07 17:36:12,150] WARN [Consumer clientId=consumer-1, groupId=console-consumer-831] Connection to node 2 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

意思是连不上节点2了
这个时候在查看其属性描述

[root@master kafka_2.11-1.1.0]# 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: 0   Replicas: 2,0,1 Isr: 0,1
[root@master kafka_2.11-1.1.0]# 

leader变成了0,并且节点2不在同步副本中。

kafka的简单配置就到这啦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值