Kafka 快速起步(作者:杜亦舒)
Kafka 快速起步
主要内容:
1. kafka 安装、启动
2. 消息的 生产、消费
3. 配置启动集群
4. 集群下的容错测试
5. 从文件中导入数据,并导出到文件
单机示例
安装
tar -xzf kafka_2.10-0.10.1.1.tgz
cd kafka_2.10-0.10.1.1
启动
> bin/zookeeper-server-start.sh \
config/zookeeper.properties
> bin/kafka-server-start.sh \
config/server.properties
创建topic
打开一个新的终端窗口
bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 1 \
--partitions 1 \
--topic test
发送消息
打开一个新的终端窗口
bin/kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic test
进入输入模式,随意输入信息,例如:
hello world
hi
获取消息
打开一个新的终端窗口
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--from-beginning
便会显示出刚才发送的两条消息:
hello world
hi
这时可以打开发送消息的终端窗口,输入新的信息,再返回来就可以看到自动接收到了新消息
配置集群
新建两个启动配置文件
> cp config/server.properties \
config/server-1.properties
> cp config/server.properties \
config/server-2.properties
修改 config/server-1.properties 的以下几项配置:
broker.id=1
listeners=PLAINTEXT://:9093
log.dir=logs/kafka-logs-1
修改 config/server-2.properties 的以下几项配置:
broker.id=2
listeners=PLAINTEXT://:9094
log.dir=logs/kafka-logs-2
启动
> bin/kafka-server-start.sh \
config/server-1.properties &
> bin/kafka-server-start.sh \
config/server-2.properties &
创建一个topic,设置3个复制
bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 3 \
--partitions 1 \
--topic my-replicated-topic
发送消息
bin/kafka-console-producer.sh
--broker-list localhost:9092 \
--topic my-replicated-topic
输入消息:
my test message 1
my test message 2
获取消息
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--from-beginning \
--topic my-replicated-topic
可以正常取得消息
容错测试
# 取得server1的进程号
ps aux | grep server-1.properties
# 杀掉进程
kill -9 43116
读取消息
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--from-beginning \
--topic my-replicated-topic
返回信息:
my test message 1
my test message 2
仍然可以正常取得消息
Kafka Connect
Kafka 中的 connecter 可以与外部系统进行连接,例如文件系统、数据库
下面实验一个简单文件系统交互,从一个文件中导入数据,然后导出到另一个文件中
创建一个测试文件,用于导入数据使用
echo -e "foo\nbar" > test.txt
启动 connect,执行数据的导入导出
bin/connect-standalone.sh \
config/connect-standalone.properties \
config/connect-file-source.properties \
config/connect-file-sink.properties
命令执行后,会输出一系列的日志信息,等待执行完毕
查看导出结果
cat test.sink.txt
返回结果:
foo
bar
成功导出了 test.txt 中的数据
过程分析
执行第2步的命令后,为什么是去读test.txt
?为什么写入了test.sink.txt
?中间的过程是什么样的?
原因是在于两个配置文件
config/connect-file-source.properties (导入配置)
name=local-file-source
connector.class=FileStreamSource
tasks.max=1
file=test.txt
topic=connect-test
file
指定了是从test.txt
中导入数据
topic
指定了把数据发送到connect-test
这个topic
connect-file-sink.properties(导出配置)
name=local-file-sink
connector.class=FileStreamSink
tasks.max=1
file=test.sink.txt
topics=connect-test
file
指定了把数据导出到test.txt
中导入数据
topic
指定从connect-test
这个topic中读取数据
查看一下connect-test
这个topic
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic connect-test \
--from-beginning
结果为:
{"schema":{"type":"string","optional":false},"payload":"foo"}
{"schema":{"type":"string","optional":false},"payload":"bar"}
现在向test.txt中添加一条新数据:
echo "Another line" >> test.txt
再次执行 cat test.sink.txt
就会看到刚刚添加的数据:
Kafka 快速起步(作者:杜亦舒)的更多相关文章
- Kafka 消息存储及检索(作者:杜亦舒)
Kafka 消息存储及检索 原创 2016-02-29 杜亦舒 性能与架构 Kafka是一个分布式的消息队列系统,消息存储在集群服务器的硬盘Kafka中可以创建多个消息队列,称为topic,消息的生产 ...
- Kafka 快速起步
Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 主要内容:1. kafka 安装.启动2. 消息的 ...
- DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优
胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...
- JUnit三分钟教程 ---- 快速起步
JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...
- 【译】快速起步-JSX简介
react version: 15.5.0 快速起步-JSX简介 思考这个变量申明: const element = <h1>Hello, world!</h1>; 这个有趣的 ...
- docker安装kafka快速入门
docker安装kafka快速入门 1.安装zookeeper docker search zookeeperdocker pull zookeeperdocker run -d -v /home/s ...
- Kafka快速上手(2017.9官方翻译)
为了帮助国人更好了解.上手kafka,特意翻译.修改了个文档.官方Wiki : http://kafka.apache.org/quickstart 快速开始 本教程假定您正在开始新鲜,并且没有现有的 ...
- kafka快速入门(官方文档)
第1步:下载代码 下载 1.0.0版本并解压缩. > tar -xzf kafka_2.11-1.0.0.tgz > cd kafka_2.11-1.0.0 第2步:启动服务器 Kafka ...
- D. Magic Gems(矩阵快速幂 || 无敌杜教)
https://codeforces.com/contest/1117/problem/D 题解:有一些魔法宝石,魔法宝石可以分成m个普通宝石,每个宝石(包括魔法宝石)占用1个空间,让你求占用n个空间 ...
随机推荐
- 棋盘问题 分类: 搜索 POJ 2015-08-09 13:02 4人阅读 评论(0) 收藏
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28474 Accepted: 14084 Description 在一 ...
- Spring 中的页面重定向
在写 java 程序设计实践作业的时候遇到了重定向页面的需求,因为还没学到 java web 开发,所以自己就在网上搜了一下相关的代码,总结出了一些小小的经验,希望在下学期学 java web 的时候 ...
- shell脚本判断文件类型
转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html 1. shell判断文件,目录是否存在或者具有权限 2. #!/bi ...
- Servlet基础简单总结(上)
Servlet基础一些简单总结(上): 1.Java Servlet是运行在Web服务器上的Java程序2.Java平台给Servlet开发者提供了强大的API/面向对象编程平台无关/强类型/垃圾回收 ...
- java web简单权限管理设计
一套最基本的权限管理包括用户.角色.资源. 数据库设计 我的设计如下: 用户:user 角色:role 用户-角色:user_role 资源:resource(包括上级菜单.子菜单.按钮等资源) 角色 ...
- android 入门 007(界面跳转)
一.隐式跳转(自定义界面) 界面层: <Button android:id="@+id/sencond_contact" android:layout_width=" ...
- eclipse 智能提示
eclipse 智能提示 1.显示行号 2.android 的xml提示 文本框的内容为: <=:.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU ...
- MVC系列之二 Model层细解
一.简介 在上一篇将MVC的时候,有很有朋友对简单三层的概念不是很熟悉,因此,今天进行简单三层的一个简单介绍,同时为理解MVC中的Model做知识累计. 传统的三层主要指的是UI层,BLL层,DAL层 ...
- 批量修改文件夹及文件用户权限和用户组权限 centos
chown -R www * 批量修改目录下所有文件,用户为www chown -R :www * 批量修改目录下所有文件,用户组为www
- BZOJ 1513 [POI2006]Tet-Tetris 3D
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1513 题意:三维空间,有一些立方体在垂直下落.立方体的左下角坐标(x,y)以及长宽 ...