h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote {
margin: 5px;
padding: 5;
}
body {
font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif;
font-size: 14px;
line-height: 18px;
color: #737373;
background-color: white;
margin: 10px 13px 10px 13px;

}

table {

margin: 10px 0 15px 0;

border-collapse: collapse;

}

td,th {

border: 1px solid #ddd;

padding: 3px 10px;

}

th {

padding: 5px 10px;

}

a {

color: #0069d6;

}

a:hover {

color: #0050a3;

text-decoration: none;

}

a img {

border: none;

}

p {

margin-bottom: 9px;

}

h1,

h2,

h3,

h4,

h5,

h6 {

color: #404040;

line-height: 36px;

}

h1 {

margin-bottom: 18px;

font-size: 30px;

}

h2 {

font-size: 24px;

}

h3 {

font-size: 18px;

}

h4 {

font-size: 16px;

}

h5 {

font-size: 14px;

}

h6 {

font-size: 13px;

}

hr {

margin: 0 0 19px;

border: 0;

border-bottom: 1px solid #ccc;

}

blockquote {

padding: 13px 13px 21px 15px;

margin-bottom: 18px;

font-family:georgia,serif;

font-style: italic;

}

blockquote:before {

content:"\201C";

font-size:40px;

margin-left:-10px;

font-family:georgia,serif;

color:#eee;

}

blockquote p {

font-size: 14px;

font-weight: 300;

line-height: 18px;

margin-bottom: 0;

font-style: italic;

}

code, pre {

font-family: Monaco, Andale Mono, Courier New, monospace;

}

code {

background-color: #fee9cc;

color: rgba(0, 0, 0, 0.75);

padding: 1px 3px;

font-size: 12px;

-webkit-border-radius: 3px;

-moz-border-radius: 3px;

border-radius: 3px;

}

pre {

display: block;

padding: 14px;

margin: 0 0 18px;

line-height: 16px;

font-size: 11px;

border: 1px solid #d9d9d9;

white-space: pre-wrap;

word-wrap: break-word;

}

pre code {

background-color: #fff;

color:#737373;

font-size: 11px;

padding: 0;

}

sup {

font-size: 0.83em;

vertical-align: super;

line-height: 0;

}

  • {

    -webkit-print-color-adjust: exact;

    }

    @media screen and (min-width: 914px) {

    body {

    width: 854px;

    margin:10px auto;

    }

    }

    @media print {

    body,code,pre code,h1,h2,h3,h4,h5,h6 {

    color: black;

    }

    table, pre {

    page-break-inside: avoid;

    }

    }

第一步:

下载和解压

假设我们将其解压到D:\software\kafka_2.11-1.1.0目录

第二步:启动服务

kafka依赖于zookeeper,所以,需要先启动zookeeper,使用kafka内置的脚本启动即可(可以不用自己下载)

cd D:\software\kafka_2.11-1.1.0

bin/windows/zookeeper-server-start.bat config/zookeeper.properties

然后会发下,报错了,报错内容如下:

错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_152\lib;D:\software\kafka_2.11-1.1.0\libs\aopalliance-repackaged-2.5.0-b32.jar;D:\software\kafka_2.11-1.1.0\libs\argparse4j-0.7.0.jar;D:\software\kafka_2.11-1.1.0\libs\commons-lang3-3.5.jar;D:\software\kafka_2.11-1.1.0\libs\connect-api-1.1.0.jar;D***

原因是java的安装的目录有空格,但是,在kafka的脚本中,设置classpath的时候,没有加入双引号

修改的方法是:

找到安装目录/bin/windows/kafka-run-class.bat ,找到

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*

修改为:

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*

就是在%CLASSPATH%上加了一个双引号

然后再次尝试执行启动zookeeper的脚本,这就启动成功了

然后启动kafka:

bin/windows/kafka-server-start.bat config/server.properties

第三步:创建一个topic

我们用一个分区和一个副本创建一个名为“test”的topic:

bin/windows/kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

执行下面的命令来查看topic,可以看到刚刚创建的test的topic

.\bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
test

第四步:发送消息

Kafka带有一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。默认情况下,每行将作为单独的消息发送。

运行生产者,然后在控制台中输入几条消息发送到服务器。

bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic test

每一个就是一条消息,如果不需要再发送,就可以CTRL + C 把这个进程停掉即可

第五步:启动一个消费者

卡夫卡也有一个命令行消费者,将消息转储到标准输出。

bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

如果您将上述每个命令都在不同的终端中运行,那么您现在应该能够将消息键入生产者终端,并将它们显示在消费者终端中。

所有的命令行工具都有其他选项;在没有参数的情况下运行该命令将显示更详细地记录它们的使用信息。

第六步:设置多broker群集

首先,我们为每个broker创建配置文件:

copy config/server.properties config/server-1.properties

