部署环境Linux(Centos 6.5),JDK 1.8.0,zookeeper-3.4.12,kafka_2.11-2.0.0。

1. 单机环境

    官方建议使用JDK 1.8版本,因此本文使用的环境都是JDK1.8。如果小于1.8版本,请看我的博客:https://www.cnblogs.com/xuejiale/p/10504845.html 将环境的JDK更新到1.8版本。(PS:我开始使用机器默认安装的JDK 1.7,在启动kafka时会报错)。

由于Kafka依赖zookeeper,kafka通过zookeeper实现分布式系统的协调,所以我们需要先安装zookeeper。下面开始安装zookeeper:

(1)安装zookeeper

1)下载zookeeper并解压

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/,我下载的是 zookeeper-3.4.12.tar.gz

2)创建zookeeper配置文件

在zookeeper解压后的目录下找到conf文件夹,进入后,复制文件zoo_sample.cfg,并命名为zoo.cfg。zoo.cfg中一共四个配置项,可以使用默认配置。注意配置文件里面有一个dataDir可以修改成你自己的目录。

3)启动 zookeeper

进入zookeeper根目录执行 ./bin/zkServer.sh start,其他操作 start, stop, restart

[root@centos zookeeper-3.4.]# ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/xuejiale/kafka_env/zookeeper-3.4./bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

(2)安装 kafka

1) 下载kafka并解压

下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.11-2.0.0.tgz,我下载的是:kafka_2.11-2.0.0.tgz

2) 修改kafka的配置文件

进入kafka根目录下的config文件夹下,打开server.properties,修改如下配置项,当然也可以修改 log.dirs 为其他路径。

zookeeper.connect=localhost:
broker.id=
log.dirs=/tmp/kafka-logs

zookeeper.connect是 zookeeper 的链接信息,broker.id 是当前 kafka 实例的 id,log.dirs 是 kafka 存储消息内容的路径。

3)启动kafka

进入kafka根目录执行 ./bin/kafka-server-start.sh ./config/server.properties,config/server.properties配置项为配置项。

[root@centos kafka_2.-2.0.]# ./bin/kafka-server-start.sh ./config/server.properties

启动kafka后,如果控制台没有报错信息,则kafka已经成功启动,我们可以通过查看zookeeper中相关节点值来确认。步骤如下:

  • 启动zookeeper的client

进入zookeeper根目录下,执行 bin/zkCli.sh -server 127.0.0.1:2181。启动后如下:

  • 输入命令 ls /brokers,回车,可以看到如下信息:

还记得我们在配置单机环境时,修改的kafka配置项broker.id=0 吗?这里的0就是表示那个kafka的实例已经加入了kafka集群。

2. 集群环境
    集群环境的搭建也很简单,在单机环境的基础上,让多个单机连接到同一个zookeeper即可。需要注意两点:
 (1)每个实例设置不同的broker.id。
 (2)如果多个实例部署在同一台服务器,还要注意修改log.dirs为不同目录,确保消息存储时不会有冲突。

3. kafka 接收消息

我们通过kafka带的工具来创建一个topic,然后尝试发送和消费一个消息,直观的去感受下kafka。

(1)创建topic

进入kafka根目录,执行如下命令:

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafkaTest

此命令行有几个参数,分别指明了zookeeper的链接信息,分区和副本的数量等。

执行成功后,创建了 kafkaTest 这个topic,如下图所示:

(2)启动消费者

进入kafka根目录,开启一个消费者并且订阅 kafkaTest 这个topic,执行如下命令:

./bin/kafka-console-consumer.sh --bootstrap-server localhost: --topic kafkaTest  --from-beginning

看到如下图,光标停留在最前面,没有任何信息输出,说明启动消费者成功,此时在等待新的消息。

(3)开启生产者

新开一个窗口,进入kafka根目录,输入如下命令:

./bin/kafka-console-producer.sh --broker-list localhost: --topic kafkaTest

启动成功后,如下图,等待你输入新的消息:

(4)发送消息

生产者:在上面生产者的窗口输入一条消息 hello kafka,点击回车,如下图:

消费者:此时切换到消费者的窗口,可以看到消费者已经消费到这条消息,在窗口中打印了出来:

总结:本节搭建起kafka单机环境,然后通过kafka自带的工具,直观的感受了kafka运转的整个过程,经历了创建topic、启动生产者、启动消费者、生产者生产消息、消费者消费消息,这几个步骤。后面将会分析kafka的设计理念和原理。

kafka数据存储:https://www.cnblogs.com/jun1019/p/6256514.html

安装kafka遇到问题及解决方法:

问题1:启动kafka报如下错误?

解决方法:JDK版本小于1.8,将当前环境JDK更新到1.8

问题2:使用 kafka 创建 topic报如下错误?

解决方法:没有启动zookeeper,启动之后再启动 kafka 即可。

问题3:在启动kafka时报未知的名称或者服务?

