Kafka学习笔记之confluent platform入门
0x00 下载
http://www.confluent.io/download,打开后,显示最新版本3.0.0,然后在右边填写信息后,点击Download下载。

之后跳转到下载页面,选择zip 或者 tar都行, 下载完成后上传linux系统,解压即完成安装。
- zip and tar archives– 推荐OS X 和 Quickstart
- deb packages via apt – 推荐安装服务在 Debian/Ubuntu系统
- rpm packages via yum – 推荐安装服务在 RHEL/CentOS/Fedora系统
- deb/rpm packages with installer script
Confluent 目前还不支持Windows系统。Windows用户可以下载和使用zip 和 tar包,但最好直接运行jar文件 ,而不是使用包装脚本。
0x01 Requirements
唯一需要的条件是java 版本>=1.7。
0x02 Confluent Platform快速入门
你可以快速的运行Confluent platform在单台服务器上。在这篇quickstart,我们将介绍如何运行ZooKeeper,Kafka,和Schema Registry,然后如何读和写一些Avro数据从/到Kafka。
(如果你想跑一个数据管道用Kafka Connect和Control Center,参考The Control Center QuickStart Guide.)我们随后也会介绍。
1.下载和安装Confluent platform。在这篇quickstart 我们使用zip包,也有很多其他安装方式,见上。
$ wget http://packages.confluent.io/archive/3.0/confluent-3.0.0-2.11.zip
$ unzip confluent-3.0.-2.11.zip
$ cd confluent-3.0.
下边展示的是安装目录里上层层级结构:
confluent-3.0./bin/ # Driver scripts for starting/stopping services
confluent-3.0./etc/ # Configuration files
confluent-3.0./share/java/ # Jars
如果你通过deb或者rpm安装,目录结构如下:
/usr/bin/ # Driver scripts for starting/stopping services, prefixed with <package> names
/etc/<package>/ # Configuration files
/usr/share/java/<package>/ # Jars
2.启动Zookeeper。因为这是长期运行的服务,你应该运行它在一个独立的终端(或者在后边运行它,重定向输出到一个文件中)。你需要有写权限到/var/lib在这一步以及之后的步骤里:
# The following commands assume you exactly followed the instructions above.
# This means, for example, that at this point your current working directory
# must be confluent-3.0./.
$ ./bin/zookeeper-server-start ./etc/kafka/zookeeper.properties
3.启动Kafka,同样在一个独立的终端。
$ ./bin/kafka-server-start ./etc/kafka/server.properties
4.启动Schema Registry,同样在一个独立的终端。
$ ./bin/schema-registry-start ./etc/schema-registry/schema-registry.properties
5.现在所有需要的服务都已启动,我们发送一些Avro数据到Kafka的topic中。虽然这一步一般会得到一些数据从一些应用里,这里我们使用Kafka提供的例子,不用写代码。我们在本地的Kafka集群里,写数据到topic “test”里,读取每一行Avro信息,校验Schema Registry .
$ ./bin/kafka-avro-console-producer \
--broker-list localhost: --topic test \
--property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}'
一旦启动,进程等待你输入一些信息,一条一行,会发送到topic中一旦按下enter键。试着输入一些信息:
{"f1": "value1"}
{"f1": "value2"}
{"f1": "value3"}
输入完成后,可以使用Ctrl+C来终止进程。
Note:如果一个空行你按下Enter键,会被解释为一个null值,引起错误。然后仅仅需要做的是启动producer进程,接着输入信息。
6.现在我们可以检查,通过Kafka consumer控制台读取数据从topic。在topic ‘test'中,Zookeeper实例,会告诉consumer解析数据使用相同的schema。最后从开始读取数据(默认consumer只读取它启动之后写入到topic中的数据)
$ ./bin/kafka-avro-console-consumer --topic test \
--zookeeper localhost: \
--from-beginning
你会看到你之前在producer中输入的数据,以同样的格式。
consumer不会退出,它可以监听写入到topic中的新数据。保持consumer运行,然后重复第5步,输入一些信息,然后按下enter键,你会看到consumer会立即读取到写入到topic中的数据。
当你完成了测试,可以用Ctrl+C终止进程。
7.现在让我们尝试写一些不兼容的schema的数据到topic ’test‘中,我们重新运行producer命令,但是改变schema。
$ ./bin/kafka-avro-console-producer \
--broker-list localhost:9092 --topic test \
--property value.schema='{"type":"int"}'
现在输入一个整数按下enter键,你会看到以下的异常:

