centos 启动 kafka,centos7下载地址

本篇文章给大家谈谈centos 启动 kafka,以及centos7下载地址对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

3分钟带你彻底搞懂 Kafka

Kafka到底是个啥?用来干嘛的?

官方定义如下:

翻译过来,大致的意思就是,这是一个实时数据处理系统,可以横向扩展,并高可靠!

实时数据处理,从名字上看,很好理解,就是将数据进行实时处理,在现在流行的微服务开发中,最常用实时数据处理平台有 RabbitMQ、RocketMQ等消息中间件。

这些中间件,最大的特点主要有两个:

在早期的 web应用程序开发中,当请求量突然上来了时候,我们会将要处理的数据推送到一个队列通道中,然后另起一个线程来不断轮训拉取队列中的数据,从而加快程序的运行效率。

但是随着请求量不断的增大,并且队列通道的数据一致处于高负载,在这种情况下,应用程序的内存占用率会非常高,稍有不慎,会出现内存不足,造成程序内存溢出,从而导致服务不可用。

随着业务量的不断扩张,在一个应用程序内,使用这种模式已然无法满足需求,因此之后,就诞生了各种消息中间件,例如 ActiveMQ、RabbitMQ、RocketMQ等中间件。

采用这种模型,本质就是将要推送的数据,不在存放在当前应用程序的内存中,而是将数据存放到另一个专门负责数据处理的应用程序中,从而实现服务解耦。

消息中间件:主要的职责就是保证能接受到消息,并将消息存储到磁盘,即使其他服务都挂了,数据也不会丢失,同时还可以对数据消费情况做好监控工作。

应用程序:只需要将消息推送到消息中间件,然后启用一个线程来不断从消息中间件中拉取数据,进行消费确认即可!

引入消息中间件之后,整个服务开发会变得更加简单,各负其责。

Kafka本质其实也是消息中间件的一种,Kafka出自于 LinkedIn公司,与 2010年开源到 github。

LinkedIn的开发团队,为了解决数据管道问题,起初采用了 ActiveMQ来进行数据交换,大约是在 2010年前后,那时的 ActiveMQ还远远无法满足 LinkedIn对数据传递系统的要求,经常由于各种缺陷而导致消息阻塞或者服务无法正常访问,为了能够解决这个问题,LinkedIn决定研发自己的消息传递系统, Kafka由此诞生。

在 LinkedIn公司,Kafka可以有效地处理每天数十亿条消息的指标和用户活动跟踪,其强大的处理能力,已经被业界所认可,并成为大数据流水线的首选技术。

先来看一张图,下面这张图就是 kafka生产与消费的核心架构模型!

如果你看不懂这些概念没关系,我会带着大家一起梳理一遍!

简而言之,kafka本质就是一个消息系统,与大多数的消息系统一样,主要的特点如下:

与 ActiveMQ、RabbitMQ、RocketMQ不同的地方在于,它有一个**分区 Partition**的概念。

这个分区的意思就是说,如果你创建的 topic有5个分区,当你一次性向 kafka中推 1000条数据时,这 1000条数据默认会分配到 5个分区中,其中每个分区存储 200条数据。

这样做的目的,就是方便消费者从不同的分区拉取数据,假如你启动 5个线程同时拉取数据,每个线程拉取一个分区,消费速度会非常非常快!

这是 kafka与其他的消息系统最大的不同!

和其他的中间件一样,kafka每次发送数据都是向 Leader分区发送数据,并顺序写入到磁盘,然后 Leader分区会将数据同步到各个从分区 Follower,即使主分区挂了,也不会影响服务的正常运行。

那 kafka是如何将数据写入到对应的分区呢?kafka中有以下几个原则:

与生产者一样,消费者主动的去kafka集群拉取消息时,也是从 Leader分区去拉取数据。

这里我们需要重点了解一个名词:消费组!

考虑到多个消费者的场景,kafka在设计的时候,可以由多个消费者组成一个消费组,同一个消费组者的消费者可以消费同一个 topic下不同分区的数据,同一个分区只会被一个消费组内的某个消费者所消费,防止出现重复消费的问题!

但是不同的组,可以消费同一个分区的数据!

你可以这样理解,一个消费组就是一个客户端,一个客户端可以由很多个消费者组成,以便加快消息的消费能力。

但是,如果一个组下的消费者数量大于分区数量,就会出现很多的消费者闲置。

如果分区数量大于一个组下的消费者数量,会出现一个消费者负责多个分区的消费,会出现消费性能不均衡的情况。

因此,在实际的应用中,建议消费者组的 consumer的数量与 partition的数量保持一致!

光说理论可没用,下面我们就以 centos7为例,介绍一下 kafka的安装和使用。

kafka需要 zookeeper来保存服务实例的元信息,因此在安装 kafka之前,我们需要先安装 zookeeper。

zookeeper安装环境依赖于 jdk,因此我们需要事先安装 jdk

下载zookeeper,并解压文件包

创建数据、日志目录

配置zookeeper

重新配置 dataDir和 dataLogDir的存储路径

最后,启动 Zookeeper服务

到官网 下载想要的版本,我这里下载是最新稳定版 2.8.0。

按需修改配置文件 server.properties(可选)

server.properties文件内容如下:

其中有四个重要的参数:

可根据自己需求修改对应的配置!

启动 kafka服务

创建一个名为 testTopic的主题,它只包含一个分区,只有一个副本:

运行 list topic命令,可以看到该主题。

输出内容:

Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到 Kafka集群。默认情况下,每行将作为单独的消息发送。

