Kafka是什么

Kafka最初是由LinkedIn公司采用Scala语言开发的一个分布式、多分区、多副本且基于ZooKeeper协调的内部基础设置,现已捐献给Apache基金会。Kafka是一个流平台,主要用来发布和订阅数据流,是流式数据处理的利器。Kafka用于构建实时数据管道和流应用程序,具有水平可伸缩性,容错性,快速性。Kafka可以处理消费者的网站中的所有动作(网页浏览,搜索和其他用户的行动)流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的,这是一个可行的解决方案。Kafka的目的是通过并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

Kafka主要特点

主题和日志

主题是Kafka提供的核心抽象。主题是将信息记录到的某个类别或订阅源名称。Kafka中的主题始终是多用户的,也就是说,一个主题可以有零个,一个或多个消费者来订阅写入该主题的数据。

对于每个主题,Kafka集群都会维护一个分区。每个分区都是由有序的不变的记录序列构成,这些记录连续地“append”到“commit log”中。每个分区中的记录都分配有一个称为“偏移量”的顺序ID,该ID唯一地标识分区中的每个记录。

机器:8核2Ghz,16G内存,千兆网卡,千兆网络

RabbitMQ、ActiveMQ和Kafka对比

生产者测试,总共发布1000万条消息,每条消息200字节。

消费者测试,总共获取1000万条消息。

Kafka安装配置

安装并运行

下载地址

https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.12-2.5.0.tgz

  1. $ wget https://mirror.bit.edu.cn/apache/kafka/2.5./kafka_2.-2.5..tgz
配置

单机伪分布式,复制三份server.properites,但需要修改端口、broker.id、log.dirs。broker.id 不能重复,端口号如果在不同的服务器上可以重复

server.properties

  1. # Kafka broker节点唯一标识
  2. borker.id=
  3. # 端口号(伪分布式不能冲突)
  4. port=
  5. # 对客户端提供的服务器地址和端口
  6. advertised.listener=PLAINTEXT://192.168.56.105:
  7. # Kafka日志存分路径
  8. log.dirs=/home/hadoop/kafka/broker-

server1.properties

# Kafka broker节点唯一标识

borker.id=1

# 端口号(伪分布式不能冲突)

port=9093

# 对客户端提供的服务器地址和端口

advertised.listener=PLAINTEXT://192.168.56.105:9093

# Kafka日志存分路径

log.dirs=/home/hadoop/kafka/broker-1

server2.properties

# Kafka broker节点唯一标识

borker.id=2

# 端口号(伪分布式不能冲突)

port=9094

# 对客户端提供的服务器地址和端口

advertised.listener=PLAINTEXT://192.168.56.105:9094

# Kafka日志存分路径

log.dirs=/home/hadoop/kafka/broker-2

运行

运行(三种方式各选其一),这里注意路径。.sh文件在kafka的bin文件夹下面,properties文件在kafka的config文件夹下。

  1. $ kafka-server-start.sh server.properties &
  2. $ kafka-server-start.sh server.properties1 &
  3. $ kafka-server-start.sh server.properties2 &

配置参数

参数名

默认值

描述

broker.id

-

该服务器的broker ID。如未设置,将生成一个唯一的broker ID。为避免Zookeeper生成的broker ID与用户配置的broker ID之间发生冲突,生成的broker ID从reserved.broker.max.id +1开始。

log.dirs

-

保存日志数据的目录

zookeeper.connect

-

Kafka连接Zookeeper的地址字符串

advertised.host.name

-

仅在未设置advertised.listeners或listeners时使用。使用advertised.listeners替代。

num.network.threads

3

服务器用于接收请求并且发送响应的线程数

num.io.threads

8

服务器用于处理请求的线程数,其中可能包括磁盘IO

socket.send.buffer.bytes

102400

发送缓冲区大小。不是有数据就马上发送,而是先存储到缓冲区了等到达一定的大小后再发送,以能提高性能

socket.receive.buffer.bytes

102400

接收缓冲区大小,当数据到达一定大小后再序列化到磁盘

socket.request.max.bytes

104857600

请求的最大字节数。这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数

num.partitions

1

每个主题默认的分区数

num.recovery.threads.per.data.dir

1

每个数据目录在启动时用于日志恢复以及在关机时用于刷新的线程数