org.apache.kafka.common.errors.SerializationException: Error registering Avro schema: "int"
Caused by: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: Schema being registered is incompatible with the latest schema; error code:
at io.confluent.kafka.schemaregistry.client.rest.utils.RestUtils.httpRequest(RestUtils.java:)
at io.confluent.kafka.schemaregistry.client.rest.utils.RestUtils.registerSchema(RestUtils.java:)
at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.registerAndGetId(CachedSchemaRegistryClient.java:)
at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.register(CachedSchemaRegistryClient.java:)
at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:)
at io.confluent.kafka.formatter.AvroMessageReader.readMessage(AvroMessageReader.java:)
at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:)
at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala)

当producer试图发送一些信息,它会检查schema用Schema Registry。当返回错误时说明现在的schema无效,因为它不能兼容之前设置的schema。控制台打印出错误信息并退出,但是你自己的应用可以更加人性化处理这类问题。但最重要的是,我们保证不让不兼容的数据写入到Kafka中。
8.当你完成这一系列测试,你可以使用ctrl+c来关闭服务,以启动时相反的顺序。
这一简单的教程包含了Kafka和Schema Registry这一些核心的服务。你也可以参考以下document:
Kafka学习笔记之confluent platform入门的更多相关文章
- kafka学习笔记(一)消息队列和kafka入门
概述 学习和使用kafka不知不觉已经将近5年了,觉得应该总结整理一下之前的知识更好,所以决定写一系列kafka学习笔记,在总结的基础上希望自己的知识更上一层楼.写的不对的地方请大家不吝指正,感激万分 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- 【转载】【时序约束学习笔记1】Vivado入门与提高--第12讲 时序分析中的基本概念和术语
时序分析中的基本概念和术语 Basic concept and Terminology of Timing Analysis 原文标题及网址: [时序约束学习笔记1]Vivado入门与提高--第12讲 ...
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer
Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer: 启动Zookeeper 启动Kafka0.11 创建一个新的Topic: ./kafk ...
- 大数据 -- kafka学习笔记:知识点整理(部分转载)
一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...
随机推荐
- emq数据库插件
- git bash 报错bash: *: command not found
默认安装的git bash某些功能是没有的,比如zip,在git bash下执行zip和unzip命令时会报错命令找不到,但值得庆幸的是,我们可以安装我们需要的命令,以下以zip命令为例,步骤如下: ...
- 如何更新clob类型的内容
一.手工测试流程: 1.测试需求(待执行用例) 2.标准化测试流程 1/5 --修改 result_info --用户风控信息表 select sysdate,t.*,t.rowid from fin ...
- 利用Tensorflow实现逻辑回归模型
官方mnist代码: #下载Mnist数据集 import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read ...
- centos 6.x下编译dpdk 16.7 心得
之前对dpdk编译了解得较少,之前直接就把centos yum update了,造成测试经理部署的centos 6.5升级为6.9,造成dpdk编译出错. 先说说centos 6.9下编译的心得: 1 ...
- cocos2d-x c++ (多种屏幕Android与iOS的适配原理)
1.AppDelegate.cpp 文件中 bool AppDelegate::applicationDidFinishLaunching() { // initialize director aut ...
- Spark实战记录
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~PipelineExample winutils.exe java.lang.NullPointException~~~~~~~~~~~~~ ...
- js执行上下文
js在执行是会有一个“准备工作”: 主要内容有 1.变量.函数表达式——>变量声明,默认赋值为undefined: 2.this——>赋值: 3.函数声明——>赋值: 这三种数据的准 ...
- jquery $.ajax $.get $.post的区别?
$.ajax 是 jQuery 底层 AJAX 实现,$.ajax是一种通用的底层封装,$.ajax()请求数据之后,则需要使用回调函数,有beforeSend.error.dataFilter.su ...
- B树,B+树,B*树以及R树的介绍
https://blog.csdn.net/peterchan88/article/details/52248714 作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开 ...