运行生产者,然后在控制台中键入一些消息以发送到服务器。

输入两条内容并回车:

Kafka还有一个命令行使用者,它会将消息转储到标准输出。

输出结果如下:

本文主要围绕 kafka的架构模型和安装环境做了一些初步的介绍,难免会有理解不对的地方,欢迎网友批评、吐槽。

由于篇幅原因,会在下期文章中详细介绍 java环境下 kafka应用场景!

kafka之二:手把手教你安装kafka2.8.0(绝对实用)

深入学习kafka,本文将引导您一步一步安装kafka 2.8.0版本,确保您的操作环境支持zookeeper,如需详细了解zookeeper安装,请查阅《zookeeper之二:zookeeper3.7.0安装完全指南(绝对实用)》。建议使用单独的zookeeper环境以获得更好的独立性与稳定性。

首先,请访问kafka的官方下载页面kafka.apache.org/,获取最新版本的二进制安装包。我已下载Scala 2.12版本的kafka安装包,接下来请按照以下步骤操作。

1.**安装步骤**

1.1**环境准备**:确保您的操作系统为CentOS 7(64位),已安装JDK 1.8版本,同时zookeeper已安装,版本为3.7,并配置环境变量指向zookeeper的地址,如127.0.0.1:2182、127.0.0.1:2183、127.0.0.1:2184。

1.2**修改配置文件**:解压kafka安装包后,bin目录存放启动脚本,config目录存放配置文件,libs目录存放启动依赖,logs目录存放运行日志。重点修改config/server.properties文件,配置broker.id、listeners、num.partitions、log.dirs、log.retention.hours、default.replication.factor以及zookeeper.connect。

1.3**启动单机版**:在解压目录执行启动命令,查看日志确认启动成功。若希望后台运行,使用-daemon参数启动。

1.4**启动集群版**:在至少3台虚拟机上启动集群,确保zookeeper和JDK环境配置一致。配置文件放置在config/cluster文件夹内,每个配置文件对应一台虚拟机,确保日志路径预设。

1.5**验证启动**:通过jps命令检查进程,或使用kafka自带客户端创建topic,验证集群状态。

按照上述步骤,您将成功安装并启动kafka 2.8.0版本。对于更多深入用法与优化,请参考相关技术博客与指南。

centos7中安装zookpeer和kafka(单机)

在CentOS 7服务器上安装Zookeeper和Kafka(单机模式)的过程如下:

首先,从官方网站下载Zookeeper和Kafka的压缩包。你可以选择官方提供的版本,或者从可信的第三方资源下载。

将下载的压缩包解压到服务器上的特定目录中,并创建一个用于存放压缩包的文件夹。例如:

新建一个名为`test`的文件夹。

安装Zookeeper的步骤如下:

1.将解压后的Zookeeper文件夹重命名为`zk`,并移动到`/usr/local/`目录下。

2.切换到`/usr/local/zk/conf/`目录下,复制一个`zoo_sample.cfg`文件并将其重命名为`zoo.cfg`。

3.使用文本编辑器(如vi)打开`zoo.cfg`文件,并修改`datadir`参数为`/usr/local/zk/data`。

4.在`zk`目录下创建`data`文件夹。

5.通过`/etc/profile`文件配置环境变量。添加`java_home`和`zk_home`的路径,将`zk`的`bin`目录路径添加到`path`中。

6.使环境变量生效,执行`source/etc/profile`。

7.进入`/usr/local/zk/bin/`目录,启动Zookeeper服务器:`zkServer.sh start`。

检查Zookeeper状态,确保其显示为`standalone`。

执行`zkServer.sh start`、`zkServer.sh stop`、`zkServer.sh restart`和`zkServer.sh status`,分别启动、停止、重启和查看当前节点状态。

接下来安装Kafka:

1.将Kafka压缩包解压到服务器上。

2.将解压后的Kafka文件夹移动到`/usr/local/`目录下。

3.切换到`/usr/local/kafka/config/`目录下,使用文本编辑器修改`server.properties`文件。

4.将`log.dirs`参数设置为`/usr/local/kafka/data/kafka-logs`,将`connect`中的`localhost`替换为服务器IP地址,修改`advertised.listeners`参数为`PLAINTEXT:// xx.xx.xx.xxx:9092`(`xx`代表你的服务器IP)。

5.常规模式下启动Kafka:`./kafka-server-start.sh../config/server.properties&`。

关闭Kafka:`./kafka-server-stop.sh`。

使用进程守护模式启动Kafka:`nohup./kafka-server-start.sh config/server.properties>/dev/null 2>&1&`。

如果在安装过程中遇到错误,可以尝试调整Kafka的启动内存大小,修改`KAFKA_HEAP_OPTS`环境变量为`-Xmx512M-Xms512M`。

创建一个Kafka主题:在Kafka的`bin`目录下执行`./kafka-topics.sh--create--zookeeper 127.0.0.1:2181--partitions 1--replication-factor 1--topic test`。

使用生产者向Kafka发送消息:`./kafka-console-producer.sh--broker-list 127.0.0.1:9092--topic test`。

使用消费者消费消息:在另一个终端窗口中执行`./kafka-console-consumer.sh--broker-list 127.0.0.1:9092--topic test`。

如果在使用消费者时遇到问题,可以尝试使用`./kafka-console-consumer.sh--bootstrap-server 127.0.0.1:9092--topic test`。

在CentOS 7中关闭防火墙:执行`systemctl stop firewalld.service`。

最后,确保将Kafka的`9092`端口添加到安全组中,以允许外部访问。

阅读剩余
THE END