阅读目录

  • 一、环境配置
  • 二、操作过程
  • Kafka介绍

安装及部署

回到顶部

一、环境配置

  • 操作系统:Cent OS 7

  • Kafka版本:0.9.0.0

  • Kafka官网下载:请点击

  • JDK版本:1.7.0_51

  • SSH Secure Shell版本:XShell 5

回到顶部

二、操作过程

1、下载Kafka并解压

  • 下载:

curl -L -O http://mirrors.cnnic.cn/apache/kafka/0.9.0.0/kafka_2.10-0.9.0.0.tgz 
  • 解压:

tar zxvf kafka_2.10-0.9.0.0.tgz 

2、Kafka目录介绍

  • /bin 操作kafka的可执行脚本,还包含windows下脚本

  • /config 配置文件所在目录

  • /libs 依赖库目录

  • /logs 日志数据目录,目录kafka把server端日志分为5种类型,分为:server,request,state,log-cleaner,controller

3、配置

  • 配置zookeeper

请参考zookeeper

  • 进入kafka安装工程根目录编辑config/server.properties

kafka最为重要三个配置依次为:broker.id、log.dir、zookeeper.connect,kafka server端config/server.properties参数说明和解释如下:

server.properties配置属性说明

4、启动Kafka

  • 启动

进入kafka目录,敲入命令 bin/kafka-server-start.sh config/server.properties &
  • 检测2181与9092端口

netstat -tunlp|egrep "(2181|9092)"
tcp        0      0 :::2181                     :::*                        LISTEN      19787/java
tcp        0      0 :::9092                     :::*                        LISTEN      28094/java 

说明:

Kafka的进程ID为28094,占用端口为9092

QuorumPeerMain为对应的zookeeper实例,进程ID为19787,在2181端口监听

5、单机连通性测试

启动2个XSHELL客户端,一个用于生产者发送消息,一个用于消费者接受消息。

  • 运行producer,随机敲入几个字符,相当于把这个敲入的字符消息发送给队列。

bin/kafka-console-producer.sh --broker-list 192.168.153.118:9092 --topic test

说明:早版本的Kafka,–broker-list 192.168.1.181:9092需改为–zookeeper 192.168.1.181:2181

  • 运行consumer,可以看到刚才发送的消息列表。

bin/kafka-console-consumer.sh --zookeeper 192.168.153.118:2181 --topic test --from-beginning  
  • 注意:

producer,指定的Socket(192.168.1.181+9092),说明生产者的消息要发往kafka,也即是broker

consumer, 指定的Socket(192.168.1.181+2181),说明消费者的消息来自zookeeper(协调转发)

上面的只是一个单个的broker,下面我们来实验一个多broker的集群。

6、搭建一个多个broker的伪集群

刚才只是启动了单个broker,现在启动有3个broker组成的集群,这些broker节点也都是在本机上。

(1)为每一个broker提供配置文件

我们先看看config/server0.properties配置信息:

broker.id=0
listeners=PLAINTEXT://:9092
port=9092
host.name=192.168.1.181
num.network.threads=4
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=5
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=192.168.1.181:2181
zookeeper.connection.timeout.ms=6000
queued.max.requests =500
log.cleanup.policy = delete

  • 说明:

broker.id为集群中唯一的标注一个节点,因为在同一个机器上,所以必须指定不同的端口和日志文件,避免数据被覆盖。

在上面单个broker的实验中,为什么kafka的端口为9092,这里可以看得很清楚。

kafka cluster怎么同zookeeper交互的,配置信息中也有体现。

那么下面,我们仿照上面的配置文件,提供2个broker的配置文件:

  • server1.properties:

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

  • server2.properties:

broker.id=2
listeners=PLAINTEXT://:9094
port=9094
host.name=192.168.1.181
num.network.threads=4
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs2
num.partitions=5
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=192.168.1.181:2181
zookeeper.connection.timeout.ms=6000
queued.max.requests =500
log.cleanup.policy = delete

(2)启动所有的broker

命令如下:

bin/kafka-server-start.sh config/server0.properties &   #启动broker0
bin/kafka-server-start.sh config/server1.properties & #启动broker1
bin/kafka-server-start.sh config/server2.properties & #启动broker2

查看2181、9092、9093、9094端口

