【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- ...
随机推荐
- PAT-乙级-1012. 数字分类 (20)
1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...
- WCF 绑定的选择
选自<WCF服务编程中文版> 第一章 WCF基础 绑定服务之间的通信方式是多种多样的,有多种可能的通信模式.包括:同步的请求/ 应答(Request/Reply)消息,或者异步的“即发即弃 ...
- hdu 4712
看了大牛的解法 第一次知道可以产生随机数解题 在计算hamming距离时用了位运算 很简便 /************************************************* ...
- KafkaSpout: PartitionManager的行为分析
KafkaSpout的核心逻辑都是由PartitionManager来实现的. 但是这个类实现时候需要考虑的东西有些多,0.92至0.93,至当前(2015.3.14)的master一直在变化.在这里 ...
- hdu 3032 Nim or not Nim? 博弈论
这题是Lasker’s Nim. Clearly the Sprague-Grundy function for the one-pile game satisfies g(0) = 0 and g( ...
- Android 文字链接 文字点击时的背景颜色
案例:实现“忘记密码?”这个链接,并且在按下的时候改变颜色. 方法一:这个可以用TextView实现: 主界面main.xml: <?xml version="1.0" en ...
- 组策略限制添加用户作为服务登录导致ITAtomcat服务无法启动(log on as a service)
[故障类型]:ITA tomcat服务器无法启动. [关 键 词]:Logon as a service 作为服务登录 tomcat loggeter [适用版本]:FusionCloud So ...
- IntelliJ IDEA 添加jar包的三种方式
一.直接复制:(不推荐)方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下.
- 支付标记化(Tokenization)技术
道客巴巴->支付标记化(Tokenization)技术介绍 百度文库->中国银联支付标记化技术指引 NFC产业网->银联技术专家解答支付标记化Token技术 百度搜索->Tok ...
- WinAPI——SetWindowsHookEx设置钩子说明
提示: 如果要设置系统级钩子, 钩子函数必须在 DLL 中. SetWindowsHookEx( idHook: Integer; {钩子类型} lpfn: TFNHookProc; {函数 ...