[elk]kafka集群
IDEA相关插件推荐
Zoolytic-Zookeeper tool
Kafkalytic
消息队列两种模式
一对一

只能有一个消费者, 消费完后, 消息即被删除.一对多(发布订阅模式)

两种模式:
模式1: 消费者订阅公众号, 消息队列推送消息.(缺点: 消费者因配置不同,可能被打挂)
模式2: 消费者主动从mq里pull消息.(缺点: 消费者与mq建立长轮询, 浪费资源) -- kafka使用这种模式.
kafka是被动的. 生产者push给我消息, 消费者主动来pull消息.
kafka架构
kakfa是一个
分布式 - 可组建集群
基于发布订阅的 - 生产者/消费者
message queue
- producer: 生产者去连kakfa,push消息
- broker: kafka是分布式的, 集群中每个物理节点都是一个broker.

topic: 对消息的归类. 如商品信息, 订单信息 分别属于两个topic

partition:
如1个topic被分为10个partition.
则每个broker上都有10个partition存在.
每个broker上, 针对这个topic的众多partition中有一个leader partition. 其他均为slave,在其他broker眼中,均做备份用(高可用),
实际的读写都找leader分区.
partition num == broker num 才具备冗余能力.

- consumer group:
1个消费者组包含多个消费者
1个partition同时只能被1个消费者组里的某个消费者消费.
消费者组里消费者数量<=partition num

- logstash消费
input {
kafka {
bootstrap_servers => "localhost:9092"
topics => "test-topic"
group_id => "logstash-group"
codec => "json"
consumer_threads => 1
decorate_events => true
}
}
output {
stdout { codec => rubydebug }
}
/usr/local/logstash/bin/logstash -f logstash.yaml --config.reload.automatic
例子: 一个group,3个p
先创建3个p的test-topic3
1.当有3个p, 1个消费者时

2.当有3个p,2个消费者时

3.当有3个p,3个消费者时(消费能力最强)

都是动态调配的(新增一个消费者, p的分配会自动变)
4.当有1个p,2个消费者

小结: 同一个消费组, 消费者个数<=p个数
- 2个group,1个p


- zk & offset
zk: kafka启动依赖zk, 每个kafka节点配置文件里指定zk地址, 类似服务注册.
kafka0.9版前offset存在zk中. 消费者每次读写都访问zk存取offset, 由于访问zk频率太高, 0.9之后的kafka版本都将offset存放在自己的topic中.

offset: 记录消费者消费到了队列的位置, 以免消费者挂掉后重新来消费时候接着消费

每一个分区都是一个顺序的、不可变的消息队列, 并且可以持续的添加。
分区中的消息都被分了一个序列号,称之为偏移量(offset),在每个partition中此偏移量都是唯一的。

