阶段三:项目开发---大数据开发运行环境搭建:任务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表示从第一条消息开始读取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GEE代码实例教程详解:地表温度长时间序列分析

简介 在本篇博客中,我们将使用Google Earth Engine (GEE) 对地表温度 (LST) 进行长时间序列分析。通过结合Landsat 4-9的数据,我们将探索1982年至2024年间地表温度的变化趋势。 背景知识 Landsat数据集 Landsat数据集提供了多时相、多光谱的地表观测…

用起来超爽的4个宝藏软件工具

记得带 “记得带”是一款专为繁忙的都市人设计的生活服务软件,旨在帮助用户轻松管理日常生活中的各种事务。该应用程序集成了多种实用功能,包括购物清单、待办事项、日程安排和健康追踪等。它还具有智能提醒功能,可以根据用户的日常习惯和偏好…

14-41 剑和诗人15 - RLAIF 大模型语言强化培训

​​​​​​ 介绍 大型语言模型 (LLM) 在自然语言理解和生成方面表现出了巨大的能力。然而,这些模型仍然存在严重的缺陷,例如输出不可靠、推理能力有限以及缺乏一致的个性或价值观一致性。 为了解决这些限制,研究人员采用了一种名为“人工…

每天一个数据分析题(四百十六)- 线性回归模型

根据模型假设,线性回归模型中误差项的方差为 A. 常数 B. 函数 C. 随机变量 D. 以上都不是 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python,SQL,统计学&#…

【大模型】多模型在大模型中的调度艺术:解锁效率与协同的新境界

多模型在大模型中的调度艺术:解锁效率与协同的新境界 引言一、多模型与大模型的概念解析二、多模型调度的必要性三、多模型调度的关键技术3.1 负载均衡与动态分配3.2 模型间通信与协作3.3 模型选择与优化 四、多模型运行优化策略4.1 异构计算平台的利用4.2 模型压缩…

20240708每日前端---------提升网站设计水平的15个CSS技巧,来试试吧

框阴影效果向元素添加阴影可以增强其深度和视觉吸引力。 .box {box-shadow: 0 4px 8px rgba(0,0,0,0.1); }平滑的过渡动画 CSS 过渡是增强网页交互性的简单方法。 当鼠标悬停在按钮上时,按钮的背景颜色会平滑地过渡到新颜色。 .button {transition: background-co…

Windows电脑PC使用adb有线跟无线安装apk包

在Android开发中,经常需要使用ADB(Android Debug Bridge)来安装APK包到Android设备上,无论是通过有线连接还是无线连接。以下将分别介绍如何通过有线和无线方式使用ADB安装APK包。 有线连接安装APK 启用开发者选项和USB调试&…

npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR!

报错: npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR! path /home/user/.local/lib/node_modules/pkg npm ERR! dest /home/user/.local/lib/node_modules/.pkg-piikcue3 npm ERR! errno -39 npm ERR! ENOTEMPTY: directory not empty, rename ‘/home/…

easily-openJCL 让 Java 与显卡之间的计算变的更加容易!

easily-openJCL 让 Java 与显卡之间的计算变的更加容易! 开源技术栏 本文介绍了关于在 Java 中 easily-openJCL 的基本使用!!! 目录 文章目录 easily-openJCL 让 Java 与显卡之间的计算变的更加容易!目录 easily-op…

初学Spring之 HelloSpring 篇

创建一个 Hello 类 get/set 方法、toString 方法(快捷键:alt insert) package com.demo.pojo;public class Hello {private String str;public String getStr() {return str;}public void setStr(String str) {this.str str;}Overridepub…

算法学习笔记(8)-动态规划基础篇

目录 基础内容: 动态规划: 动态规划理解的问题引入: 解析:(暴力回溯) 代码示例: 暴力搜索: Dfs代码示例:(搜索) 暴力递归产生的递归树&…

matlab仿真 信道(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第四章内容,有兴趣的读者请阅读原书) 1.加性高斯白噪声信道(AWGN ) clear all t0:0.001:10; xsin(2*pi*t);%原始信号 snr20;%设定加性白噪…

CSS技巧:清除浏览器默认样式,让你的页面全由你做主!

莫名其妙的的问题哪里来? 你有没有过写了半天样式,却发现总有些与你想要的效果不同的地方:input带个黑框框,list 的小圈圈,锚点的文字颜色,莫名其妙多出来的一两个像素的距离。。 回到20年前,我刚刚接触…

HBuilder X 小白日记03-用css制作简单的交互动画

:hover选择器,用于选择鼠标指针浮动在上面的元素。 :hover选择器可用于所有元素,不只是链接 :link选择器 设置指向未被访问页面的链接的样式 :visited选择器 用于设置指向已被访问的页面的链接 :active选择器 用于活动链接

更加优雅的下载文件 --- http header Content-Disposition 学习

更加优雅的下载文件 --- http header Content-Disposition 学习 在响应头中在请求头中a 标签的 download 属性小结 Content-Disposition 在响应头中,告诉浏览器如何处理返回的内容,在表单提交中,说明表单字段信息。 在响应头中 用在响应头中…

DBA 数据库管理

数据库:存储数据的仓库 数据库服务软件: 关系型数据库: 存在硬盘 ,制作表格的 数据库的参数 [rootmysql50 ~]# cat /etc/my.cnf.d/mysql-server.cnf 主配置文件 [mysqld] datadir/var/lib/mysql 存放数据库目录…

【小鸡案例】表单focus和blur事件用法

input中有2个属性,一个是focus获取焦点,一个是blur失去焦点。获取焦点就是我们点击输入框时输入框被选中;失去焦点即点击输入框以外的区域,今天就用这两种属性做一个点击输入框的动画效果。 先写个输入框,代码如下&am…

GitLab介绍,以及add an SSH key

GitLab GitLab 是一个用于仓库管理系统的开源项目,现今并在国内外大中型互联网公司广泛使用。 git,gitlab,github区别 git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面; gitlab 是一个基于git实现的在线代码仓库…

GEE代码实例教程详解:长时间序列NDVI分析

简介 本篇博客将介绍如何使用Google Earth Engine (GEE) 对长时间序列的Landsat数据进行归一化植被指数(NDVI)分析。通过此分析,可以监测和评估1982年至2024年间的植被变化趋势。 背景知识 Landsat数据集 Landsat是美国地质调查局和美国航…

Spring Security的Filter

Spring Security 是一个功能强大的、高度可定制的身份验证和访问控制框架,它为基于 Java 的应用程序提供了全面的安全解决方案。在 Spring Security 中,过滤器(Filter)扮演着非常重要的角色,它们被用来拦截请求并应用安…