offset.metadata.max.bytes

4096

与提交偏移量关联的元数据最大字节数

offsets.commit.required.acks

-1

提交之前所需的确认写入成功的副本数

offsets.commit.timeout.ms

5000

偏移量提交超时时间

offsets.topic.num.partitions

50

偏移主题的分区数

offsets.topic.replication.factor

3

偏移量主题的复制因子(设置较高以确保可用性)

transaction.state.log.replication.factor

3

事务主题的复制因子(设置较高以确保可用性)

transaction.state.log.min.isr

2

事务主题的min.insync.replicas配置。

log.flush.interval.messages

非常大

将消息刷新到磁盘之前,在日志分区上累积的消息数

log.flush.interval.ms

null

刷新到磁盘之前,主题中的消息在内存中保留的最长时间(以毫秒为单位)。如果未设置,则使用log.flush.scheduler.interval.ms中的值

log.retention.hours

168

删除日志文件之前保留日志文件的小时数。此属性级别高于log.retention.ms

log.retention.check.interval.ms

300000

日志清除器根据保留策略检查日志是否可以将其删除的时间间隔(以毫秒为单位)

log.segment.bytes

1073741824

单个日志文件的最大大小。topic的分区下的所有日志会进行分段,达到该大小,会滚动出新的日志文件

group.initial.rebalance.delay.ms

3000

coordinator在执行rebalance之前等待更多消费者加入新组的时间。

min.insync.replicas

1

确认写入成功的最小副本数。

auto.create.topics.enable

true

在服务器上启用主题自动创建。

compression.type

producer

主题的压缩类型。此配置接受标准压缩编解码器“ gzip”,“ snappy”,“ lz4”和“ zstd”。“uncompressed”表示不进行压缩,而“producer”表示保留生产者设置的压缩编解码器。

delete.topic.enable

true

如果关闭此配置,则通过管理工具删除主题将无效

基本命令使用

创建:

  1. # 创建一个拥有1个分区3个副本的topic
  2. $ kafka-topics.sh --create --zookeeper master:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

修改:

  1. # 修改topic
  2. $ kafka-topics.sh --alter --zookeeper master:2181 --topic my-replicated-topic --partitions 2

查看:

  1. # 查看topic信息
  2. $ kafka-topics.sh --describe --zookeeper master:2181 --topic my-replicated-topic

删除:

  1. # 删除topic
  2. $ kafka-topics.sh -delete --zookeeper master:2181 -topic my-replicated-topic

查看主题列表

  1. $ kafka-topics.sh --list --zookeeper master:2181
  2. $ kafka-topics.sh --list --zookeeper master:2181,master:2182,master:2183

生产消息:

  1. # 命令方式
  2. $ kafka-console-producer.sh --broker-list master:9092 --topic my-replicated-topic
  3.  
  4. # 调用工具类方式
  5. $ kafka-run-class.sh kafka.tools.ConsoleProducer --broker-list master:9092,master:9093,master94 --topic my-replicated-topic

消息批量生成:

  1. $ kafka-producer-perf-test.sh --topic test --num-records 100 --record-size 1 --throughput 100 --producer-props bootstrap.servers=localhost:9092

消费消息:

  1. # 命令方式
  2. $ kafka-console-consumer.sh --bootstrap-server 192.168.56.105:9092 --from-beginning -topic mytopic-02
  3.  
  4. # 调用工具类方式
  5. $ kafka-run-class.sh kafka.tools.SimpleConsumerShell --broker-list master:9092,master:9093,master:9094 --topic my-replicated-topic

