阶段三:项目开发---大数据开发运行环境搭建:任务5:安装配置Kafka

任务描述

知识点:安装配置Kafka

重  点: 安装配置Kafka

难  点:无

内  容:   

    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

    Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:

  • 通过O的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  • 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
  • 支持通过Kafka服务器和消费机集群来分区消息。
  • 支持Hadoop并行数据加载。

    本任务主要内容是Kafka的下载安装(参考相关文档)。

任务指导

Apache Kafka是由Apache软件基金会开发的一个开源消息系统项目,由Scala和Java写成。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。它提供了类似于JMS的特性,但是在设计实现上完全不同。Kafka进行消息保存时会根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,Kafka集群有多个Kafka实例组成,每个实例(Server)称为Broker。无论是Kafka集群,还是Producer和Consumer都依赖ZooKeeper来保证系统的可用性,并保存一些集群元(Meta)信息。

一个典型的Kafka集群中包含若干Producer(可以是Web前端FET,或者是服务器日志等),若干Broker(Kafka支持水平扩展,一般Broker数量越多,集群吞吐率越高),若干ConsumerGroup,以及一个ZooKeeper集群。Kafka通过Zookeeper管理Kafka集群配置:选举Kafka Broker的Leader,以及在Consumer Group发生变化时进行Rebalance,因为Consumer消费Kafka topic的Partition的offsite信息是存在ZooKeeper的。Producer使用push模式将消息发布到Broker,Consumer使用pull模式从Broker订阅并消费消息。

1、核心概念:

  • 消息:Message是指在生产者、服务端和消费者之间传输的数据。
  • 消息代理:Message Broker是指该MQ的服务端或者服务器。
  • 消息生产者:Message Producer负责产生消息并发送消息到meta服务器。
  • 消息消费者:Message Consumer负责消息的消费。
  • 消息的主题:Message Topic由用户定义并在Broker上配置。Producer发送消息到某个Topic下,Consumer从某个Topic下消费消息。
  • 主题的分区:Partition可以把一个Topic分为多个分区。每个分区是一个有序的、不可变的、顺序递增的Commit Log。
  • 消费者分组:Consumer Group由多个消费者组成,共同消费一个Topic下的消息,每个消费者消费部分消息。这些消费者组成一个组,拥有同一个分组名称,也称作消费者集群。
  • 偏移量:分区中的消息都有一个递增的id,称之为Offset。唯一标识了分区中的消息。

2、Kafka和其他主流分布式消息系统的对比:

任务实现

在node1节点上安装配置Kafka,然后再使用【scp】命令,将安装目录分发到其他节点(node2、node3)。

1、可以从官网下载Kafka安装包 ,当前环境已经提供了Kafka的安装包,存放在 /opt/software目录下。

  • 在node1上解压安装Kafka
[root@node1 ~]# cd /opt/software
[root@node1 software]# tar -xzf kafka.tar.gz -C /opt/module/

2、在node1系统环境变量/etc/profile

[root@node1 software]# vi /etc/profile
  • 在文件末尾添加如下配置:
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

  • 使用【source】命令,使/etc/profile配置生效
[root@node1 software]# source /etc/profile

3、配置Kafka

  • 为Kafka创建数据目录
[root@node1 software]# cd $KAFKA_HOME
[root@node1 kafka]# mkdir kafka-logs
  • 然后打开config目录下的server.properties文件,修改日志目录为刚刚创建的目录:
[root@node1 kafka]# cd $KAFKA_HOME/config
[root@node1 config]# vi server.properties
  • 找到并修改如下配置的值,其中broker.id的值需要保证在整个集群中是唯一的
broker.id=1
log.dirs=/opt/module/kafka/kafka-logs
zookeeper.connect=node1:2181,node2:2181,node3:2181
  • 将Kafka和环境变量拷贝到node2、node3并修改broker.id的值
[root@node1 config]# cd /opt/module/
[root@node1 module]# scp -rq kafka node2:/opt/module/
[root@node1 module]# scp -rq kafka node3:/opt/module/
[root@node1 module]# scp -rq /etc/profile node2:/etc/
[root@node1 module]# scp -rq /etc/profile node3:/etc/
  • 在node2修改kafka的配置文件server.properties,将broker.id的值修改为2
