Kafka 配置
Kafka的消息机制
在 Kafka 中 Topic 是一个存储消息的逻辑概念,可以认为是一个消息集合。每条消息发送到 Kafka 集群的消息都有一个类别。物理上来说,不同的 Topic 的消息是分开存储的,每个 Topic 可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。
每个 Topic 可以划分多个分区(每个 Topic 至少有一个分区),同一 Topic 下的不同分区包含的消息是不同的。每个消息在被添加到分区时,都会被分配一个 offset,它是消息在此分区中的唯一编号,Kafka 通过 offset 保证消息在分区内的顺序,offset 的顺序不跨分区,即 Kafka 只保证在同一个分区内的消息是有序的。消息每次追加到对应的 Partition 的后面
安装
解压放到/opt/kafka, 软链一个latest出来, 先要启动zookeeper. 可以使用独立的zookeeper服务, 也可以用kafka自带的, 在lib目录下带了zookeeper. 启动zookeeper
./bin/zookeeper-server-start.sh ./config/zookeeper.properties
然后启动kafka
./bin/kafka-server-start.sh ./config/server.properties
此时数据日志在 /tmp/kafka-logs/ , 而应用日志的路径是 ./logs , 直接运行时, 会报 Cannot open file /opt/kafka/kafka_2.12-2.0.0/bin/../logs/kafkaServer-gc.log due to Permission denied 这样的错误.
修改数据日志路径
在 server.properties, 修改 log.dirs=/tmp/kafka-logs
修改应用日志路径
这个是在log4j.properties里指定的, 变量是 ${kafka.logs.dir}, 可以通过设置环境变量 LOG_DIR 修改, 例如创建如下的sh脚本, 使用-daemon参数后, 启动后进入后台执行
export LOG_DIR=/tmp/kafka-application-logs/
echo 'Kafka application logs set to ' $LOG_DIR
/somewhere/bin/kafka-server-start.sh -daemon /somewhere/config/server.properties
在命令行测试Kafka
创建topic
./bin/kafka-topics.sh --create --zookeeper localhost: --replication-factor --partitions --topic test
读取topic列表
./bin/kafka-topics.sh --list --zookeeper localhost:
test
另外, 可以配置为自动创建topic, 当发布的topic不存在时自动创建
发布消息
./bin/kafka-console-producer.sh --broker-list localhost: --topic test
This is a message
This is another message
启动消费端
./bin/kafka-console-consumer.sh --bootstrap-server localhost: --topic test --from-beginning
This is a message
This is another message
应用场景
- 监控: 发送系统和应用程序健康相关的指标, 用独立的服务器收集和处理这些数据创建监控仪表盘并发送警告. LinkedIn还利用Apache Samza实现了一个能够实时处理事件的富调用图分析系统
- 传统的消息: 作为传统的消息队列实现消息的发布和订阅
- 分析: 为了更好地理解用户行为,改善用户体验,LinkedIn会将用户查看了哪个页面, 点击了哪些内容等信息发送到每个数据中心的Kafka集群上, 并通过Hadoop进行分析, 生成日常报告.
- 日志处理: 作为分布式应用程序或平台的构件, 大数据解决方案Pinot等产品将Kafka作为核心构件(分布式日志), 分布式数据库Espresso将其作为内部副本并改变传播层.
配置说明
ACKS
(1)acks=0: 设置为0表示producer不需要等待任何确认收到的信息。副本将立即加到socket buffer并认为已经发送。没有任何保障可以保证此种情况下server已经成功接收数据,同时重试配置不会发生作用(因为客户端不知道是否失败)回馈的offset会总是设置为-1;
(2)acks=1: 这意味着至少等待leader已经成功将数据写入本地log,但是不需等待所有follower是否成功写入。这种情况下,如果follower没有成功备份数据而leader又挂掉,则消息会丢失
(3)acks=all: 这意味着leader需要等待所有备份都成功写入日志,这种策略会保证只要有一个备份存活就不会丢失数据。这是最强的保证
(4)其他的设置,例如acks=2也是可以的,这将需要给定的acks数量,但是这种策略一般很少用。
LINGER.MS
By default a buffer is available to send immediately even if there is additional unused space in the buffer. However if you want to reduce the number of requests you can set linger.ms to something greater than 0. This will instruct the producer to wait up to that number of milliseconds before sending a request in hope that more records will arrive to fill up the same batch.
producer组将会汇总任何在请求与发送之间到达的消息记录一个单独批量的请求。通常来说,这只有在记录产生速度大于发送速度的时候才能发生。然而,在某些条件下,客户端将希望降低请求的数量,甚至降低到中等负载一下。这项设置将通过增加小的延迟来完成--即,不是立即发送一条记录,producer将会等待给定的延迟时间以允许其他消息记录发送,这些消息记录可以批量处理。这可以认为是TCP种Nagle的算法类似。这项设置设定了批量处理的更高的延迟边界:如果消息达到了某个partition的batch.size,他将会立即发送而忽略这项设置,然而如果消息字节数比这项设置要小的多, 就会根据这个配置“linger”特定的时间以获取更多的消息。 这个设置默认为0,即没有延迟。设定linger.ms=5,例如,将会减少请求数目,但是同时会增加5ms的延迟。
BATCH.SIZE
This is an upper limit of how many messages Kafka Producer will attempt to batch before sending – specified in bytes.
producer将试图打包处理消息记录以减少请求次数。这将改善client与server之间的性能。这项配置控制默认的每批处理的消息字节数上限。不会试图打包大于这个字节数的消息字节数。
发送到brokers的请求将包含多个批量处理,其中会包含对每个partition的一个请求。
较小的批量处理数值比较少用,并且可能降低吞吐量(0则会仅用批量处理)。较大的批量处理数值将会浪费更多内存空间,这样就需要分配特定批量处理数值的内存大小。
Kafka 配置的更多相关文章
- kafka 配置启动
Kafka配置(注意log.dirs不要配置在tmp目录下,因为该目录会被linux定时任务删除,会导致kafka崩溃)需要三个Kafka实例,分别安装在下面三个机器上:192.168.240.167 ...
- hadoop生态搭建(3节点)-08.kafka配置
如果之前没有安装jdk和zookeeper,安装了的请直接跳过 # https://www.oracle.com/technetwork/java/javase/downloads/java-arch ...
- Kafka配置信息
Kafka配置信息 broker配置信息 属性 默认值 描述 broker.id 必填参数,broker的唯一标识 log.dirs /tmp/kafka-logs Kafka数据存放的目录.可以指定 ...
- windows下kafka配置入门 示例
实验平台与软件: 操作系统:windows7 32 位 java 开发包: jdk1.8.0_144 集群: zookeeper-3.3.6 消息队列: kafka_2.11-0.11.0.1 安装 ...
- kafka配置参数
Kafka为broker,producer和consumer提供了很多的配置参数. 了解并理解这些配置参数对于我们使用kafka是非常重要的.本文列出了一些重要的配置参数. 官方的文档 Configu ...
- kafka配置
官网:http://kafka.apache.org/ 主要有3种安装方式: 1. 单机单broker 2. 单机多broker 3. 多机多broker 1. wget http://mirror. ...
- Kafka配置及简单命令使用
一. Kafka中的相关概念的介绍 Kafka是一个scala实现的分布式消息中间件,其中涉及到的相关概念如下: Kafka中传递的内容称为message(消息),message 是通过topic(话 ...
- kafka配置记录
1. 准备三台机器,系统CentOs6 2. 安装好JDK和zookeeper 参考: zookeeper配置记录 3. 解压安装包到指定目录 tar -zxvf kafka_2.12-2.1.0.t ...
- Kafka 配置安装
1.从官网下载安装包 http://kafka.apache.org/downloads2.上传到01虚拟机,解压3.进入安装目录下的config目录4.对server.properties进行配置 ...
- flume kafka 配置指南
1.官方网站也有配置: https://flume.apache.org/FlumeUserGuide.html#kafka-source 2.clodera 官方配置 https://www.clo ...
随机推荐
- go语言之进阶篇无缓冲channel
1.无缓冲channel 示例: package main import ( "fmt" "time" ) func main() { //创建一个无缓存的ch ...
- go语言之进阶篇接口转换
1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Pers ...
- [leetcode]Best Time to Buy and Sell Stock III @ Python
原题地址:https://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ 题意: Say you have an array ...
- High Availability (HA) 和 Disaster Recovery (DR) 的区别
High availability 和disaster recovery不是一回事. 尽管在规划和解决方案上有重叠的部分, 它们俩都是business contiunity的子集. HA的目的是在主数 ...
- 领扣-120 三角形最小路径和 Triangle MD
三角形最小路径和 Triangle 数组 动态规划 问题 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [2], [3,4], [6,5,7], ...
- 用css3和jQuery制作精美的表单
用css3和jQuery制作一个简单的精美表单 html代码如下: <span class="title">Mask Your Input Forms and Make ...
- Swift语言精要 - Dictionary(字典)
字典以键值对的形式存储数据. 键不能重复,但是值可以重复. 基本语法用例: var states : Dictionary<String, String> = ["CA" ...
- 微信小程序 - loading(组件)
更新日期: 2019/3/8:首次发布 2019/3/12:增加loadOpacity透明度控制,默认0.5. 以及修改居中方式 Loading 参数: 1. type:loading(必需参数) 2 ...
- 微信小程序 - 3d轮播图组件(基础)
<!-- 目前仅支持data数据源来自banner,请看测试案例 ################ 以上三种形式轮播: 1. basic 2. 3d 3. book basic即普通轮播 3d即 ...
- 微信小程序 - radio/checkbox自定义组件
更新 2019-01-26:首次发布 2019-01-27:增加默认取值选中radio/checkbox,checkbox需在onload取值 2019-01-28:增加radio取值不存在红色提示和 ...