第一步:安装启动kafka

官网链接:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.11-2.3.0.tgz

  1. 进入指定目录:cd /usr
  2. 创建文件夹:mkdir kafka
  3. 进入目录:cd kafka
  4. 下载:wget http://mirror.bit.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
  5. 解压:tar -zxvf kafka_2.12-2.3.0.tgz
  6. 进入kafka目录中:cd kafka_2.12-2.3.0

由于kafka依赖于zookeeper,所以我们必须先启动zk,这里我们可以直接使用跟kafka一起打包的一个脚本去启动一个应急的zk实例

  1. bin/zookeeper-server-start.sh config/zookeeper.properties
  2. 启动zk后,新开一个窗口,启动kafka服务器,bin/kafka-server-start.sh config/server.properties

到这里我们的kafka就已经安装并启动完毕了

第二步:创建Topic
  1. 创建一个没有备份只有一个分区的topic—test
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
  1. 创建完后,我们可以查看一下
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
test
第三步:创建生产者,发送消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>this is a message
>this is a another message
第四步:创建一个消费者
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message

到这一步,我们可以看到消息能够正常的发送跟接收了

第五步:创建多节点的集群

搭建一个三个节点的集群:

> cp config/server.properties config/server-1.properties
> cp config/server.properties config/server-2.properties

编辑我们拷贝好的这两个文件:

vim -r /usr/kafka/kafka_2.12-2.3.0/config/server-1.properties
# 加入下面这段配置
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1 vim -r /usr/kafka/kafka_2.12-2.3.0/config/server-2.properties
# 加入下面这段配置
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/tmp/kafka-logs-2

broker.id是节点在集群中的唯一标志,我们之所以去覆盖端口跟日志目录是因为我们在同一台机器上启动了多个节点。

我们之前已经启动了zk跟一个单节点的kafka,接下来我们启动另外两个节点

bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &

创建一个三个复制因子的topic

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic

现在我们已经有了一个三个节点的集群,但是我们怎么知道哪个节点在做什么呢?

bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-replicated-topic	

Topic:my-replicated-topic       PartitionCount:1        ReplicationFactor:3     Configs:segment.bytes=1073741824
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 0,1,2 Isr: 0,1,2

第一行总结了所有分区,每一行都给出了关于一个分区的信息。因为这个topic只有一个分区,所以只有一行。

  • “leader”是负责给定分区的所有读写的节点。每个节点都是分区中随机选择的一部分的领导者。
  • “replicas”是复制这个分区日志的节点列表,无论它们是主节点还是当前活动节点。
  • “isr”是一组“同步”副本。它是“replicas”的子集,并且是实时变动并被”leader“抓取的。

启动生产者发送消息:

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

启动消费者接收消息:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
send
send message

测试容错性:

集群当前的leader节点是1号节点,我们可以killi掉,然后再发送消息

ps -aux | grep server-1.properties
root 31132 0.0 0.0 112708 992 pts/4 S+ 21:50 0:00 grep --color=auto server-2.properties
root 64547 0.6 3.6 6867572 606204 pts/1 Sl+ 17:38 1:38
 kill -9 64547

此时查看我们的集群状态:

 bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-replicated-topic

 Topic:my-replicated-topic       PartitionCount:1        ReplicationFactor:3     Configs:segment.bytes=1073741824
Topic: my-replicated-topic Partition: 0 Leader: 0 Replicas: 0,1,2 Isr: 0,2

可以看到在在同步的节点列表中(”Isr“),1号节点已经挂掉了,但是这个时候我们还是能正常的收发消息

kafka学习 之 Quickstart的更多相关文章

  1. Kafka学习(一)-------- Quickstart

    参考官网:http://kafka.apache.org/quickstart 一.下载Kafka 官网下载地址 http://kafka.apache.org/downloads 截至2019年7月 ...

  2. Kafka学习之路

    一直在思考写一些什么东西作为2017年开篇博客.突然看到一篇<Kafka学习之路>的博文,觉得十分应景,于是决定搬来这“他山之石”.虽然对于Kafka博客我一向坚持原创,不过这篇来自Con ...

  3. kafka学习2:kafka集群安装与配置

    在前一篇:kafka学习1:kafka安装 中,我们安装了单机版的Kafka,而在实际应用中,不可能是单机版的应用,必定是以集群的方式出现.本篇介绍Kafka集群的安装过程: 一.准备工作 1.开通Z ...

  4. 【译】Kafka学习之路

    一直在思考写一些什么东西作为2017年开篇博客.突然看到一篇<Kafka学习之路>的博文,觉得十分应景,于是决定搬来这“他山之石”.虽然对于Kafka博客我一向坚持原创,不过这篇来自Con ...

  5. Kafka学习之(六)搭建kafka集群

    想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ...

  6. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  7. Kafka学习-简介

      Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.S ...

  8. Kafka学习-入门

    在上一篇kafka简介的基础之上,本篇主要介绍如何快速的运行kafka. 在进行如下配置前,首先要启动Zookeeper. 配置单机kafka 1.进入kafka解压目录 2.启动kafka bin\ ...

  9. [Big Data - Kafka] kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

随机推荐

  1. L6循环神经网络

    循环神经网络 本节介绍循环神经网络,下图展示了如何基于循环神经网络实现语言模型.我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符.循环神经网络引入一个隐藏变量HHH,用HtH_{t}H ...

  2. A - Free DIY Tour HDU - 1224

    题目大意:每一个城市都有一定的魅力值,然后有一个有向图,根据这个有向图从1到n+1所获得的魅力的最大值,并输出路径(要求只能从编号娇小的城市到编号较大的城市). 题解:很容易想到最短路+路径纪录.但是 ...

  3. Pytorch实现MNIST手写数字识别

    Pytorch是热门的深度学习框架之一,通过经典的MNIST 数据集进行快速的pytorch入门. 导入库 from torchvision.datasets import MNIST from to ...

  4. css 样式中 margin padding和top类定位的区别

    1 margin margin 是外边距的意思,是边框到外部另一元素之间的距离,允许使用负值 语法结构: margin:5px auto;                  意思上下为5,左右平均居中 ...

  5. 用Python打造电脑人脸屏幕解锁神器附带接头暗号!

    前言 最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本人的话需要回答电脑说的暗语,答对了才会解锁并且有三次机会.如果都没答对就会发送邮件给我,通知有 ...

  6. LeetCode 面试题51. 数组中的逆序对

    面试题51. 数组中的逆序对 题目来源:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/ 题目 在数组中的两个数字,如果 ...

  7. 8个超好用的Python内置函数,提升效率必备(小白必看)

    python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率. 这次来梳理下8个好用的python内置函数. 1.set() 当需要对一个列表进行去重操作的 ...

  8. JVM致命错误日志详解

    目录 文件描述 文件位置 文件头 错误信息记录 JVM运行信息 崩溃原因 错误信息 线程描述 线程信息 信号信息 计数器信息 机器指令 内存映射信息 线程堆栈 其他信息 进程描述 线程列表 虚拟机状态 ...

  9. 详解数组分段和最大值最小问题(最小m段和问题)

    数组分段和最大值最小问题(最小m段和问题) 问题描述 给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列.如何分割才能使这m段子序列的和的最大值达到最小? 清洁工:假 ...

  10. 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

    有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...