安装kafka
Scala 2.13 - kafka_2.13-2.4.0.tgz (asc, sha512) //kafka scala实现, 前面是scala的版本, 后面2.4是kakfa的版本.
安装java(zk依赖java)
#解压
cd /usr/local/src/
tar xf jdk-8u162-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_162 /usr/local/jdk
#添加环境变量
sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
java -version
安装zk
安装kafka
#############################################################
# kafka默认: 9092
egrep -v '^$|^#' /data/home/user00/kafka/config/server.properties
tail -f /data/home/user00/kafka/logs/server.log
#############################################################
- zk启动停止
cd /data/home/user00/kafka/bin
./zookeeper-server-stop.sh
cd /data/home/user00/kafka/bin
./zookeeper-server-start.sh ../config/zookeeper.properties &
- kafka启动停止
cd /data/home/user00/kafka/bin
./kafka-server-start.sh ../config/server.properties &
cd /data/home/user00/kafka/bin
./kafka-server-stop.sh
broker.id=0
num.network.threads=2
num.io.threads=8
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=2 //partition数量
log.retention.hours=168 //默认保留168h
log.segment.bytes=536870912
log.retention.check.interval.ms=60000
log.cleaner.enable=false
zookeeper.connect=localhost:2181 //连接zk
docker安装kafka
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.100:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.100:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
KAFKA_BROKER_ID=0
KAFKA_ZOOKEEPER_CONNECT=192.168.1.100:2181
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.100:9092
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
# 测试kafka
docker exec -it kafka /bin/bash
cd opt/kafka_2.11-2.0.0/
dockerfile安装kakfa集群
测试kakfa集群
kafka增删改查
//启动命令行测试 消费者和生产者
- 查看基于zk的消费组
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test-topic3
- 查看group详情(判断cusumer是否正常)
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group logstash-group --describe
- 创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test-topic1
- 生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
- 查看基于zk的消费组
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test-topic3
- 查看group详情(判断cusumer是否正常)
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group logstash-group --describe
// 创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test-topic
// 开启命令行-生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
hi
mao
//开启命令行-消费者
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test-topic
hi
mao
// 创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test-topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test-topic2
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic test-topic3
// 查看topic list
bin/kafka-topics.sh --zookeeper localhost:2181 --list
test-topic
test-topic2
test-topic3
// 查看topic 详细
/opt/kafka_2.12-2.4.0 # bin/kafka-topics.sh --zookeeper localhost:2181 --topic test-topic3 --describe
Topic: test-topic3 PartitionCount: 3 ReplicationFactor: 1 Configs:
Topic: test-topic3 Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: test-topic3 Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: test-topic3 Partition: 2 Leader: 0 Replicas: 0 Isr: 0
// 查看消费组list(如果消费时没指定消费组名称,则默认随机产生一个名称)
bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list
console-consumer-94154
// 查看consumer group详情(判断cusumer是否正常): LAG(langency): 表示该队列消费延迟情况(还有多少条堆积)
bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group logstash-group --describe
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
console-consumer-94154 test-topic 0 - 2 - consumer-console-consumer-94154-1-c4ac900c-f053-4f2f-949c-c86d16449e86 /172.17.0.1 consumer-console-consumer-94154-1
// 开启一个命令行消费者: 查看实时消费日志(判断是队列否有日志)
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test-topic3
// 生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic3
hi
基于zk的消费者
- 查看基于zk的消费组
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test-topic3
- 开启一个消费者(随机生成group)
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test-topic3
- 查看group详情(判断cusumer是否正常)
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group logstash-group --describe
// 基于kafka的消费者
- 查看基于kafka的消费组
bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list
- 查看group详情(判断cusumer是否正常)
bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group logstash-group --describe
- 开启一个消费者(随机生成group)
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test-topic3 --group logstash-group
- 开启一个消费者(指定group,可能偷走已有的消费者的数据)
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test-topic3 --group logstash-group
kafka常用命令
#############################################################
## kafka
cd /data/home/user00/kafka
bin/kafka-topics.sh --create --zookeeper localhost:2000 --replication-factor 2 --partitions 36 --topic test-topics
- 创建topics
cd /data/home/user00/kafka
bin/kafka-topics.sh --create --zookeeper localhost:2000 --replication-factor 2 --partitions 36 --topic 10445
- 删除topics
cd /data/home/user00/kafka
bin/kafka-topics.sh --delete --zookeeper localhost:2000 --topic test-topic
- 查看topics
cd /data/home/user00/kafka
bin/kafka-topics.sh --zookeeper localhost:2000 --list
- 查看topics详情
cd /data/home/user00/kafka
bin/kafka-topics.sh --zookeeper localhost:2000 --topic test-topic --describe
- 查看group list
cd /data/home/user00/kafka
bin/kafka-consumer-groups.sh --zookeeper localhost:2000 --list
- 查看group list详情
cd /data/home/user00/kafka
bin/kafka-consumer-groups.sh --zookeeper localhost:2000 --group logstash --describe
- 查看消费情况
cd /data/home/user00/kafka
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2000 --group logstash --topic 100100
- 查看实时日志
cd /data/home/user00/kafka
bin/kafka-console-consumer.sh --zookeeper localhost:2000 --topic 100100
#############################################################
- Create a topic
bin/kafka-topics.sh --create --zookeeper localhost:2000 --replication-factor 1 --partitions 1 --topic test-topic
bin/kafka-topics.sh --zookeeper localhost:2000 --list
- Send some messages()
bin/kafka-console-producer.sh --broker-list localhost:2000 --topic test-topic
- Start a consumer
bin/kafka-console-consumer.sh --bootstrap-server localhost:2000 --topic test-topic --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server localhost:2000 --topic mytopic-from-logstash --from-beginning
#############################################################
监控kafka
kafka-manager(点集群,点topic就可以看到broker和消费lag)
promethus+granfana(可以看到消费延迟lag)
老版本新版本
生产 消费 连broker即可. 连接zookeeper方式会被废弃.

