【Kafka入门】搭建Kafka本地环境
本博文介绍如何一步步搭建起Kafka本地环境。
下载Kafka 0.9.0.0 并配置软链接
下载好后,放入电脑本地安装目录,mac下我放在/usr/local下,解压Kafka。
tar -xzf kafka_2.-0.9.0.0.tgz
然后建立一个当前版本的kafka的软链接,这样在配置的时候系统环境配置的时候不需要写版本号,也有利于以后的版本更新。
ln -s kafka_2.-0.9.0.0 kafka
接着cd kafka进入主目录。
启动Kafka Server
在启动前,需要安装并配置Zookeeper,不过在kafka中带有一个单节点示例的Zookeeper实例脚本包,所以我们也可以先不安装配置Zookeeper,在启动Kafka Server前,我们先启动Zookeeper:
bin/zookeeper-server-start.sh config/zookeeper.properties
在Zookeeper成功启动以后,就可以启动Kafka Server了:
bin/kafka-server-start.sh config/server.properties
创建topic话题
通过下面的脚本,我们创建了一个名为test的topic话题,该话题分区数为1,冗余份数为1。然后通过list展示当前话题,会列出test。
bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor --partitions --topic test
bin/kafka-topics.sh --list --zookeeper localhost:
启动生产者Producer和消费者Consumer
通过以下脚本启动一个Producer,然后可以输入生产的消息:
bin/kafka-console-producer.sh --broker-list localhost: --topic test this is a test of producer
通过下面的命令启动消费者Consumer来消费,然后会打印出上述输入的消息:
bin/kafka-console-consumer.sh --zookeeper localhost: --topic test --from-beginning
this is a test of producer
如果上述两个命令,在不同的终端启动,这时候你在生产者终端输入消息并回车,消费者端可以看到。
启动多broker的集群
由于Kafka是分布式的消息系统,目前我们只是启动了一个Kafka Server,并看不到分布式的效果,下面在本地启动多个Kafka Server,首先我们需要将server的配置文件复制两份,因为每个Kafka服务启动都是依赖配置文件,在配置文件中设置了诸如服务启动端口等信息。
cp config/server.properties config/server-.properties
cp config/server.properties config/server-.properties
修改上述复制出来的配置文件,由于默认服务启动在9092端口,所以后续两个server启动在9093和9094;然后默认的server的broker id为0,由于id是borker的唯一标识,所以后续的id依次为1和2.默认的几个属性如下:
broker.id= ############################# Socket Server Settings ############################# listeners=PLAINTEXT://:9092 # The port the socket server listens on
#port= # A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs
server1和server2的关于这几个属性的配置修改如下:
broker.id=
listeners=PLAINTEXT://:9093
port=
log.dirs=/tmp/kafka-logs- broker.id=
listeners=PLAINTEXT://:9094
port=
log.dirs=/tmp/kafka-logs-
然后依次启动两个broker的服务:
bin/kafka-server-start.sh config/server-.properties
bin/kafka-server-start.sh config/server-.properties
最好在多个终端启动,分别看看效果。
接着我们启动一个冗余数为3的topic并describe这个topic,效果显示如下:
bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor --partitions --topic my-replication-topic
Created topic "my-replication-topic".
bin/kafka-topics.sh --describe --zookeeper localhost: --topic my-replication-topic
Topic:my-replication-topic PartitionCount: ReplicationFactor: Configs:
Topic: my-replication-topic Partition: Leader: Replicas: ,, Isr: ,,
显示的内容一共是两行,第一行是对所有partition的总结,后续各行是每个partition的信息,由于我们这里只有一个partition,所以后续只有1行(也就是第二行)
- Leader:表示负责该partition所有读写的节点
- Replicas:所有拥有该partition 日志的备份数据的节点,不管这些节点是否是Leader或者活着。
- Isr:是所有同步Replicas集合。 这是Replicas列表的子集合,在这个集合中的都是活着并且赶上Leader进度的。
多broker的容错性测试
上面的my-replication-topic的Leader是0号服务,那我们尝试找到0号broker并将该进程杀死,脚本如下:
Lilis-MacBook-Pro:kafka_2.-0.9.0.0 lili$ ps | grep server.properties
ttys001 :28.51 /Library/Java/JavaVirtualMachines。。。
2686 ttys006 0:00.00 grep server.properties
Lilis-MacBook-Pro:kafka_2.10-0.9.0.0 lili$ kill -9 2366
再describe my-replication-topic的时候,发现leader已经变了,此时变成了2号broker,而且同步Replicas集合中也少了0号broker。
Lilis-MacBook-Pro:kafka_2.-0.9.0.0 lili$ bin/kafka-topics.sh --describe --zookeeper localhost: --topic my-replication-topic
Topic:my-replication-topic PartitionCount: ReplicationFactor: Configs:
Topic: my-replication-topic Partition: Leader: Replicas: ,, Isr: ,
Lilis-MacBook-Pro:kafka_2.-0.9.0.0 lili$
当然,再次启动消费者来消费消息,消息依然还是存在的。
bin/kafka-console-consumer.sh --zookeeper localhost: --from-beginning --topic my-replication-topic
【Kafka入门】搭建Kafka本地环境的更多相关文章
- Groovy轻松入门——搭建Groovy开发环境
摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/17/104391.html Groovy轻松入门--搭建Groovy开发环境 多日来,我发表了 ...
- kafka入门(2)- 环境部署
部署Zookeeper(单机/集群) 1.下载安装文件: http://mirror.bit.edu.cn/apache/zookeeper/ 2.解压文件(本文解压到 D:\zookeeper-3. ...
- OSX10.12搭建IPv6本地环境测试APP
前记 最近刚换了工作,生活终于又安定下来了,又可以更博了 正文 最近公司在上线APP(整体全是用JS去写的,就用了我原生的一个控制器),然后APP就去上线,就被苹果巴巴给拒了.通过阅读苹果回复的邮件, ...
- Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- 【Kafka入门】Kafka基础结构和知识
基本概念的总结 在基本的Kafka架构中,producer将消息发布到Kafka话题中,一个Kafka话题通常指消息的类别或者名称,Kafka话题被集群中一个充当Kafka server角色的 bro ...
- 【Kafka入门】Kafka入门第一篇:基础概念篇
Kafka简介 Kafka是一个消息系统服务框架,它以提交日志的形式存储消息,并且消息的存储是分布式的,为了提供并行性和容错保障,消息的存储是分区冗余形式存在的. Kafka的架构 Kafka中包含以 ...
- Linux入门搭建可视化桌面环境小合集virtual box centOS7.10
常用命令: 关联主机与虚拟机(方便文件共享): # sudo mount -t vboxsf share(主机文件夹名) /usr/share(虚拟机内自创) Linux shell进入root模式: ...
- maven 项目搭建,本地环境配置。
一,下载地址 http://maven.apache.org/download.cgi 英文不好的,可以在浏览器下载个翻译的插件,就好了,我用的是谷歌. 二, 解压文件,安装在自己制定的目录,注意安装 ...
- RAP开发入门-搭建RAP开发环境(一)
ps:补充 RAP (Remote Application Platform) 官网地址eclipse.org/rap 1.下载IDE http://www.eclipse.org/downloads ...
- spark本地环境的搭建到运行第一个spark程序
搭建spark本地环境 搭建Java环境 (1)到官网下载JDK 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8- ...
随机推荐
- Firefly 配置说明!
原地址:http://www.9miao.com/question-15-43023.html 下图一一个典型的config.json的配置:<ignore_js_op> "db ...
- python常用web框架性能测试(django,flask,bottle,tornado)
测了一下django.flask.bottle.tornado 框架本身最简单的性能.对django的性能完全无语了. django.flask.bottle 均使用gunicorn+gevent启动 ...
- C++开源跨平台类库集
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可 经典的C++库 STLport-------SGI STL库的跨平台 ...
- Zookeeper + Hadoop + Hbase部署备忘
网上类似的文章很多,本文只是记录下来备忘.本文分四大步骤: 准备工作.安装zookeeper.安装hadoop.安装hbase,下面分别详细介绍: 一 准备工作 1. 下载 zookeeper.had ...
- codeforces #310 div1 B
我们考虑n-1座桥每座桥需要的长度在一个区间[L,R]中 之后我们现在有m座桥,每个桥的长度为k 题意就是要求一个匹配方案 显然如果数据范围不大直接KM就可以了 可是20w的数据KM显然要T 所以我们 ...
- iOS如何把导航默认的返回按钮设置成“返回”
版权声明:本CSDN博客所有文章不更新,请关注标哥博客:http://www.henishuo.com/ - (void)addBackItemWithAction:(SEL)action { if ...
- AC题目简解-数据结构
A - Japan POJ 3067 要两条路有交叉,(x1,y1)(x2,y2)那么需要满足:(x1-x2)*(y1-y2)<0判断出这是求逆序的问题 树状数组求逆序,先通过自定义的比较器实 ...
- SQL查询性能分析之(not in)、(and not)、()、(!=)性能比较
SQL查询性能分析之(not in).(and not).().(!=)性能比较 SQL Server Bruce 3年前 (2013-01-08) 3284浏览 0评论 <:article c ...
- 在vs2010中mfc,C++的一些小经验
1 如果你最近才从vc6.0到vs2010,在vs2010中mfc可能遇见一个小问题,如果你添加或改天了窗口中的控件,运行程序缺没有发现其中的变化,这时候需要在debug选项中rebuild all一 ...
- bugumongo--ConnectToMongoDB
连接MongoDB 在能够对MongDB进行操作之前,需要使用BuguConnection连接到MongoDB数据库.代码如下: BuguConnection conn = BuguConnectio ...