单服务器Centos环境下Kafka (zookeeper)的安装搭建和基本使用
创始人
2024-09-26 09:20:34
0

一、单服务器Centos环境下Kafka (zookeeper)的安装搭建和基本使用

     1. Kafka版本:2.0.0的下载安装

    安装前的基本环境检查和准备,我这里的服务器系统是CentOS release 6.8 (Final),准备安装Kafka版本:2.0.0,因为kafka需要运行java环境,看了一下我服务器上已经装过了jdk,如果没有安装JDK,直接使用yum安装即可。publish:October 18, 2018 -Thursday 如下:

[root@123 download]# java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) You have new mail in /var/spool/mail/root #如果没装过,搜索一下jdk的yum源 [root@123 download]# yum search java | grep jdk ldapjdk-javadoc.x86_64 : Javadoc for ldapjdk java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment with full debug on java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos with full debug on java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment with java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK API Documentation for packages java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle for packages with ldapjdk.x86_64 : The Mozilla LDAP Java SDK #执行yum 安装JDK. [root@123 download]# yum install java-1.8.0-openjdk 

        kafaka的官网地址:http://kafka.apache.org/downloads.html  自己选择版本下载,我这里使用的是kafka-2.0.0-src.tgz。下面进行下载kafka安装:

[root@123 download]# cd /opt/download/ [root@123 download]# mwget http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz Begin to download: kafka_2.11-2.0.0.tgz FileSize:  53M 100% [===================] [ 53M] [163K/s] [ETA:00:00]Download successfully in 01:35 M:S [root@123 download]# tar zxvf kafka_2.11-2.0.0.tgz  -C /opt/modules/ [root@123 modules]# cd /opt/modules/kafka_2.11-2.0.0/ [root@123 kafka_2.11-2.0.0]# ll total 52 drwxr-xr-x 3 root root  4096 Jul 24 22:19 bin drwxr-xr-x 2 root root  4096 Jul 24 22:19 config drwxr-xr-x 2 root root  4096 Oct 18 10:49 libs -rw-r--r-- 1 root root 28824 Jul 24 22:17 LICENSE -rw-r--r-- 1 root root   336 Jul 24 22:17 NOTICE drwxr-xr-x 2 root root  4096 Jul 24 22:19 site-docs

    kafka压缩包里的文件夹内容和功能一目了然,bin存放kafka的可执行脚本,config配置目录,libs依赖库目录。另外kafka是使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。broker会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新。客户端会在zookeeper上注册相关的watcher。一旦zookeeper发生变化,客户端能及时感知并作出相应调整。这样就保证了添加或去除broker时,各broker间仍能自动实现负载均衡。这里的客户端指的是Kafka的消息生产端(Producer)和消息消费端(Consumer),有点像你用php连接多台mysql从时中间使用的proxy一样,后端mysql变化时不用修改php,只需要修改proxy。可以看到bin目录下有zookeeper的启动程序,因此接下来要对zookeeper和kafka进行配置。

   2.  配置zookeeper和kafka

    关于zookeeper,Kafka中已经自带zookeeper,无需去另外下载安装,只需要编辑config/zookeeper.properties的配置文件直接启动即可。关于kafka配置,进入kafka目录下config文件夹里,编辑server.properties文件。kafka的server端最重要三个配置为:broker.id,log.dir,zookeeper.connect,在配置文件config/server.properties中各参数有详细说明。
配置好后,最后是运行kafka,启动kafka之前要先启动zookeeper,不然启动kafka会进行多次尝试连接zookeeper失败后关闭。ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
#启动zookeeper,可看一下配置zookeeper.properties,这里使用默认即可

[root@123 config]# cd ../ [root@123 kafka_2.11-2.0.0]# bin/zookeeper-server-start.sh config/zookeeper.properties & #启动kafka [root@123 kafka_2.11-2.0.0]# bin/kafka-server-start.sh config/server.properties &

     但这时报错:/opt/modules/kafka_2.11-2.0.0/bin/kafka-run-class.sh: line 306: exec: java: not found。就在想这是什么问题,开始怀疑是java的path配置文件,就去查看/etc/profile 没有发现什么路径问题,那这报错是明显是程序里找不到java.于是执行下面的命令,然后就成功启动了kafka了。如下:

[root@123 bin]# which java /opt/modules/java/jdk/jdk1.8.0_171/bin/java [root@123 bin]# sudo ln -s /opt/modules/java/jdk/jdk1.8.0_171/bin/java /usr/bin/java [root@123 kafka_2.11-2.0.0]# bin/kafka-server-start.sh config/server.properties & .... [2018-10-18 12:06:26,175] INFO [SocketServer brokerId=0] Started processors for 1 acceptors (kafka.network.SocketServer) [2018-10-18 12:06:26,178] INFO Kafka version : 2.0.0 (org.apache.kafka.common.utils.AppInfoParser) [2018-10-18 12:06:26,180] INFO Kafka commitId : 3402a8361b734732 (org.apache.kafka.common.utils.AppInfoParser) [2018-10-18 12:06:26,184] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

3. kafka的简单运用实践

     现在开始简单运用一下kafka,在此之前记录一下kafka的基本词语:

producer:生产者
consumer:消费者
#上面这两个名词和其它的队列一样。下面的这名词它得整了一个新东东,实际和beanstalkd里面的tube以及rabbitmq里面的queue等差不多,就当一个消息分类。
topic: 消息以topic为类别记录,Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。
broker:以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker;消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。每个消息(也叫作record记录,也被称为消息)是由一个key,一个value和时间戳构成。

    最后创建一个队列主题topic:kermitMQ,并使用list选项显示当前的topic,然后启动生产者和消费者在终端进行message进行生产(输入)和消费(输出)。

[root@123 bin]# ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kermitMQ     Created topic "kermitMQ". [root@123 bin]# ./kafka-topics.sh --list --zookeeper localhost:2181 kermitMQ [root@123 bin]# #启动生产者 [root@123 bin]# ./kafka-console-producer.sh --broker-list localhost:9092 --topic kermitMQ #在另一个窗口启动消费者,但提示zookeeper是一个不可识别的选项。如下: [root@123 bin]# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kermitMQ --from-beginning  zookeeper is not a recognized option #是因为kafka的版本问题,新版本不再使用--zookeeper,而使用--bootstrap-server [root@123 bin]# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kermitMQ --from-beginning

     在启动消费者,kafka有版本差异问题,新版本不再使用--zookeeper,而使用--bootstrap-server,所以新版本里如果使用--zookeeper会提示zookeeper是一个不可识别的选项。zookeeper is not a recognized option生产者和消费者都启动之后,在生产者界面输入任何内容后在消费者端就能出现生产者端输入的内容。这样kafka的简易环境就算搭建完成了。

相关内容

热门资讯

交流学习经验!微乐麻将专用挂,... 交流学习经验!微乐麻将专用挂,wpk透视辅助哪里下载,详细教程(有挂了解)-哔哩哔哩;1、完成wpk...
科技通报!we-poker软件... 科技通报!we-poker软件(透视脚本)透视辅助最新版(2023已更新)(哔哩哔哩);亲真的是有正...
六分钟透明挂!德州辅助软件开发... 六分钟透明挂!德州辅助软件开发定制外挂透明挂软件,Wepoke私人局软件透明挂,详细教程(有挂平台)...
十分钟计算器!wepoker好... 十分钟计算器!wepoker好友局透视(透视),wepoKEr透视辅助安装,透明挂教程(有挂插件);...
每日必备((wpk))poke... 每日必备((wpk))pokerworld软件(辅助挂)外挂透明挂辅助助手(2021已更新)(哔哩哔...
热点推荐神器!牵手跑得快是有外... 热点推荐神器!牵手跑得快是有外挂(辅助挂)原来是有挂辅助挂(2025已更新)(哔哩哔哩);牵手跑得快...
1.9分钟了解!wepoker... 1.9分钟了解!wepoker辅助器弄(透视脚本)辅助透视必胜(2025已更新)(哔哩哔哩);致您一...
三分钟透明挂!来玩德州app辅... 您好,wpk后台这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在这款游...
总算了解!微信财神十三张辅助器... 您好,微扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏中...
三分钟轻量版!wepoker透... 三分钟轻量版!wepoker透视脚本安卓(透视挂),wepOkEr透视挂免费,科技教程(有挂软件);...