[elk]kafka集群的更多相关文章
- ELK+Kafka集群日志分析系统
ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...
- Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构
Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 目录 Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 一.Zookeeper 1. Zook ...
- 【拆分版】Docker-compose构建Zookeeper集群管理Kafka集群
写在前边 在搭建Logstash多节点之前,想到就算先搭好Logstash启动会因为日志无法连接到Kafka Brokers而无限重试,所以这里先构建下Zookeeper集群管理的Kafka集群. 众 ...
- 【实验级】Docker-Compose搭建单服务器ELK伪集群
本文说明 由于最近在搭ELK的日志系统,为了演示方案搭了个单台服务器的日志系统,就是前一篇文章中所记,其实这些笔记已经整理好久了,一直在解决各种问题就没有发出来.在演示过程中我提到了两个方案,其中之一 ...
- 基于Centos7xELK+Kafka集群部署方案
本次集群部署使用ELK版本统一为6.8.10,kafka为2.12-2.51 均可在官网下载 elasticsearch下载地址:https://www.elastic.co/cn/downloads ...
- zookeeper集群+kafka集群 部署
zookeeper集群 +kafka 集群部署 1.Zookeeper 概述: Zookeeper 定义 zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zooke ...
- Kafka1 利用虚拟机搭建自己的Kafka集群
前言: 上周末自己学习了一下Kafka,参考网上的文章,学习过程中还是比较顺利的,遇到的一些问题最终也都解决了,现在将学习的过程记录与此,供以后自己查阅,如果能帮助到其他人,自然是更好的. ...
- kafka集群安装部署
kafka集群安装 使用的版本 系统:centos6.5 centos6.7 jdk:1.7.0_79 zookeeper:3.4.9 kafka:2.10-0.10.1.0 一.环境准备[只列,不具 ...
- kafka集群搭建和使用Java写kafka生产者消费者
1 kafka集群搭建 1.zookeeper集群 搭建在110, 111,112 2.kafka使用3个节点110, 111,112 修改配置文件config/server.properties ...
随机推荐
- suctf逆向部分
自己真的菜,然后在网上找了一篇分析pyc反编译后的文件然后进行手撸opcode,过程真痛苦 http://www.wooy0ung.me/writeup/2017/10/11/0ctf-quals-2 ...
- 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3
紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...
- javascript闭包和this对象
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...
- vs2010黑色主题Dark完美设置
版权声明:本文为博主原创文章,未经博主允许不得转载. ----------------------------------------------------------------------- ...
- 给有C或C++基础的Python入门 :Python Crash Course 4 操作列表 4.4 -- 4.5
上接前一篇文章. 4.4 使用列表的一部分 一,切片 切边,顾名思义,就是处理列表的部分元素. 我们可以联系一下C++的一段语句:for(int i = 0; i < n-2; ++i) cou ...
- 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)
tornado 相关说明 f增加图片上传功能, 在 main.py ,文件中创建个 UploadHandler 类,用来处理图片上传 上传图片之前,要先渲染这个页面,所以定个 get 方法,把这个页 ...
- 潭州课堂25班:Ph201805201 django 项目 第二十二课 文章主页 新闻列表页面滚动加载,轮播图后台实现 (课堂笔记)
新建static/js/news/index.js文件 ,主要用于向后台发送请求, // 新建static/js/news/index.js文件 $(function () { // 新闻列表功能 l ...
- python系统编程(二)
多次fork问题 如果在一个程序,有2次的fork函数调用,是否就会有3个进程呢? #coding=utf-8 import os import time # 注意,fork函数,只在Unix/Lin ...
- python网络编程(十一)
epoll版-TCP服务器 1. epoll的优点: 没有最大并发连接的限制,能打开的FD(指的是文件描述符,通俗的理解就是套接字对应的数字编号)的上限远大于1024 效率提升,不是轮询的方式,不会随 ...
- java第二周的作业
package java第二周学习; import javax.swing.JOptionPane; public class 数学题 { private int a; private int b; ...