[root@node2 ~]# source /etc/profile
[root@node2 ~]# cd $KAFKA_HOME/config 
[root@node2 config]# vi server.properties
  • 修改后broker.id的值如下

  • 在node3修改kafka的配置文件server.properties,将broker.id的值修改为3
[root@node3 ~]# source /etc/profile
[root@node3 ~]# cd $KAFKA_HOME/config 
[root@node3 config]# vi server.properties
  • 修改后broker.id的值如下

  • 分别在node1、node2、node3启动Kafka的后台守护进程
[root@node1 ~]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

[root@node2 ~]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

[root@node3 ~]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

4、验证Kafka

  • 创建topic,创建名为test的topic,分区数1,副本1
[root@node1 ~]# kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 1 --partitions 1 --topic test
  • 查看topic的状态
[root@node1 ~]# kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node3:2181 --topic test

  • 在client客户端节点上打开一个终端,使用ssh命令连接到node1,发送消息
[root@client~]# ssh node1
[root@node1 ~]# kafka-console-producer.sh --broker-list node1:9092 --topic test

  • 在client客户端节点上重新打开一个终端,使用ssh命令连接到node1的消费消息
[root@client~]# ssh node1
[root@node1 ~]# kafka-console-consumer.sh --bootstrap-server node1:9092 --from-beginning --topic test

参数说明:参数from-beginning表示从第一条消息开始读取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端JS特效第21集:HTML5响应式多种切换效果轮播大图切换js特效代码

HTML5响应式多种切换效果轮播大图切换js特效代码&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t…

Redis数据结构解析-RedisObject

文章目录 ☃️概述☃️源码 ☃️概述 RedisObject 是 Redis 中表示数据对象的结构体&#xff0c;它是 Redis 数据库中的基本数据类型的抽象。在 Redis 中&#xff0c;所有的数据都被存储为 RedisObject 类型的对象。 RedisObject 结构体定义如下&#xff08;简化版本&#xf…

VMware虚拟机配置桥接网络

转载&#xff1a;虚拟机桥接网络配置 一、VMware三种网络连接方式 VMware提供了三种网络连接方式&#xff0c;VMnet0, VMnet1, Vmnet8&#xff0c;分别代表桥接&#xff0c;Host-only及NAT模式。在VMware的编辑-虚拟网络编辑器可看到对应三种连接方式的设置&#xff08;如下图…

昇思11天

基于 MindSpore 实现 BERT 对话情绪识别 BERT模型概述 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由Google于2018年开发并发布的一种新型语言模型。BERT在许多自然语言处理&#xff08;NLP&#xff09;任务中发挥着重要作用&am…

Angular基础保姆级教程 - 1

Angular 基础总结&#xff08;完结版&#xff09; 1. 概述 Angular 是一个使用 HTML、CSS、TypeScript 构建客户端应用的框架&#xff0c;用来构建单页应用程序。 Angular 是一个重量级的框架&#xff0c;内部集成了大量开箱即用的功能模块。 Angular 为大型应用开发而设计…

Hadoop3:NameNode和DataNode多目录配置(扩充磁盘的技术支持)

一、NameNode多目录 1、说明 NameNode多目录&#xff0c;需要在刚搭建Hadoop集群的时候&#xff0c;就配置好 因为&#xff0c;配置这个&#xff0c;需要格式化NameNode 所以&#xff0c;如果一开始没配置NameNode多目录&#xff0c;后面&#xff0c;就不要配置了。 2、配置…

移动校园(3):处理全校课程数据excel文档,实现空闲教室查询与课程表查询

首先打开教学平台 然后导出为excel文档 import mathimport pandas as pd import pymssql serverName 127.0.0.1 userName sa passWord 123456 databaseuniSchool conn pymssql.connect(serverserverName,useruserName,passwordpassWord,databasedatabase) cursor conn.cur…

阶段三:项目开发---大数据开发运行环境搭建:任务6:安装配置HBase

