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. 【react学习一】首先先create-react-app 配置less、sass

    1.安装初始化 npm create-react-app react-demo 2.安装初始化 npm run eject 3.配置sass / less cnpm i sass-loader nod ...

  2. 关于python pip安装第三方库 jieba 中文分词工具后提示"ImportError: cannot import name 'Random'"报错问题

    具体错误提示如下: >>> import jieba Traceback (most recent call last): File "<stdin>" ...

  3. 12. ClustrixDB 为容错和可用性分配磁盘空间

    集群必须包含足够的空闲磁盘空间,以便从节点或区域故障中自动恢复.要计算在发生故障后仍然允许ClustrixDB完全重新保护数据的情况下可以使用的最大磁盘空间量,可以使用以下公式: 最大磁盘利用率% = ...

  4. php使用ob缓存来实现动态页面静态化

    php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...

  5. Mysql包的下载

    官方下载地址: https://dev.mysql.com/downloads/mysql/5.5.html#downloads mysql的下载界面 二进制的包 通用的RPM包 源码包

  6. 【深入理解CLR】1:CLR的执行模型

    将源代码编译成托管模块 下图展示了编译源代码文件的过程.如图所示,可用支持 CLR 的任何一种语言创建源代码文件.然后,用一个对应的编译器检查语法和分析源代码.无论选用哪一个编译器,结果都是一个托管模 ...

  7. luogu P1181 数列分段Section I x

    P1181 数列分段Section I 题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出 ...

  8. 技术干货:Python解析CSV

    1. 什么是CSV CSV(Commma-Separated Value)是都好分隔符,其文件以纯文本形式存储表格数据(数字和文本). 案例: 2. 为什么要使用CSV 与专有的二进制文件格式截然不同 ...

  9. Pycharm,出现Invalid VCS root mapping The directory 解决方法

    Pycharm File 中setting-------version control  中VCS选择none  后选择ok 执行完以上的步骤,还错误就会消失.

  10. A - 地震预测

    A - 地震预测 怀特先生是一名研究地震的科学家,最近他发现如果知道某一段时间内的地壳震动能量采样的最小波动值之和,可以有效地预测大地震的发生. 假设已知一段时间的n次地壳震动能量的采样值为a1,a2 ...