一、kafka 安装配置的更多相关文章

  1. Kafka 安装配置 windows 下

    Kafka 安装配置 windows 下 标签(空格分隔): Kafka Kafka 内核部分需要安装jdk, zookeeper. 安装JDK 安装JDK就不需要讲解了,安装完配置下JAVA_HOM ...

  2. 3.kafka安装配置

    kafka安装配置 ### 1.集群规划 hadoop102 hadoop103 hadoop104 zk zk zk kafka kafka kafka jar包下载 http://kafka.ap ...

  3. Kafka安装配置

    Kafka是由Apache软件基金会开发的一个高吞吐量的分布式发布订阅消息系统,由Scala和Java编写.官网地址:http://kafka.apache.org 0.基本概念 Broker:Kaf ...

  4. Kafka 安装配置

    1. 下载安装kafka 下载地址:http://apache.fayea.com/kafka/ 解压安装包 tar zxvf kafka_版本号.tgz 2. 配置 修改kafka的config/s ...

  5. kafka安装配置及操作(官方文档)http://kafka.apache.org/documentation/(有单节点多代理配置)

    https://www.cnblogs.com/biehongli/p/7767710.html w3school https://www.w3cschool.cn/apache_kafka/apac ...

  6. 消息队列集群kafka安装配置

    1. 下载wget http://mirror.rise.ph/apache/kafka/0.11.0.0/kafka_2.12-0.11.0.0.tgz2. 安装tar xf kafka_2.12- ...

  7. Kafka 安装配置 及 简单实验记录

    1. 下载二进制文件并解压,并修改 broker.id 的值 wget http://apache.fayea.com/kafka/0.10.0.0/kafka_2.10-0.10.0.0.tgz - ...

  8. KAFKA安装+配置详解+常用操作+监控

    http://blog.csdn.net/hadas_wang/article/details/50056381 http://qiyishi.blog.51cto.com/5731577/18575 ...

  9. kafka系列一、kafka安装及部署、集群搭建

    一.环境准备 操作系统:Cent OS 7 Kafka版本:kafka_2.10 Kafka官网下载:请点击 JDK版本:1.8.0_171 zookeeper-3.4.10 二.kafka安装配置 ...

随机推荐

  1. Pytest单元测试框架——Pytest+Allure+Jenkins的应用

    一.简介 pytest+allure+jenkins进行接口测试.生成测试报告.结合jenkins进行集成. pytest是python的一种单元测试框架,与python自带的unittest测试框架 ...

  2. 小程序-图片/文件本地缓存,减少CDN流量消耗

    写在前面 小程序网络图片读取: 在读取OSS图片CDN分发时流量大量消耗,导致资金费用增加. 网络图片比较大时,图片加载缓慢. 为了尽量减少上面两个问题,所以对已读的图片进行缓存处理,减少多次访问不必 ...

  3. 痞子衡嵌入式:链接函数到8字节对齐地址或可进一步提升i.MXRT内核执行性能

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT上进一步提升代码执行性能的经验. 今天跟大家聊的这个话题还是跟痞子衡最近这段时间参与的一个基于i.MXRT1170的大项目有 ...

  4. 4-react 组件之间传值。

    1.传值: 都是使用props和state结合得方式进行组件之间得传值 再react中传值得话是父子组件之间得传值,一般会把父组件中得state值通过props传给子组件,再子组件中使用props进行 ...

  5. hadoop知识整理(5)之kafka

    一.简介 来自官网介绍: 翻译:kafka,是一个分布式的流处理平台.LinkedIn公司开发.scala语言编写.   1.支持流处理的发布订阅模式,类似一个消息队列系统: 2.多备份存储,副本冗余 ...

  6. @luogu - P6109@ [Ynoi2009]rprmq

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一个 n×n 的矩阵 a,初始全是 0,有 m 次修改操作和 ...

  7. 在Centos7中,从主机 Windows 上无法远程访问 Linux 上rabbitmq的解决方法

    当在 Linux 上配置好 Rabbitmq服务器后,如果从主机中无法访问到 Linux 中的Rabbitmq服务器时,需要做如下的检查: 1. Rabbitmq是否启动成功 在控制台输入: ps - ...

  8. PAI-AutoLearning 图像分类使用教程

    概述 PAI AutoLearning(简称PAI AL)自动学习支持在线标注.自动模型训练.超参优化以及模型评估.在平台上只需准备少量标注数据,设置训练时长即可得到深度优化的模型.同时自动学习PAI ...

  9. Linux服务器安装python3.6

    CentOS 7上默认安装的python版本是2.7.5,系统自带的旧版本python被系统很多其他软件环境依赖,因此不能卸载原Python,直接选择Python3.6.5进行全新安装. 1 安装Py ...

  10. 资料共享-源代码-视频教程-PLC-OpenCV-C++-MFC

    资料共享-源代码-视频教程-PLC-OpenCV-C++-MFC 资料共享-源代码-视频教程 资料共享-源代码-视频教程-PLC-OpenCV-C++-MFC