任务描述 知识点&#xff1a;安装配置HBase 重 点&#xff1a; 安装配置HBase 难 点&#xff1a;无 内 容&#xff1a; 本阶段任务是安装配置HBase&#xff0c;实时飞行数据是保存在HBase中的&#xff0c;因为HBase具有高效的读写能力&#xff0c;在当前项目中我们是…

hive表小练习

-- 将对应的命令写在每个步骤中 -- 1.在hive中创建数据库school create database if not exists school; -- 2.在数据库school中创建如下的表 每张表的列分隔符都是, 存储格式是textfile 创建表名为student_info, 字段为stu_id 类型为string,注释为学生id 字段为stu_name 类…

Python酷库之旅-第三方库Pandas(008)

目录 一、用法精讲 16、pandas.DataFrame.to_json函数 16-1、语法 16-2、参数 16-3、功能 16-4、返回值 16-5、说明 16-6、用法 16-6-1、数据准备 16-6-2、代码示例 16-6-3、结果输出 17、pandas.read_html函数 17-1、语法 17-2、参数 17-3、功能 17-4、返回值…

element-ui输入框如何实现回显的多选样式?

废话不多说直接上效果&#x1f9d0; 效果图 <template><div><el-form:model"params"ref"queryForm"size"small":inline"true"label-width"68px"><el-form-item label"标签" prop"tag&q…

SSM高校教师教学质量评估系统-计算机毕业设计源码03344

摘要 在高等教育中&#xff0c;教学质量是培养优秀人才的关键。为了提高教学质量&#xff0c;高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架&#xff0c;旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架&#xff0c;具…

软件测试《用例篇》

测试用例 测试用例的概念 测试用例是被测试人员向被测试系统发起的一组集合&#xff0c;包括测试环境&#xff0c;操作步骤&#xff0c;预期结果&#xff0c;测试数据等 使用测试用例的好处 使用测试用例进行测试的好处主要有&#xff1a;提高测试效率&#xff0c;降低测试的重…

NextJs - SSR渲染解决antd首屏加载CSS样式的闪烁问题

NextJs - SSR渲染解决antd首屏加载CSS样式的闪烁问题 闪烁现状解决方案 闪烁现状 我们写一个非常简单的页面&#xff1a; import { Button } from antdexport default async function Page() {return <><Button typeprimary>AAA</Button></> }NextJs…

[答疑]EA中SysML块定义图的引用关联怎样在references分栏中出现

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 例如&#xff0c;用EA在BDD&#xff08;块定义图&#xff09;上画了一个关联&#xff1a; 此时&#xff0c;“手机”和“SIM卡”中都没有出现references栏。 右击“手机”&#xff0c…

Pytorch 实践手写数字识别深度学习网络 LeNet-5

Pytorch 实践手写数字识别深度学习网络 LeNet-5 文章目录 Pytorch 实践手写数字识别深度学习网络 LeNet-5认识 LeNet-5认识数据集处理数据集下载数据集读取数据定义Dataset的继承类把数据进行载入载入dataloader 编写网络编写训练与测试代码实践结果展示完整代码 训练手写体识别…

#数据结构 笔记一

数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构是带有结构特性的数据元素的集合&#xff0c;它研究的是数据的逻辑结构和物理结构以及它们之间的相互关系&#xff0c;并对这种结构定义相适应的运算&#xff0…

微软正在放弃React

最近&#xff0c;微软Edge团队撰写了一篇文章&#xff0c;介绍了微软团队如何努力提升Edge浏览器的性能。但在文中&#xff0c;微软对React提出了批评&#xff0c;并宣布他们将不再在Edge浏览器的开发中使用React。 我将详细解析他们的整篇文章内容&#xff0c;探讨这一决定对…

Java对象通用比对工具

目录 背景 思路 实现 背景 前段时间的任务中&#xff0c;遇到了需要识别两个对象不同属性的场景&#xff0c;如果使用传统的一个个属性比对equals方法&#xff0c;会存在大量的重复工作&#xff0c;而且为对象新增了属性后&#xff0c;比对方法也需要同步修改&#xff0c;不方…

微软拼音输入法不显示选字框问题

问题展示&#xff1a;不显示选字框 解决方式 打开兼容性即可&#xff08;估计是升级带来的bug&#xff09;