解决方法:这是由于无法识别机器名(centos)在/etc/hosts中增加下面红色部分。

192.168.30.134 centos localhost
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6

问题4:在启动 kafka 时报找不到java?

解决方法:启动 kafka 等脚本中会使用JAVA环境变量, 要在/etc/profile中设置环境变量。

JAVA_HOME=/usr/jdk
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
JAVA=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH JAVA

参考文献:

  • https://blog.csdn.net/liyiming2017/article/details/82790574
  • http://kafka.apache.org/ (官网)

Kafka学习之二 Kafka安装和使用的更多相关文章

  1. kafka学习2:kafka集群安装与配置

    在前一篇:kafka学习1:kafka安装 中,我们安装了单机版的Kafka,而在实际应用中,不可能是单机版的应用,必定是以集群的方式出现.本篇介绍Kafka集群的安装过程: 一.准备工作 1.开通Z ...

  2. kafka学习1:kafka安装

    一.环境准备 1.jdk 如果不会安装linux下的jdk,参考这篇文章:http://www.cnblogs.com/gudi/p/7812033.html   2.kafka wget –c ht ...

  3. kafka学习(二)-------- 什么是Kafka

    通过Kafka的快速入门 https://www.cnblogs.com/tree1123/p/11150927.html 能了解到Kafka的基本部署,使用,但他和其他的消息中间件有什么不同呢? K ...

  4. Kafka学习(二)

    作者:程序员cxuan链接:https://www.zhihu.com/question/53331259/answer/1262483551来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  5. kafka 学习(二--前言)

    kafka 现在在企业应用和互联网项目中的应用越来越多了,本篇文章就从 kafka 的基础开始带你一展 kafka 的宏图 1. 什么是 Kafka Kafka 是一个分布式流式平台,它有三个关键能力 ...

  6. Kafka学习笔记之Kafka背景及架构介绍

    0x00 概述 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不 ...

  7. 【kafka学习之五】kafka运维:kafka操作日志设置和主题删除

    一.操作日志 首先附上kafka 操作日志配置文件:log4j.properties 根据相应的需要设置日志. #日志级别覆盖规则 优先级:ALL < DEBUG < INFO <W ...

  8. 【kafka学习之三】kafka集群运维

    kafka集群维护一.kafka集群启停#启动kafka/home/cluster/kafka211/bin/kafka-server-start.sh -daemon /home/cluster/k ...

  9. Kafka学习笔记之Kafka性能测试方法及Benchmark报告

    0x00 概述 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka ...

随机推荐

  1. 大课深度复盘、解密研发效率之道 | 第42届MPD工作坊成都站日程公布!

    互联网时代,随着区块链.大数据.人工智能等技术的快速发展,产品迭代速度飞快.在这样的市场环境下,提升研发效率.降低研发成本,同时支撑业务的快速发展,是每个企业都追求的目标之一. 大中型企业如何快速转型 ...

  2. 自动重置Language level 5 与 Java Complier 1.5

    Intellij IDEA用Maven来构建项目,若pom.xml没有指定版本,总是默认Language level 5 与 Java Compiler 1.5. 以下是两种修改方式: 1. 手动进行 ...

  3. sql server调优

    SQLServer调优:查询语句运行几个指标值监测\ https://www.cnblogs.com/zhijianliutang/p/4179110.html

  4. IIS下载无后缀文件的设置

    HTTP 错误 404.3 - Not Found由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序.如果应下载文件,请添加 MIME 映射.   解决方法:MIME类型加 .  ...

  5. IO流的总结(一)

    IO流的介绍: 其实在我们现实生活中有很多流,例如:水流,电流,气流  等等都是是流,但在Java中IO流是指对数据的操作的流. 按照流的分类: 1:字节流和字符流 Reader和InputStrea ...

  6. caffe-ssd安装GPU版本和CPU的区别

    在CPU中1.CPU_ONLY :=1的注释取消掉 2.BLAS := atlas 在GPU中 1.USE_CUDNN := 1的注释取消 2.BLAS := open

  7. Form数据迁移

    --------------------------------------添加linkserver--------------------------------------- --EXEC mas ...

  8. https://scrapingclub.com/exercise/detail_sign/

    def parse(self, response): # pattern1 = re.compile('token=(.*?);') # token = pattern1.findall(respon ...

  9. 事件冒泡以及onmouseenter 和 onmouseover 的不同

    1. onmouseenter onmouseenter 事件在鼠标指针移动到元素上时触发. 该事件通常与 onmouseleave 事件一同使用, 在鼠标指针移出元素上时触发. onmouseent ...

  10. Windows cmd 一些命令

    运行是Windows的必要组成部分,可以简单理解为一个应用程序快速调用的组件.通过“运行”窗口,可以调用Windows中任何应用程序甚至DOS命令.一般可以搜索百度百科 微软件(窗口) + R    ...