[转帖]kafka基础知识点总结
kafka基础知识点总结
https://blog.csdn.net/qq_25445087/article/details/80270790 需要学习.
1.kafka简介
kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。最新版本是1.1.0,用Scala2.12开发的版本需要支持jdk1.8及以上
2.kafka基本原理
基本术语:
broker:一个kafka集群由一个或者多个broker组成,集群的基本组成单位
topic:kafka中用来维护的一类消息
partition:每个topic可以包含多个分区,每一个分区都存在于各个broker中,但是一个分区只能选取一个broker作为主节点(在有多个备份的情况下)
producer:生产并发送消息到topic中
consumer:消费topic中的消息
consumer group:每个consumer属于一个特定的consumer group,对于一个topic中的消息只能被一个consumer group中的一个consumer消费
消息消费有queen和发布-订阅两种模式,kakfa在同一个consumer group下是queen模式,在不同consumer group下是发布-订阅模式
kafka中的数据流向图:
producer生产数据发送到kafka,consumer从kafka消费数据
其中每个topic可以有一个或者多个partition,每个partition就是一个队列,数据在其中是有序且不可变的,新消息被追加到partition的尾部,每条消息都有一个连续的序号叫做offset,kafka通过offset来控制消息的消费,可以防止重复消费
kafka可以将消息保存指定的时间,可以通过配置文件设置,因此kafka中的消息可以被重复消费。
partition
Kafka集群中,一个Topic的多个partitions被分布在多个server上。每个server负责partitions中消息的读写操作。每个partition可以被备份到多台server上,以提高可靠性。
每一个patition中有一个leader和若干个follower。leader处理patition内所有的读写请求,而follower是leader的候补。如果leader挂了,其中一个follower会自动成为新的leader。每一台server作为担任一些partition的leader,同时也担任其他patition的follower,以此达到集群内的负载均衡。
producer
producer发布消息到指定的topic中,producer决定将消息发送到具体的哪一个partition。比如基于”round-robin”方式实现简单的负载均衡或者通过其他的一些算法等.
3.集群部署
1.从官网下载kafka的安装包,地址为:
http://kafka.apache.org/downloads.html
需要先安装jdk
2.如果要安装集群,需要配置kafka和zookeeper,若是安装单机,直接启动即可,启动命令为:
启动zookeeper:
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
启动kafka:
nohup bin/kafka-server-start.sh config/server.properties &
3.集群安装配置,首先修改zookeeper配置文件
集群上每台机器上的配置文件相同
创建myid文件,进入/root/kafka/zookeeper,创建myid文件,将三个服务器上的myid文件分别写入1,2,3,如图:
最后启动每台机器上的zookeeper,都启动成功后,没有报错,zookeeper集群搭建成功
4.配置kafka集群配置文件,修改config/server.properties
主要修改三个地方,broker.id是每个broker的标识,从零开始,0,1,2,3......
advertised.listeners是kafka的监听地址,可以通过配置hosts文件来识别
zookeeper.connect是zookeeper的连接地址
最后启动kafka,每台启动后不报错表示集群启动成功。
4.常用命令
查看topic:
bin/kafka-topics.sh --zookeeper node01:2181 --list
创建topic:
bin/kafka-topics.sh --zookeeper node01:2181 --create --topic t_cdr --partitions 30 --replication-factor 2
查看指定topic信息;
bin/kafka-topics.sh --zookeeper node01:2181 --describe --topic t_cdr
生产数据:
bin/kafka-console-producer.sh --broker-list node86:9092 --topic t_cdr
消费数据:
bin/kafka-console-consumer.sh --zookeeper node01:2181 --topic t_cdr --from-beginning
修改topic分区数:
bin/kafka-topics.sh --zookeeper node01:2181 --alter --topic t_cdr --partitions 10
删除topic,只会删除zookeeper中的信息,消息文件需要手动删除
bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper node01:2181 --topic t_cdr
查看topic某分区偏移量最大(小)值
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic hive-mdatabase-hostsltable --time -1 --broker-list node86:9092 --partitions 0
查看消费者群组:
./kafka-consumer-groups.sh --bootstrap-server 192.168.1.132:9092 --list
进入zookeeper命令查看kafka相关信息
bin/zookeeper-shell.sh
重启集群某个节点后,重新进行leader的负载均衡:
./kafka-preferred-replica-election.sh --zookeeper id:port
查看某个topic的offset:
./kafka-consumer-offset-checker.sh --group console-consumer-52639 --topic test1 --zookeeper 172.16.140.9:2181
[转帖]kafka基础知识点总结的更多相关文章
- kafka基础知识点
1.安装: 1.1. 前置安装要求:java + zookeeper 1.2. 下载安装包:http://mirros.cnnic.cn/apache/kafka/0.9.00/kafka_2.10- ...
- 以e2e_cli为例漫谈fabric的一些基础知识点
在刚接触fabric的时候一般都是直接跟着wiki的教程一步步安装配置,执行一系列命令,最终将其运行起来,但很多人对其中的运行流程及其基础知识点可能不是很了解.基于此今天我将以$FABRIC_ROOT ...
- Redis基础知识点面试手册
Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...
- fastclick 源码注解及一些基础知识点
在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...
- .NET基础知识点
.NET基础知识点 l .Net平台 .Net FrameWork框架 l .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转 l 两种交 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点(转)
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript开发者常忽略或误用的七个基础知识点
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- JavaScript语言基础知识点图示(转)
一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...
随机推荐
- 随笔记录①—利用poi读取Word中的标题和内容
使用时间:4小时 使用poi方法将word中的内容提取出来,并输出到控制台或者存储到数据库poi.jar下载地址:https://www.apache.org/dyn/closer.lua/poi/r ...
- Idea创建多模块依赖Maven项目
idea 创建多模块依赖Maven项目 本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着. 1. 创建一个新maven项目 2. 3. 输入g ...
- 虚拟机安装 Output error file to the following location
有的用户会对你中安装虚拟机系统,但偶尔会在安装过程中遇到一些问题.比如在电脑安装虚拟机系统时出现提示“Output error file to the following location”,这一般是 ...
- MySQL概述 - 一条查询sql语句的执行过程
Server层 连接器 建立连接.获取权限.维持和管理连接. 连接建立比较复杂,建议使用长连接 定期断开长连接 mysql_reset_connection指令 查询缓存 建议关闭,任何更新操作会此t ...
- 用户输入和while 循环
input 工作原理 函数input()让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中. message = input("need to input ...
- ansible-乱
工作机制:ssh 无客户端 工作方式: 1,CMDB 2,公有云私有云API 3,使用ad-hoc 4,ansible-playbook ansible 执行命令,底层调用传输连接模块,将命令或文件传 ...
- Linux基础教程 linux中使用find命令搜索文件常用方法记录
find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间.兄弟连Linux培训 小编总结了下,整理出find常用的使用方 ...
- 【CF1243D&CF920E】0-1 MST(bfs,set)
题意:给定一张n个点的完全图,其中有m条边权为1其余为0,求最小生成树的权值和 n,m<=1e5 思路:答案即为边权为0的边连接的联通块个数-1 用set存图和一个未被选取的点的集合,bfs过程 ...
- Introduction-to-Psychology Slides
最近在网易公开课学习耶鲁大学Paul Bloom教授的<心理学导论>,英文水平有限,视频中一直没有出现PPT,无意中找到一份课件,现分享于此,大家自取! 链接:https://pan.ba ...
- sqli-labs(28a)
0X01构造闭合 爆字段数 /?id=') order by 1%23 ?id=') order by 5%23 偷看一下源码 就只过滤了union select 闭合') 那我们来尝试一下 0X02 ...