安装和测试Kafka(转)
http://blog.javachen.com/2015/03/17/install-and-test-kafka/#
本文主要介绍如何在单节点上安装 Kafka 并测试 broker、producer 和 consumer 功能。
下载
进入下载页面:http://kafka.apache.org/downloads.html ,选择 Binary downloads下载 (Source download需要编译才能使用),这里我下载 kafka_2.11-0.8.2.1
,其对应的 Scala 版本为 2.11
:
$ wget http://apache.fayea.com/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
解压并进入目录:
$ tar -xzvf kafka_2.11-0.8.2.1.tgz
$ cd kafka_2.11-0.8.2.1
查看目录结构:
tree -L 2
.
├── bin
│ ├── kafka-console-consumer.sh
│ ├── kafka-console-producer.sh
│ ├── kafka-consumer-offset-checker.sh
│ ├── kafka-consumer-perf-test.sh
│ ├── kafka-mirror-maker.sh
│ ├── kafka-preferred-replica-election.sh
│ ├── kafka-producer-perf-test.sh
│ ├── kafka-reassign-partitions.sh
│ ├── kafka-replay-log-producer.sh
│ ├── kafka-replica-verification.sh
│ ├── kafka-run-class.sh
│ ├── kafka-server-start.sh
│ ├── kafka-server-stop.sh
│ ├── kafka-simple-consumer-shell.sh
│ ├── kafka-topics.sh
│ ├── windows
│ ├── zookeeper-server-start.sh
│ ├── zookeeper-server-stop.sh
│ └── zookeeper-shell.sh
├── config
│ ├── consumer.properties
│ ├── log4j.properties
│ ├── producer.properties
│ ├── server.properties
│ ├── test-log4j.properties
│ ├── tools-log4j.properties
│ └── zookeeper.properties
├── libs
│ ├── jopt-simple-3.2.jar
│ ├── kafka_2.11-0.8.2.1.jar
│ ├── kafka_2.11-0.8.2.1-javadoc.jar
│ ├── kafka_2.11-0.8.2.1-scaladoc.jar
│ ├── kafka_2.11-0.8.2.1-sources.jar
│ ├── kafka_2.11-0.8.2.1-test.jar
│ ├── kafka-clients-0.8.2.1.jar
│ ├── log4j-1.2.16.jar
│ ├── lz4-1.2.0.jar
│ ├── metrics-core-2.2.0.jar
│ ├── scala-library-2.11.5.jar
│ ├── scala-parser-combinators_2.11-1.0.2.jar
│ ├── scala-xml_2.11-1.0.2.jar
│ ├── slf4j-api-1.7.6.jar
│ ├── slf4j-log4j12-1.6.1.jar
│ ├── snappy-java-1.1.1.6.jar
│ ├── zkclient-0.3.jar
│ └── zookeeper-3.4.6.jar
├── LICENSE
└── NOTICE
4 directories, 45 files
启动和停止
运行 kafka ,需要依赖 zookeeper,你可以使用已有的 zookeeper 集群或者利用 kafka 提供的脚本启动一个 zookeeper 实例:
$ bin/zookeeper-server-start.sh config/zookeeper.properties &
默认的,zookeeper 会监听在 *:2181/tcp
。
停止刚才启动的 zookeeper 实例:
$ bin/zookeeper-server-stop.sh
启动Kafka server:
$ bin/kafka-server-start.sh config/server.properties &
config/server.properties 中有一些默认的配置参数,这里仅仅列出参数,不做解释:
broker.id=0
port=9092
#host.name=localhost
#advertised.host.name=<hostname routable by clients>
#advertised.port=<port accessible by clients>
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
#log.flush.interval.messages=10000
#log.flush.interval.ms=1000
log.retention.hours=168
#log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
如果你像我一样是在虚拟机中测试 kafka,那么你需要修改 kafka 启动参数中 JVM 内存大小。查看 kafka-server-start.sh 脚本,修改 KAFKA_HEAP_OPTS
处 -Xmx
和 -Xms
的值。
启动成功之后,会看到如下日志:
[2015-03-17 11:19:30,528] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2015-03-17 11:19:30,604] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2015-03-17 11:19:30,605] INFO [Socket Server on Broker 0], Started (kafka.network.SocketServer)
[2015-03-17 11:19:30,687] INFO Will not load MX4J, mx4j-tools.jar is not in the classpath (kafka.utils.Mx4jLoader$)
[2015-03-17 11:19:30,756] INFO 0 successfully elected as leader (kafka.server.ZookeeperLeaderElector)
[2015-03-17 11:19:30,887] INFO Registered broker 0 at path /brokers/ids/0 with address cdh1:9092. (kafka.utils.ZkUtils$)
[2015-03-17 11:19:30,928] INFO [Kafka Server 0], started (kafka.server.KafkaServer)
[2015-03-17 11:19:31,048] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
从日志可以看到:
- log flusher 有一个默认的周期值
- kafka server 监听在9092端口
- 在 cdh1:9092 上注册了一个 broker 0 ,路径为 /brokers/ids/0
停止 Kafka server :
$ bin/kafka-server-stop.sh
单 broker 测试
在启动 kafka-server 之后启动,运行producer:
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
在另一个终端运行 consumer:
$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
在 producer 端输入字符串并回车,查看 consumer 端是否显示。
多 broker 测试
配置和启动 Kafka broker
接下来参考 Running a Multi-Broker Apache Kafka 0.8 Cluster on a Single Node 这篇文章,基于 config/server.properties 配置文件创建多个 broker 的 kafka 集群。
创建第一个 broker:
$ cp config/server.properties config/server1.properties
编写 config/server1.properties 并修改下面配置:
broker.id=1
port=9092
log.dir=/tmp/kafka-logs-1
创建第二个 broker:
$ cp config/server.properties config/server2.properties
编写 config/server2.properties 并修改下面配置:
broker.id=2
port=9093
log.dir=/tmp/kafka-logs-2
创建第三个 broker:
$ cp config/server.properties config/server3.properties
编写 config/server3.properties 并修改下面配置:
broker.id=3
port=9094
log.dir=/tmp/kafka-logs-3
接下来分别启动这三个 broker:
$ JMX_PORT=9999 ; nohup bin/kafka-server-start.sh config/server1.properties &
$ JMX_PORT=10000 ; nohup bin/kafka-server-start.sh config/server2.properties &
$ JMX_PORT=10001 ; nohup bin/kafka-server-start.sh config/server3.properties &
下面是三个 broker 监听的网络接口和端口列表:
Broker 1 Broker 2 Broker 3
----------------------------------------------
Kafka *:9092/tcp *:9093/tcp *:9094/tcp
JMX *:9999/tcp *:10000/tcp *:10001/tcp
创建 Kafka topic
在 Kafka 0.8 中有两种方式创建一个新的 topic:
- 在 broker 上开启
auto.create.topics.enable
参数,当 broker 接收到一个新的 topic 上的消息时候,会通过num.partitions
和default.replication.factor
两个参数自动创建 topic。 - 使用
bin/kafka-topics.sh
命令
创建一个名称为 zerg.hydra
的 topic:
$ bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic zerg.hydra --partitions 3 --replication-factor 2
使用下面查看创建的 topic:
$ bin/kafka-topics.sh --zookeeper localhost:2181 --list
test
zerg.hydra
还可以查看更详细的信息:
$ bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic zerg.hydra
Topic:zerg.hydra PartitionCount:3 ReplicationFactor:2 Configs:
Topic: zerg.hydra Partition: 0 Leader: 2 Replicas: 2,3 Isr: 2,3
Topic: zerg.hydra Partition: 1 Leader: 3 Replicas: 3,0 Isr: 3,0
Topic: zerg.hydra Partition: 2 Leader: 0 Replicas: 0,2 Isr: 0,2
默认的,Kafka 持久化 topic 到 log.dir
参数定义的目录。
$ tree /tmp/kafka-logs-{1,2,3}
/tmp/kafka-logs-1 # first broker (broker.id = 1)
├── zerg.hydra-0 # replica of partition 0 of topic "zerg.hydra" (this broker is leader)
│ ├── 00000000000000000000.index
│ └── 00000000000000000000.log
├── zerg.hydra-2 # replica of partition 2 of topic "zerg.hydra"
│ ├── 00000000000000000000.index
│ └── 00000000000000000000.log
└── replication-offset-checkpoint
/tmp/kafka-logs-2 # second broker (broker.id = 2)
├── zerg.hydra-0 # replica of partition 0 of topic "zerg.hydra"
│ ├── 00000000000000000000.index
│ └── 00000000000000000000.log
├── zerg.hydra-1 # replica of partition 1 of topic "zerg.hydra" (this broker is leader)
│ ├── 00000000000000000000.index
│ └── 00000000000000000000.log
└── replication-offset-checkpoint
/tmp/kafka-logs-3 # third broker (broker.id = 3)
├── zerg.hydra-1 # replica of partition 1 of topic "zerg.hydra"
│ ├── 00000000000000000000.index
│ └── 00000000000000000000.log
├── zerg.hydra-2 # replica of partition 2 of topic "zerg.hydra" (this broker is leader)
│ ├── 00000000000000000000.index
│ └── 00000000000000000000.log
└── replication-offset-checkpoint
6 directories, 15 files
启动一个 producer
以 sync
模式启动一个 producer:
$ bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --sync --topic zerg.hydra
然后,输入以下内容:
Hello, world!
Rock: Nerf Paper. Scissors is fine.
启动一个 consumer
在另一个终端运行:
$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic zerg.hydra --from-beginning
注意,生产环境通常不会添加 --from-beginning
参数。
观察输出,你会看到下面内容:
Hello, world!
Rock: Nerf Paper. Scissors is fine.
把 consumer 停掉再启动,你还会看到相同的输出结果。
将日志推送到 kafka
例如,将 apache 或者 nginx 或者 tomcat 等产生的日志 push 到 kafka,只需要执行下面代码即可:
$ tail -n 0 -f /var/log/nginx/access.log | bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --sync --topic zerg.hydra
参考文章
安装和测试Kafka(转)的更多相关文章
- 安装和测试Kafka
本文主要介绍如何在单节点上安装 Kafka 并测试 broker.producer 和 consumer 功能. 下载 进入下载页面:http://kafka.apache.org/downloads ...
- kafka 安装以及测试
1,下载kafka 并进行解压 http://mirrors.cnnic.cn/apache/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz 2,启动Zookeeper ...
- windows安装zookeeper和kafka,flume
一.安装JDK 过程比较简单,这里不做说明. 最后打开cmd输入如下内容,表示安装成功 二.安装zooeleeper 下载安装包:http://zookeeper.apache.org/release ...
- 在Centos 7上安装配置 Apche Kafka 分布式消息系统集群
Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据.Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还 ...
- my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接
一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径“C:\Soft\mysql-5.6.24-winx64” 三.环境配置 计算 ...
- Windows OS上安装运行Apache Kafka教程
Windows OS上安装运行Apache Kafka教程 下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka. 简介 本文讲述了如何在 ...
- OpenCV2+入门系列(一):OpenCV2.4.9的安装与测试
这里假设看到这篇文章的人都已经对OpenCV以及机器视觉等最基础的概念有了一定的认识,因此本文不会对OpenCV做任何的介绍,而是直接介绍OpenCV2.4.9的安装与测试.此外本文只是简单的介绍如何 ...
- 决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试
决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试 [TOC] Apache ZooKeeper 单机模式安装 创建hadoop用户&赋予sudo权限, ...
- hadoop 之 kafka 安装与 flume -> kafka 整合
62-kafka 安装 : flume 整合 kafka 一.kafka 安装 1.下载 http://kafka.apache.org/downloads.html 2. 解压 tar -zxvf ...
随机推荐
- .Net中集合排序
public class StockQuantity { public StockQuantity(string status, DateTime dateTime, int quantity) { ...
- Orchard模块开发全接触6:自定义用户注册
我们都知道 Orchard 的用户注册相当简单,现在,我们需要一个自定义的用户注册,现在,开始吧. 一:定义实体 Models/CustomerPartRecord.cs: public class ...
- Java(C#)基础差异-数组
1.填充数组 Java 数组填充替换方法Arrays.fill() 举例如下: import java.util.Arrays; public class FillDemo { public stat ...
- IaaS,SaaS,PaaS的区别
你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS.PaaS和SaaS,这几个术语并不好理解.不过,如果你是个吃货,还喜欢披萨,这个问题就好解决了!好吧 ...
- HTTPS安全证书介绍
IIS配置web SSL 安全证书Https访问 From : http://cao416451347ming.blog.163.com/blog/static/1154556162010217441 ...
- GDSL 1.7 发布,C语言通用数据结构库
GDSL 1.7 修复了 interval-heap 模块的一个小 bug. GDSL (通用数据结构库) 包含一组程序用于操作各种数据结构.这是一个可移植的库,完全由 ANSI C 编写.为 C 开 ...
- python的日志模块:logging;django的日志系统;django日志输出时间修改
Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...
- asp.net mvc Controller控制器返回类型
ASP.NET MVC包括了执行常见任务的ActionResult类型.这些类型罗列在表5-1中.每个类型都将在随后的小节中详细讨论. 表5-1 动作结果的类型及其说明 动作结果的类型 说 明 ...
- 【ContestHunter】【弱省胡策】【Round7】
Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{ ...
- verilog语法实例学习(9)
常用的时序电路介绍 寄存器 一个触发器可以存储一位数据,由n个触发器组成的电路可以存储n位数据,我们把这一组触发器叫做寄存器.寄存器中每个触发器共用同一个时钟. 下面是n位寄存器的代码,我们通过一个参 ...