Kafka 快速起步

原创
2017-01-05
杜亦舒
性能与架构
性能与架构

性能与架构

微信号
yogoup

功能介绍
网站性能提升与架构设计


主要内容:
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 就会看到刚刚添加的数据:

foo
bar
Another line        

更多介绍: http://www.cnblogs.com/ximengchj/p/6423704.html

相关文章:

分布式消息队列 Kafka

Kafka 消息存储及检索

Kafka 高可用设计

Kafka是如何实现高吞吐率的

点击 “阅读原文” 查看 文章列表

赞赏

人赞赏

精选留言

该文章作者已设置需关注才可以留言

写留言

该文章作者已设置需关注才可以留言

写留言


加载中
以上留言由公众号筛选后显示

了解留言功能详情

Kafka 快速起步的更多相关文章

  1. Kafka 快速起步(作者:杜亦舒)

    Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 主要内容:1. kafka 安装.启动2. 消息的 生产.消费3. 配置启动集群4. 集群下的容错测试5. 从文件中导入数据,并导 ...

  2. JUnit三分钟教程 ---- 快速起步

    JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...

  3. 【译】快速起步-JSX简介

    react version: 15.5.0 快速起步-JSX简介 思考这个变量申明: const element = <h1>Hello, world!</h1>; 这个有趣的 ...

  4. docker安装kafka快速入门

    docker安装kafka快速入门 1.安装zookeeper docker search zookeeperdocker pull zookeeperdocker run -d -v /home/s ...

  5. Kafka快速上手(2017.9官方翻译)

    为了帮助国人更好了解.上手kafka,特意翻译.修改了个文档.官方Wiki : http://kafka.apache.org/quickstart 快速开始 本教程假定您正在开始新鲜,并且没有现有的 ...

  6. kafka快速入门(官方文档)

    第1步:下载代码 下载 1.0.0版本并解压缩. > tar -xzf kafka_2.11-1.0.0.tgz > cd kafka_2.11-1.0.0 第2步:启动服务器 Kafka ...

  7. kafka快速开始教程

    此教程假设你刚刚开始没有任何 Kafka 或 ZooKeeper 数据.Kafka的控制台脚本在类Unix和Windows平台不同,Windows平台使用bin\windows\\代替bin/,脚本的 ...

  8. kafka快速入门到精通

    目录 1. 消息队列两种模式 1.1 消息队列作用 1.2 点对点模式(一对一,消费者主动拉取数据,消息收到后消息删除) 1.3 发布/订阅模式(一对多,消费数据之后不会删除消息) 1.4 kafka ...

  9. kafka快速入门

    一.kafka简介 kafka,ActiveMQ,RabbitMQ是当今最流行的分布式消息中间件,其中kafka在性能及吞吐量方面是三者中的佼佼者,不过最近查阅官网时,官方与它的定义为一个分布式流媒体 ...

随机推荐

  1. andriod 获得时间

    import java.text.SimpleDateFormat;import java.util.Date; public static String getCurrentTime() { Sim ...

  2. 使用tcp.validnode_checking允许、限制机器访问数据库

         使用tcp.validnode_checking允许.限制机器访问数据库 在$OREACLE_HOME/network/admin下直接修改sqlnet.ora文件,增加如下内容: tcp. ...

  3. iOS 在某一个ViewController跳转到TabViewController中的某一个ViewController

    要做到这个分为两步 第一步, 导入app #import "AppDelegate.h" 第二步, 监听方法中先写加入以下代码: [self dismissViewControll ...

  4. 在ios程序中自己主动滚动TableView到某行的方法

    比方tableview窗体能够显示 30 行, 我想在填充tableview 100 条数据后 选择第 50行, 能把这一行显示到窗体内, 就像手动拖滚动栏到 第 50行一样,要怎样实现呢? ] an ...

  5. 30分钟LINQ教程【转】

    千万别被这个页面的滚动条吓到!!! 我相信你一定能在30分钟之内看完它!!! 在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之 ...

  6. 猫猫学iOS之UITextField右边设置图片,以及UITextField全解

    猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果: 封装好的方法: 猫猫封装的一个小方法,简单共享出来,方便 ...

  7. .html(),.text()和.val()的差异

    .html(),.text()和.val()的差异总结:  .html(),.text(),.val()三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的html内容(包括htm ...

  8. activemq集群搭建Demo

    activemq5.14.5单节点安装Demo 第一步:创建集群目录 [root@node001 ~]# mkdir -p /usr/local/activemqCluster 复制单点至集群目录 [ ...

  9. MMORPG 游戏服务器端设计

    http://www.oschina.net/question/12_22983 这里给出一种宏观把握MMORPG服务器设计的文章,适合入门,读完后对服务器端的设计能有大概的掌握,方便对感兴趣的部分进 ...

  10. v-for设置键值 key

    总是用 key 配合 v-for.在组件上_总是_必须用 key 配合 v-for,以便维护内部组件及其子树的状态. <ul> <li v-for="todo in tod ...