copy config/server.properties config/server-2.properties

然后,编辑这些新文件,并设置以下的属性:

config/server-1.properties:

broker.id=1
listeners=PLAINTEXT://:9093
log.dir=/tmp/kafka-logs-1

config/server-2.properties:

broker.id=2
listeners=PLAINTEXT://:9094
log.dir=/tmp/kafka-logs-2

broker.id属性是集群中每个节点的唯一且永久的名称。我们必须重写端口和日志目录,因为我们在同一台机器上运行这些端口和日志目录,并且我们希望让所有代理都试图在同一个端口上注册或覆盖彼此的数据。

我们已经有Zookeeper和我们的单节点了,所以我们只需要启动两个新节点:

bin/windows/kafka-server-start.bat config/server-1.properties

bin/windows/kafka-server-start.bat config/server-2.properties

现在创建一个复制因子为三的新topic:

bin/windows/kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

现在我们有一个集群,我们怎么知道哪个broker在做什么?要查看运行“描述主题”命令:

bin/windows/kafka-topics.bat --describe --zookeeper localhost:2181 --topic my-replicated-topic

这里是对输出的解释。第一行给出了所有分区的摘要,每个附加行提供了有关一个分区的信息。由于我们只有一个分区,所以只有一行。

leader是负责给定分区的所有读写操作的节点。每个节点将成为分区随机选择部分的leader

replicas是复制此分区的日志的节点列表,无论他们是领导者还是他们仅仅只活着

isr是一组同步中的副本。这是复制品列表的子集,目前活着并被引导到leader身边

请注意,在我的示例中,节点1是该主题唯一分区的leader

我们可以在我们创建的原始主题上运行相同的命令,以查看它的位置:

bin/windows/kafka-topics.bat --describe --zookeeper localhost:2181 --topic test

所以在这里并不奇怪 - 原始主题没有副本,并且在服务器0上,它是我们创建群集时唯一的服务器。

给新的主题发送一些消息:

bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic my-replicated-topic

消费这些消息:

bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic

现在,我们测试容错,因为broker1是leader,所以我们将它的进程停掉

wmic process where "caption = 'java.exe' and commandline like '%server-1.properties%'" get processid

得到的进程信息如下:

ocessid

ProcessId

8824

杀掉这个进程

> taskkill -pid 8824 -F

成功: 已终止 PID 为 8824 的进程。

leader已切换到其中一个从属节点,并且节点1不再处于同步副本集中:

> bin/windows/kafka-topics.bat --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 0 Replicas: 1,0,2 Isr: 0,2

但是即使原先写入的领导者失败,这些消息仍然可用于消费:

bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic

第七步:使用kafka的连接来导入和导出数据

从控制台写入数据并将其写回控制台是一个方便的起点,但您可能需要使用其他来源的数据或将数据从Kafka导出到其他系统。对于许多系统,您可以使用Kafka Connect导入或导出数据,而不是编写自定义集成代码。

Kafka Connect是Kafka附带的一个工具,可以将数据导入和导出到Kafka。它是一个可扩展的工具,运行连接器,实现与外部系统交互的自定义​​逻辑。在此快速入门中,我们将看到如何使用简单的连接器运行Kafka Connect,这些连接器将数据从文件导入到Kafka主题,并将数据从Kafka主题导出到文件。

首先,我们创建一些数据来作为测试数据:

echo foo> test.txt

echo bar>> test.txt

接下来,我们将启动两个以独立模式运行的连接器,这意味着它们将在单个本地专用进程中运行。我们提供三个配置文件作为参数。首先是Kafka Connect过程的配置,包含常见的配置,例如要连接的Kafka代理和数据的序列化格式。其余的配置文件都指定了要创建的连接器。这些文件包括唯一的连接器名称,要实例化的连接器类以及连接器所需的任何其他配置。

bin/windows/connect-standalone.bat config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

Kafka附带的这些示例配置文件使用您之前启动的默认本地群集配置,并创建两个连接器:第一个源连接器从输入文件中读取行,并将每个连接生成为Kafka主题,第二个连接器为连接器连接器它读取来自Kafka主题的消息,并在输出文件中将每个消息生成为一行。

在启动过程中,您会看到许多日志消息,包括一些指示连接器正在实例化的消息。一旦Kafka Connect进程启动,源连接器应该从test.txt开始读取行并将其生成到主题connect-test,并且接收器连接器应该开始读取主题connect-test中的消息并将它们写入文件测试.sink.txt。我们可以通过检查输出文件的内容来验证通过整个管道传输的数据:

test.sink.txt文件中,会出现我们在test.txt里边写入的内容,

数据存储在Kafka的一个名为connect-test的topic中,因此我们还可以运行控制台使用者以查看主题中的数据(或使用自定义使用者代码来处理它)

bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic connect-test --from-beginning

{"schema":{"type":"string","optional":false},"payload":"foo"}
{"schema":{"type":"string","optional":false},"payload":"bar"}

连接器继续处理数据,所以我们可以将数据添加到文件中,并看到它在整个管道中移动

您应该看到新添加的数据行出现在控制台消费者输出和接收器文件中

第八步:使用Kafka Streams处理数据

Kafka Streams是一个用于构建关键任务实时应用程序和微服务的客户端库,输入和/或输出数据存储在Kafka集群中。 Kafka Streams结合了在客户端编写和部署标准Java和Scala应用程序的简单性以及Kafka服务器端集群技术的优势,使这些应用程序具有高度可伸缩性,弹性,容错性,分布式等特性。本快速入门示例将演示如何运行在此库中编码的流式应用程序。

kafka 的quick start(windows平台)的更多相关文章

  1. 在Linux和Windows平台上操作MemoryMappedFile(简称MMF)

    操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段..NET 4.0新增加了一个System.IO. MemoryMap ...

  2. windows平台解决quick3.5final + sublimeText3 模拟器找不到的问题

    下载了quick3.5 准备在sublime上进行开发,结果发现quick3.5中的player模拟器不见了,原来模拟器移到了quick引擎主目录下的 /tools/simulator/runtime ...

  3. Windows平台摄像头或屏幕RTMP推送介绍:OBS VS SmartPublisher

    好多开发者问道,既然有了OBS,你们为什么还要开发SmartPublisher? 的确,在我们进行Windows平台RTMP推送模块开发之前,市面上为数不多的Windows平台RTMP推流工具当属OB ...

  4. Windows平台分布式架构实践 - 负载均衡

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  5. Windows平台分布式架构实践 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  6. 如何下载Github单个文件(Windows平台)

    如何下载Github单个文件(Windows平台) 前提 安装Chrome 浏览器 Chrome浏览器 安装迅雷软件 安装Chrome 迅雷插件 可能商店里迅雷插件有好几种,这里使用这一种 一般使用者 ...

  7. 从零起步搭建Wordpress个人博客——Windows 平台篇(上)

    本文以 Windows Server R2 64bit 标准版 为基础,其他windows版本可能会略有不同. 参考资料: https://codex.wordpress.org/Installing ...

  8. 在Github上搭建自己的博客(Windows平台)

    折腾了好久,终于在Github上搭建了自己的博客.这里面总结一下过程希望对大家能有所帮助. Github建博优缺点 和 csdn,新浪,网易相比,在Github上可以自己实现功能 和阿里云,VPS相比 ...

  9. Windows平台分布式架构实践 - 负载均衡 上

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

随机推荐

  1. AngularJS orderBy 使用要点

    AngularJS orderBy 使用要点总结: 1,书写格式 基本应用格式为: ng-repeat="item in itemList | orderBy:p1:p2" 参数p ...

  2. 安卓开发笔记——打造万能适配器(Adapter)

    为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需 ...

  3. 【WP8】让TextBox文本支持滑动(Scroll)

    通过修改样式让TextBox支持文本滑动 在Silverlight上,TextBox是有文本滚动的功能的,当TextBox的文本过长时,可以进行拖动的,TextBox使用 VerticalScroll ...

  4. 9 云计算系列之Cinder的安装与NFS作为cinder后端存储

    preface 在前面我们知道了如何搭建Openstack的keystone,glance,nova,neutron,horizon这几个服务,然而在这几个服务中唯独缺少存储服务,那么下面我们就学习块 ...

  5. hive 表优化

    一.外部表和内部表的区别 (1)创建表时指定external关键字,就是外部表,不指定external就是内部表 (2)内部表删除后把元数据和数据都删除了,外部表删除后只是删除了元数据,不会删除hdf ...

  6. nagios安装check_linux_stats.pl插件报错Can't locate Sys/Statistics/Linux.pm in @INC的处理?

    问题描述: 今天想有没有监控主机内存的插件可以供nagios来使用,然后找到一个插件check_linux_stats.pl 但是在将脚本上传之后,执行的时候报错 [root@testvm02 lib ...

  7. Log4net用法(.config文件)

    1.引用log4net.dll 2.在AssemblyInfo.cs中添加初始化: [assembly: log4net.Config.XmlConfigurator(ConfigFile = &qu ...

  8. ios开发之--仿购物类详情页面数量添加小功能

    话不多说先上图:

  9. 查看本地RF版本号

    在CMD下执行:pybot --version

  10. Zabbix的自定义键值和自动发现功能监控Oracle数据库的表空间

    前面介绍了利用Orabbix监控了,参考zabbix通过Orabbix监控oracle数据库,这里我们原先的模板中进行了修改,使用自动发现功能实现监控tablespace的使用情况. 1. 在被监控的 ...