ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

普通的搭建kafka-2_12-2.4.1

2022-04-28 10:00:58  阅读:180  来源: 互联网

标签:12 -- hadoop02 hadoop01 9092 kafka topic 2.4


搭建kafka

一. 概述

1. 介绍

Kafka 是个分布式的、持分区的(partition)、多副本的 (replica),基于 zookeeper 协调的分布式消息系统,它最大的特性就是可以实时处理大量数据以满足各类需求场景:

  • 日志收集:使用 Kafka 收集各种服务的日志,并通过 kafka 以统一接口服务的方式开放给各种 consumer,例如 hadoop、Hbase、Solr 等

  • 消息系统:解耦和生产者和消费者、缓存消息等

  • 用户活动跟踪:Kafka 经常被用来记录 web 用户或者 app 用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到 kafka 的 topic 中,然后订阅者通过订阅这些 topic 来做实时的监控分析,或者装载到 hadoop、数据仓库中做离线分析和挖掘

  • 运营指标:Kafka 也经常用来记录运营监控数据,包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告

     

2. 概念

  1. kafka作为一个集群运行在一个或多个服务器上。

  2. kafka集群存储的消息是以topic为类别记录的。

  3. 每个消息(也叫记录record,我习惯叫消息)是由一个key,一个value和时间戳构成。

3. 四个核心API

应用程序使用 Producer API 发布消息到1个或多个topic(主题)中。

应用程序使用 Consumer API 来订阅一个或多个topic,并处理产生的消息。

应用程序使用 Streams API 充当一个流处理器,从1个或多个topic消费输入流,并生产一个输出流到1个或多个输出topic,有效地将输入流转换到输出流。

Connector API 可构建或运行可重用的生产者或消费者,将topic连接到现有的应用程序或数据系统。例如,连接到关系数据库的连接器可以捕获表的每个变更

4. 消息系统介绍

一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式。

点对点消息传递模式

在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。 生产者发送一条消息到queue,只有一个消费者能收到。

发布-订阅消息传递模式

在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。 发布者发送到topic的消息,只有订阅了topic的订阅者才会收到消息。

参考来源:https://www.orchome.com/5

https://www.cnblogs.com/Yee-Q/p/15866729.html

https://www.cnblogs.com/cxy2020/p/14999545.html

二. 配置

1. 下载

选择适合的版本进行下载

下载地址:https://kafka.apache.org/downloads

2. 配置文件

  • server.profperties

     vim server.profperties
     #全局唯一编号,不能重复
     broker.id=0 (在hadoop01,02,03上,分别改为0,1,2)
     #kafa运行日志存放路径(vi 中,在非insert模式 按/ 后面加上要搜索的内容)
     log.dirs=/opt/export/data/kafka/logs/
     ​
     #制定zookeeper的位置,主要用来保存meta数据
     zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181
     ​
     #允许删除主题 (此属性没有,要自己添加)
     delete.topic.enable=true
     ​
     #设置本机IP 每台机器都要改成自己的IP(注意)
     host.name=hadoop01
  • 日志

     # Kafka设置系统运行日志输出路径
     vim /opt/export/servers/kafka_2.12-2.4.1/bin/kafka-run-class.sh
     LOG_DIR=/opt/export/data/kafka/logs

     

3. 环境变量

 sudo vim /etc/profile
 export KAFKA_HOME=/opt/export/servers/kafka_2.12-2.4.1
 export PATH=$PATH:$KAFKA_HOME/bin
 ​
 source /etc/profile

4. 分发文件

 scp -r kafka_2.12-2.4.1/ hadoop02:/opt/export/servers/
 scp -r kafka_2.12-2.4.1/ hadoop03:/opt/export/servers/
 ​
 scp /etc/profile hadoop02:/etc/profile
 scp /etc/profile hadoop03:/etc/profile
 # 在hadoop02、hadoop03 刷新环境配置
 source /etc/profile

 

## 4. 启动

需要分别在hadoop01,hadoop02,hadoop03启动kafka

 # 后台启动  nohup &
 # >/opt/export/data/kafka/logs/start-kafka.log 2>&1 为启动日志存放路径
 nohup kafka-server-start.sh /opt/export/servers/kafka_2.12-2.4.1/config/server.properties >/opt/export/data/kafka/logs/start-kafka.log 2>&1 &

三、测试使用

 #查询当前kafka的所有主题
 kafka-topics.sh --list --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181
 ​
 #创建主题(名字叫test)
 kafka-topics.sh --create --topic test --partitions 3 --replication-factor 3 --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181
 ​
 #删除主题() 正在使用的主题无法删除
 kafka-topics.sh --delete --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 --topic test
 ​
 # 创建一个生产者,向某个(test)主题中写入数据,连接上
 kafka-console-producer.sh --broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 --topic test
 ​
 [hadoop@hadoop01 ~]$ kafka-console-producer.sh --broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 --topic test
 >hello world
 >
 ​
 # 创建一个消费者,订阅某个主题(test)
 kafka-console-consumer.sh --from-beginning --topic test --bootstrap-server hadoop01:9092,hadoop02:9092,hadoop03:9092
 ​
 [hadoop@hadoop02 ~]$ kafka-console-consumer.sh --from-beginning --topic test --bootstrap-server hadoop01:9092,hadoop02:9092,hadoop03:9092
 hello world
 ​
 # ctrl + c 退出
 # 关闭kafka
 kafka-server-stop.sh
 

标签:12,--,hadoop02,hadoop01,9092,kafka,topic,2.4
来源: https://www.cnblogs.com/sirlateautumns/p/16201711.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有