【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- ...
随机推荐
- python脚本实例002- 利用requests库实现应用登录
#! /usr/bin/python # coding:utf-8 #导入requests库 import requests #获取会话 s = requests.session() #创建登录数据 ...
- 在vs2010中mfc,C++的一些小经验
1 如果你最近才从vc6.0到vs2010,在vs2010中mfc可能遇见一个小问题,如果你添加或改天了窗口中的控件,运行程序缺没有发现其中的变化,这时候需要在debug选项中rebuild all一 ...
- 【Lucene3.6.2入门系列】第04节_中文分词器
package com.jadyer.lucene; import java.io.IOException; import java.io.StringReader; import org.apach ...
- php简陋版实现微信公众号主动推送消息
推荐一个网站www.itziy.com csdn免积分下载器.pudn免积分下载器.51cto免积分下载器www.verypan.com 百度网盘搜索引擎www.94cto.com 编程相关视频教程. ...
- Android中Input型输入设备驱动原理分析<一>
话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反正这个是没变的,在android的底层开发中对于Linux的基本驱动程序设计还是没变的,当然Android底层机制也 ...
- linux0.11文件分析
在kernel包中有几个重要的文件夹和文件,他们各司其职,处理着有关内核的一些功能操作.其中文件夹有三个:blk_drv(块设备驱动),chr_drv(字符设备驱动),math(数学协处理器) 文件 ...
- bzoj1857
三分的入门题,如果从AB上一点走到D是一个单峰函数从AB开始向CD传送带走的那个点也是一个单峰函数显然三分套三分 const eps=1e-5; var ax,ay,bx,by,cx,cy,dx,dy ...
- bzoj3156
斜率优化dp,比较裸 注意int64的运算 ..] of int64; i,n,h,t:longint; x,y,z:int64; function g(j,k:int64):doub ...
- UVa 1572 (拓扑排序) Self-Assembly
题意: 有n种正放形,每种正方形的数量可视为无限多.已知边与边之间的结合规则,而且正方形可以任意旋转和反转,问这n中正方形是否可以拼成无限大的图案. 分析: 首先因为可以旋转和反转,所以可以保证在拼接 ...
- UVa 11971 (概率) Polygon
题意: 有一根绳子,在上面随机选取k个切点,将其切成k+1段,求这些线段能够成k+1边形的概率. 分析: 要构成k+1边形,必须最长的线段小于其他k个线段之和才行. 紫书上给出了一种解法,但是感觉理解 ...