文档章节

kafka集群搭建

 张欢19933
发布于 2016/01/22 12:52
字数 555
阅读 625
收藏 10

版本和集群环境

kafka版本:2.11

集群环境:两台虚拟机(我这里是一台当producer,一台当consumer)

官网:http://kafka.apache.org/
官方文档:http://kafka.apache.org/documentation.html#quickstart

参考:https://kafka.apache.org/08/quickstart.html

基础配置:已安装jdk和zookeeper(zookeeper安装参照http://blog.csdn.net/unix21/article/details/18990123

Step 1:下载kafka

到官网上下载稳定版本的kafka,解压

tar -zxvf kafka_2.11-0.8.2.2.tgz

Step 2:修改配置文件

修改config下的server.properties就可以了。需要配置的属性有:broker.id(标示当前server在集群中的id,从0开始),port,host.name(当前的server host name),zookeeper.connect(连接的zookeeper集群),log.dirs(log的存储目录,记得对应的去建立这个目录)等,其他的一些配置可以看相应的注释:(截图不全,仅供参考)

Step 3:把配置好的kafka复制到其它server上

scp -r kafka_2.11-0.8.2.2 slave1:~

Step 4:修改每台server的配置文件,主要是broker.id 和host.name

Step 5:先启动zookeeper集群,再启动kafka集群

启动zookeeper集群:./zkServer.sh start

在每台server上启动kafka:./kafka-server-start.sh ../config/server.properties

Step 6:创建topic

./kafka-topics.sh --zookeeper master:2181 --topic test --replication-factor 2 --partitions 3 --create

Step 7:查看topic

查看所有topic:./kafka-topics.sh --list --zookeeper master:2181

查看一个topic详情:./kafka-topics.sh --describe --zookeeper master:2181 --topic test

partiton:partion id从0开始
leader:当前负责读写的lead broker id
relicas:当前partition的所有replication broker  list
isr:relicas的子集,只包含出于活动状态的broker

Step 8:创建producer

./kafka-console-producer.sh --broker-list master:9092,slave1:9092 --topic test

This is a message

注意,如果上述命令不能发送接收消息,报一下错误:

ERROR Failed to collate messages by topic, partition due to: fetching topic metadata for topics [Set(test)] from broker [ArrayBuffer(id:1,host:slave1,port:9092, id:0,host:master,port:9092)] failed (kafka.producer.async.DefaultEventHandler)

则说明broker的host.name属性配置有问题,可以用ip或者是hosts里配好的域名

Step 9:创建consumer

./kafka-console-consumer.sh  --zookeeper master:2181 --from-beginning --topic test

就可以看到消息了。

如果要最新的数据,可以不带--from-beginning参数即可。
最后测试容错能力:
‍如果broker 0作为leader运行,现在我们杀掉broker 0,在查看topic的详细信息,发现leader都是broker 1了,并且consumer依然可以消费消息,

 

© 著作权归作者所有

共有 人打赏支持
粉丝 33
博文 460
码字总数 226276
作品 0
海淀
加载中

评论(5)

momisabuilder
momisabuilder
kafka依赖于zookeeper 所以是必须的。
张欢19933

引用来自“ran_ruan”的评论

你好,请问为什么要先启动zookeeper集群再启动kafka集群?
我有10台服务器组成的kafka集群,那就意味着我要先启动10台服务器上的zookeeper,这样感觉不太效率。

引用来自“张欢19933”的评论

10台机器不一定每台都要安装zookeeper,zookeeper集群三台就够了,producer要向zookeeper进行注册

引用来自“ran_ruan”的评论

谢谢你的回复,我只是举例子说明我的不方便,我的问题是:先启动zookeeper集群是不是必须的?
是必须的
r
ran_ruan

引用来自“ran_ruan”的评论

你好,请问为什么要先启动zookeeper集群再启动kafka集群?
我有10台服务器组成的kafka集群,那就意味着我要先启动10台服务器上的zookeeper,这样感觉不太效率。

引用来自“张欢19933”的评论

10台机器不一定每台都要安装zookeeper,zookeeper集群三台就够了,producer要向zookeeper进行注册
谢谢你的回复,我只是举例子说明我的不方便,我的问题是:先启动zookeeper集群是不是必须的?
张欢19933

引用来自“ran_ruan”的评论

你好,请问为什么要先启动zookeeper集群再启动kafka集群?
我有10台服务器组成的kafka集群,那就意味着我要先启动10台服务器上的zookeeper,这样感觉不太效率。
10台机器不一定每台都要安装zookeeper,zookeeper集群三台就够了,producer要向zookeeper进行注册
r
ran_ruan
你好,请问为什么要先启动zookeeper集群再启动kafka集群?
我有10台服务器组成的kafka集群,那就意味着我要先启动10台服务器上的zookeeper,这样感觉不太效率。
kafka_2.11-0.11.0.1集群搭建

本文搭建一个三节点的Kafka集群。该集群有三个Zookeeper、三个Kafka Broker。 一、准备工作 解压kafka安装包,获得如下目录: Kafka目录结构: 展示如下内容: 二、搭建Zookeeper集群 将目录...

周立_itmuch
2017/11/15
0
0
简单搭建 Apache Kafka 分布式消息系统

早先都是用的基于 JMS 规范的消息系统, 像 ActiveMQ, IBM MQSeries 等. 随着互联网的发展, 大约是要适应当今大数据, 高可用性, 高效的需求, 于是诞生了 Apache Kafka 这一新时代的分布式消息...

YanbinQ
2016/10/18
20
0
基于Docker搭建分布式消息队列Kafka

本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示。本例搭建的示例包含...

半夜菊花茶
2017/11/23
0
0
集群四部曲(四):完美的Kafka集群搭建

之前写过一篇关于Kafka消息的发布-订阅,只不过是基于一台服务器,不够全面,下面我要说下Kafka集群环境的搭建和消息的发布-订阅,希望大家喜欢。下面的集群搭建是基于单机部署的环境,所以大...

海岸线的曙光
03/20
0
0
大数据storm应该怎么学?

帮助大家在业务上面快速使用Storm,相信学完之后可以直接面对生成环境的问题,解决问题,优化结构。项目使用Storm0.9.1+Kafka0.8.1.1+Zookeeper锁+Memcached+mysql架构,从集群搭建到集群连通...

让往事随风
2016/04/19
50
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 小心着凉 @红薯

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:5.33起,其声呜呜然,如怨如慕,如泣如诉。余音袅袅,不绝如缕。分享Arch Enemy的单曲《Bridge Of Destiny (2009)》 《Bridge Of...

小小编辑
今天
250
4
what f,,

anlve
今天
9
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
15
0
现场看路演了!

HiBlock
昨天
23
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部