kafka基础知识点总结

https://blog.csdn.net/qq_25445087/article/details/80270790

需要学习. 

1.kafka简介

kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。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,如图:

配置hosts文件:

最后启动每台机器上的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基础知识点总结的更多相关文章

  1. kafka基础知识点

    1.安装: 1.1. 前置安装要求:java + zookeeper 1.2. 下载安装包:http://mirros.cnnic.cn/apache/kafka/0.9.00/kafka_2.10- ...

  2. 以e2e_cli为例漫谈fabric的一些基础知识点

    在刚接触fabric的时候一般都是直接跟着wiki的教程一步步安装配置,执行一系列命令,最终将其运行起来,但很多人对其中的运行流程及其基础知识点可能不是很了解.基于此今天我将以$FABRIC_ROOT ...

  3. Redis基础知识点面试手册

    Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...

  4. fastclick 源码注解及一些基础知识点

    在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...

  5. .NET基础知识点

    .NET基础知识点   l  .Net平台  .Net FrameWork框架   l  .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转   l  两种交 ...

  6. JavaScript 开发者经常忽略或误用的七个基础知识点(转)

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  7. JavaScript 开发者经常忽略或误用的七个基础知识点

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  8. JavaScript开发者常忽略或误用的七个基础知识点

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  9. JavaScript语言基础知识点图示(转)

    一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...

随机推荐

  1. dubbo SPI机制

    源码分析: /** * 获取扩展类 */ @SuppressWarnings("unchecked") public T getExtension(String name) { i ...

  2. 便捷删除QQ空间说说

    用Chrome打开QQ空间说说(心情),按F12,在Console里面粘贴以下代码,按回车 var delay = 1000; function del() { document.querySelec ...

  3. java——>> 和>>>

    试一下 public static void main(String[] args) { System.out.println(Integer.toBinaryString(-16)); System ...

  4. 正则获取a标签和a标签中的href地址

    /(<\/?a.*?>)/ a标签 /<a\b.*?</a>/ 表式以"<a "(有空格) 开始 以"</a>" ...

  5. window.location.hash(hash应用)---跳转到hash值制定的具体页面

    location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url.而location. ...

  6. [模板][HDU]P2544[单源最短路][SPFA]

    题目就不放了,主要是写一下SPFA,很少写,今天特别学了一个用STL的队列来做的. 代码: #include<iostream> #include<cstdio> #inclu ...

  7. sh_08_石头剪刀布

    sh_08_石头剪刀布 # 导入随机工具包 # 注意:在导入工具包的时候,应该将导入的语句,放在文件的顶部 # 因为,这样可以方便下方的代码,在任何需要的时候,使用工具包中的工具 import ran ...

  8. socket模块其他用法

    1.socket模块的其他方法 服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连接,(阻塞式)等待连 ...

  9. 3D Computer Grapihcs Using OpenGL - 19 Vertex Array Object(顶点数组对象)

    大部分OpenGL教程都会在一开始就讲解VAO,但是该教程的作者认为这是很不合理的,因为要理解它的作用需要建立在我们此前学过的知识基础上.因此直到教程已经进行了一大半,作者才引入VAO这个概念.在我看 ...

  10. pymysql 处理数据的几种方式

    1.表中提取数据 sql = "SELECT * FROM table WHERE name='%s'AND time='%s'" % (name,time)多个选择条件用AND连 ...