单服务器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的简易环境就算搭建完成了。

相关内容

热门资讯

据权威媒体报道!随意玩辅助工具... 据权威媒体报道!随意玩辅助工具透视,wepoker安装教程(透视)都是存在有辅助神器(哔哩哔哩)1、...
解密透视!德普之星透视辅助软件... 解密透视!德普之星透视辅助软件下载,德普之星有辅助软件吗,竟然存在有辅助app(哔哩哔哩)1、有没有...
透视教程"wepok... 透视教程"wepoker辅助是真的吗"wepoker网页版透视方法(竟然真的有辅助安装)-哔哩哔哩1...
突发!德友汇开挂脚本,广东闲来... 突发!德友汇开挂脚本,广东闲来辅助软件(真是真的是有安装)-哔哩哔哩1、每一步都需要思考,不同水平的...
此事迅速冲上热搜!福建兄弟13... 此事迅速冲上热搜!福建兄弟13水辅助,wepoker透视app下载(透视)一贯真的是有辅助工具(哔哩...
据报道"哈糖大菠萝破... 据报道"哈糖大菠萝破解器"sohoo poker辅助器(本来是有辅助修改器)-哔哩哔哩所有人都在同一...
揭露透视!wpk透视辅助下载,... 揭露透视!wpk透视辅助下载,wpk私人局辅助是真的吗,确实是真的有辅助方法(哔哩哔哩)进入游戏-大...
网友热议!赣牌圈小程序辅助器,... 网友热议!赣牌圈小程序辅助器,点点长牌源码(其实是有挂)-哔哩哔哩1、下载好赣牌圈小程序辅助器脚本下...
今天下午!全托中至窝龙拿好牌,... 今天下午!全托中至窝龙拿好牌,hhpoker软件靠谱吗(透视)其实是有辅助软件(哔哩哔哩)1、全托中...
据文件显示"wepo... 据文件显示"wepoker私人局外卦"德州机器人代打脚本(总是是真的辅助平台)-哔哩哔哩1、据文件显...