netstat -tunlp|egrep "(2181|9092|9093|9094)"
tcp        0      0 :::9093                     :::*                        LISTEN      29725/java
tcp        0      0 :::2181                     :::*                        LISTEN      19787/java
tcp        0      0 :::9094                     :::*                        LISTEN      29800/java
tcp        0      0 :::9092                     :::*                        LISTEN      29572/java  

一个zookeeper在2181端口上监听,3个kafka cluster(broker)分别在端口9092,9093,9094监听。

(3)创建topic
bin/kafka-topics.sh --create --topic topic_1 --partitions 1 --replication-factor 3  \--zookeeper localhost:2181
bin/kafka-topics.sh --create --topic topic_2 --partitions 1 --replication-factor 3  \--zookeeper localhost:2181
bin/kafka-topics.sh --create --topic topic_3 --partitions 1 --replication-factor 3  \--zookeeper localhost:2181

查看topic创建情况:

bin/kafka-topics.sh --list --zookeeper localhost:2181
test
topic_1
topic_2
topic_3
[root@atman081 kafka_2.10-0.9.0.0]# bin/kafka-topics.sh --describe --zookeeper localhost:2181
Topic:test  PartitionCount:1    ReplicationFactor:1 Configs:Topic: test Partition: 0    Leader: 0   Replicas: 0 Isr: 0
Topic:topic_1   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_1  Partition: 0    Leader: 2   Replicas: 2,1,0 Isr: 2,1,0
Topic:topic_2   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_2  Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0
Topic:topic_3   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_3  Partition: 0    Leader: 0   Replicas: 0,2,1 Isr: 0,2,1

上面的有些东西,也许还不太清楚,暂放,继续试验。需要注意的是topic_1的Leader=2

(4)模拟客户端发送,接受消息
  • 发送消息

bin/kafka-console-producer.sh --topic topic_1 --broker-list 192.168.1.181:9092,192.168.1.181:9093,192.168.1.181:9094
  • 接收消息

bin/kafka-console-consumer.sh --topic topic_1 --zookeeper 192.168.1.181:2181 --from-beginning

需要注意,此时producer将topic发布到了3个broker中,现在就有点分布式的概念了。

(5) kill some broker

kill broker(id=0)

首先,我们根据前面的配置,得到broker(id=0)应该在9092监听,这样就能确定它的PID了。

broker0没kill之前topic在kafka cluster中的情况

bin/kafka-topics.sh --describe --zookeeper localhost:2181
Topic:test  PartitionCount:1    ReplicationFactor:1 Configs:Topic: test Partition: 0    Leader: 0   Replicas: 0 Isr: 0
Topic:topic_1   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_1  Partition: 0    Leader: 2   Replicas: 2,1,0 Isr: 2,1,0
Topic:topic_2   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_2  Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0
Topic:topic_3   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_3  Partition: 0    Leader: 2   Replicas: 0,2,1 Isr: 2,1,0

kill之后,再观察,做下对比。很明显,主要变化在于Isr,以后再分析

bin/kafka-topics.sh --describe --zookeeper localhost:2181
Topic:test  PartitionCount:1    ReplicationFactor:1 Configs:Topic: test Partition: 0    Leader: -1  Replicas: 0 Isr:
Topic:topic_1   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_1  Partition: 0    Leader: 2   Replicas: 2,1,0 Isr: 2,1
Topic:topic_2   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_2  Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2
Topic:topic_3   PartitionCount:1    ReplicationFactor:3 Configs:Topic: topic_3  Partition: 0    Leader: 2   Replicas: 0,2,1 Isr: 2,1

测试下,发送消息,接受消息,是否收到影响。

  • 发送消息

bin/kafka-console-producer.sh --topic topic_1 --broker-list 192.168.1.181:9092,192.168.1.181:9093,192.168.1.181:9094
  • 接收消息

bin/kafka-console-consumer.sh --topic topic_1 --zookeeper 192.168.1.181:2181 --from-beginning

可见,kafka的分布式机制,容错能力还是挺好的~

回到顶部

Kafka介绍

1、kafka有什么?

  • producer 消息的生成者,即发布消息

  • consumer 消息的消费者,即订阅消息

  • broker Kafka以集群的方式运行,可以由一个或多个服务组成,服务即broker

  • zookeeper 协调转发

2、kafka的工作图

producers通过网络将消息发送到Kafka集群,集群向消费者提供消息

kafka对消息进行归纳,即topic,也就是说producer发布topic,consumer订阅topic

参考资料

