部署环境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.12]# ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/xuejiale/kafka_env/zookeeper-3.4.12/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:2181
broker.id=0
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.11-2.0.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:9092 --topic kafkaTest  --from-beginning

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

(3)开启生产者

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

./bin/kafka-console-producer.sh --broker-list localhost:9092 --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
::1 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/ (官网)

转载于:https://www.cnblogs.com/xuejiale/p/10505391.html

Kafka学习之二 Kafka安装和使用相关推荐

  1. Kafka学习 之 理解Kafka集群(二)

    在学习之前,已经假设已经成功搭建了Kafka集群,开始下面的学习: 1. 理论学习 broker:生产环境中,一台服务器上只会安装一个 Kafka 软件,这台服务器就是一个 Kafka Server, ...

  2. Kafka学习笔记——使用Kafka记录APP的操作日志

    上一篇文章我们讲到了Kafka的工作原理和如何使用Kafka的代码示例,这里我们开始讲解Kafka的实战,在实际的应用中我们如何使用kafka的.下面将介绍前台的操作日志定时推送到kafka,然后通过 ...

  3. kafka学习(二)kafka工作流程分析

    本文借鉴:再过半小时,你就能明白kafka的工作原理了(特此感谢!) 一.发送数据 PS:Producer在写入数据的时候永远的找leader,不会直接将数据写入follower 1.follower ...

  4. Python学习笔记|二.Python安装教程

    Python 安装教程 Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 安装Pyth ...

  5. 人工智能学习(二)安装tensorflow与pytorch

    安装tensorflow与pytorch 前提: 已安装完Anaconda 这⾥主要使⽤ Windows 中的Anaconda Prompt 进⾏安装,因为在Linux.Mac通⽤也是⼤同⼩异的 第一 ...

  6. WSO2 ESB 学习(二) ---安装篇

    1:先决条件 2:下面的步骤将带领你在windows上安装WSO2 ESB 下载 WSO2 ESB二进制包. 解压zip包到年装好的 WSO2 ESB 设置 JAVA_HOME 环境变量和PATH环境 ...

  7. Kafka学习笔记:Kafka的Topic、Partition和Message

    Kafka的Topic和Partition Topic Topic是Kafka数据写入操作的基本单元,可以指定副本 一个Topic包含一个或多个Partition,建Topic的时候可以手动指定Par ...

  8. 肖锰:浪潮GS开发平台学习札记(二)——服务器端安装补充及客户端下载安装配置

    服务器端安装出现的问题汇总: 1.  XP下无法启动COM+组件,原因:用户权限不够. 2.  卸载中间件时有可能出现服务无法卸载的情况(体现在重新安装时提示卸载服务) 3.  XP下IIS的问题(没 ...

  9. 大数据 -- kafka学习笔记:知识点整理(部分转载)

    一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...

最新文章

  1. gta5显示nat较为严格_报告显示,中国超七成企业正在使用灵活用工
  2. 路由个数据包转发简介
  3. redis哨兵集群的搭建
  4. C语言数组中找到第一个重复元素的算法(附完整源码)
  5. linux x和s 的区别,Hadoop1.x和2.X的HDFS fsimage和edits文件运行机制对比
  6. ssl1333-地鼠的困境【二分图,最大匹配,图论】
  7. tlwr886n发挥最大网速_路由器中的2.4G和5G有什么区别?用错了网速变“龟速”
  8. mysql外键排序规则_mysql创建外键出错(注意数据库表字段排序)
  9. JDK的bug导致Java文件删除不了,必须fgc
  10. 开课吧:为什么指针被誉为C语言灵魂?
  11. 浏览器输入网址回车发生的事情?--
  12. java怎么复制别人的数据库_数据库实现主从复制
  13. webview 禁用横竖屏切换_JS禁止横竖屏切换,强制横竖屏显示
  14. python风变编程是骗局吗-请问风变编程的Python课怎么样?
  15. 2013年IT界25个最古怪的面试题
  16. 拓扑量子计算机有缺点,一个荷兰硕士生的新模型有助于描述量子计算机中的缺陷和错误...
  17. 以图搜图-自动生成图模式匹配Cypher
  18. ​社交产品盈利方式产品模式设计案例
  19. 2018年中考计算机考试成绩,2018年中考分数线
  20. 图形图像-无中生有Photoshop CS6背景素材技法ps教程 [超多案例]-韦语洋(Lccee)-专题视频课程...

热门文章

  1. ibm mq qname java_IBMMQ 从队列获取消息并将消息发送到特定主题上面
  2. onenetsim定位功能吗_餐饮空间的设计原则和特点,你了解吗?
  3. 小乌龟同步主支代码_《我的世界》游戏理论:人类,有没有可能就是一串“代码”?...
  4. 远程开启admin$共享(远程管理需开启如dameware软件)
  5. zabbix的入门与配置
  6. hacker基础教程
  7. 封装算法: 模板方法(Template Method)模式
  8. PowerShell 开启无线热点
  9. [UML]UML系列——时序图(顺序图)sequence diagram
  10. 关于tomcat不能启动的问题(NB:JAVA_HOME should point to a JDK not a JRE)