apache kafka技术分享系列(目录索引)

Kafka深度解析,众人推荐,精彩好文!

转载于:https://www.cnblogs.com/zhengchunyuan/p/9882090.html

Kafka安装及部署相关推荐

  1. Kafka安装与部署

    大数据相关知识点 1. Kafka介绍 ​ Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能.持久化.多副本备份.横向扩展能力-- 分布式系统 ...

  2. Kafka 安装与部署(单机版)与kafkaDemo调试测试(包含JAVA Demo)

    部署需要的包: http://download.csdn.net/download/liangmaoxuan/10228805 1. kafka_2.10-0.10.2.0.tar 1.解压kafka ...

  3. kafka安装和部署

    OASCloud-MQ测试服务器-kafka History NO. Version Contents Time Persion Remarks 1 V1.0 Create documents 201 ...

  4. Kafka集群部署详细步骤(包含zookeeper安装步骤)

    Kafka集群部署 注意:如果jdk1.8和zookeeper都安装设置过之后可以直接安装kafka跳过其它步骤 kafka基础简介及基本命令 1.环境准备 1.1集群规划 node01  node0 ...

  5. kafka安装部署和使用

    一.kafka安装部署 1.1 获取安装包,上传解压到/data/soft目录下 链接:https://pan.baidu.com/s/1HrimkznaYXUwFvnhQpNjLA?pwd=ptvk ...

  6. kafka安装部署详解

    kafka安装部署详解 1. zookeeper安装部署 1.1 zookeeper下载 1.2 zookeeper配置启动 1.3 zookeeper验证 2. kafka安装部署 2.1 kafk ...

  7. 【Kafka】Kafka安装部署

    Kafka版本: 1.0.1 前期环境准备 准备好相应的服务器 本文中服务器共三台: node01,node02,node03 服务器已安装zookeeper集群 Kafka安装步骤 下载安装包 下载 ...

  8. zookeeper+kafka集群部署+storm集群

    zookeeper+kafka集群部署+storm集群 一.环境安装前准备: 准备三台机器 操作系统:centos6.8 jdk:jdk-8u111-linux-x64.gz zookeeper:zo ...

  9. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试

    Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...

最新文章

  1. ACE库的LOGGING记录使用摘要(1)
  2. 部署与管理ZooKeeper
  3. window下Java的环境变量的配置
  4. 经典论文复现 | 基于深度学习的图像超分辨率重建
  5. WCF系列(二) -- 使用配置文件构建和使用WCF服务
  6. 正则匹配没有闭合标签_RegExRX for Mac(多功能正则表达式开发工具)
  7. java之ThreadLocal简单使用总结
  8. 网络配置 rpm yum
  9. LeetCode 775. 全局倒置与局部倒置(归并排序/二分查找/一次遍历)
  10. git获得当前分支url_笔记本拿出来!软件工程师必须要知道的Git命令语句大汇总...
  11. 全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
  12. 千牛取消机器人自动回复_拼多多回复率低怎么办?
  13. 计算机新安装系统后桌面上有什么图标,手把手教你全新安装完win10系统后如何设置显示桌面图标-系统操作与应用 -亦是美网络...
  14. 医学自然语言处理(NLP)相关论文汇总之 NAACL 2022
  15. 黑苹果(Hackintosh)驱动Intel HD 4600
  16. 芯烨打印机api密钥php,php连接芯烨云打印机 (php demo)
  17. Adobe Photoshop 中的魔棒工具
  18. ThinkPHP教程--20--系统流程
  19. 无需Root也能使用Xposed!
  20. 推荐 7 个牛哄哄的电商项目

热门文章

  1. python引入模块教程_python进阶教程之模块(module)介绍
  2. 金融数据分析与挖掘实战1.5.2-1.5.3
  3. 一个非科班大学生的四年,到秋招收获了腾讯和字节的offer
  4. 锐度越高越好吗_德国瑞好和德国GC地暖哪个好
  5. sae php api,api.php · silenceper/saeApi - Gitee.com
  6. mysql工作中遇到的问题_mysql - 工作中碰到的问题
  7. chart控件做实时曲线显示_「Qt」利用QChart实现实时动态的曲线数据展示(进化版)
  8. vc mysql free result_VC的MySQL编程
  9. html datatype自定义,$.ajax中dataType为html实现地区显示效果
  10. 阿里云地域节点物理机房所在城市对照表(大陆节点+海外节点)...