Spark大数据分析与实战笔记(第六章 Kafka分布式发布订阅消息系统-03)

文章目录

  • 每日一句正能量
  • [第6章 Kafka分布式发布订阅消息系统](#第6章 Kafka分布式发布订阅消息系统)
  • 章节概要
  • [6.3 Kafka 集群部署与测试](#6.3 Kafka 集群部署与测试)
    • [6.3.1 安装Kafka](#6.3.1 安装Kafka)
    • [6.3.2 启动Kafka服务](#6.3.2 启动Kafka服务)

每日一句正能量

也许生活中偶有黯淡无光的时刻,但别忘了还有未实现的梦想,努力朝着自己的目标一点点前进。幸福就是每一个微小目标的达成。这些温暖明亮的小目标,一定也有你的。认真做好眼下的每一件事,去遇见因为努力而变得更美好的自己。

第6章 Kafka分布式发布订阅消息系统

章节概要

Kafka是一个高吞吐量的分布式发布订阅消息系统,它在实时计算系统中有着非常强大的功能。通常情况下,我们使用Kafka构建系统或应用程序之间的数据管道,用来转换或响应实时数据,使数据能够及时的进行业务计算,得出相应结果。本章将针对Kafka工作原理、Kafka集群部署以及Kafka的基本操作进行详细讲解。

6.3 Kafka 集群部署与测试

6.3.1 安装Kafka

Kafka集群部署依赖于Java环境和Zookeeper服务,在本书第二章搭建Spark HA小节,我们已经完成了上述环境和Zookeeper集群的配置。下面通过4个步骤讲解Kafka集群的安装流程。

  1. 下载、解压安装包
    Kafka集群安装很简单,访问Kafka 官方网站http://kafka.apache.org/downloads.html下载安装包,由于后续章节会与Spark框架整合使用,因此在选择Kafka的版本时要与Scala版本保持一致, 本书选择当前最新稳定版本kafka_2.11-2.0.0.tgz 。

下载完成后,将安装包上传至hadoop01节点中的/export/software目录下,使用以下命令解压安装包:

shell 复制代码
tar -zxvf kafka_2.11-2.0.0.tgz -C /export/servers/

结果如下图所示:

  1. 修改配置文件。
    进入Kafka文件夹下的/export/servers/kafka_2.11-2.0.0/config目录,修改server.properties配置文件(vi server.properties),修改后的内容如文件6-1所示。
    文件6-1 server.properties
shell 复制代码
#broker的全局唯一编号, 不能重复
broker.id=0
#用来监听链接的端口,producer或consumer将在此端 ]建立连接
por t=9092
#处理网络请求的线程数量
num. network.threads=3
#用来处理磁盘I0的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接受套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志存放的路径
log.dirs=/export/data/kafka/
#topic在当前broker.上的分片个数
num.partitions=2
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=1
#滚动生成新的segment文件的最大时间
log.roll.hours=1
#日志文件中每个segment的大小,默认为1G
loa.seament.bvtes=1073741824
#周期性检查文件大小的时间
log.retention.check.interval.ms=30000
#日志清理是否打开
log.cleaner.enable=true
#broker需要使用zoakeeper保存meta数据
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181
#zookeeper链接超时时间
zookeeper.connection.timeout.ms=6000
#partionbuffer中,消息的条数达到阈值,将触发flush到磁盘
log.flush.interval.messages=10000
#消息缓冲的时间,达到阈值,将触发flush到磁盘
log.flush.interval.ms=3000
#删除topic(是否允许删除)
delete.topic.enable=true
#设置本机IP
host.name=hadoop01

关于文件中的核心参数介绍如下:

  • broker.id
    集群中每个节点的唯一-且永久的名称, 该值必须大于等于0,在本案例中,主机名为hadoop01、hadoop02、hadoop03的节点中, 该参数值依次设置为0、1、 2。
  • log.dirs:
    指定运行日志存放的地址,可以指定多个目录,并以逗号分隔。
  • zookeeper.connect:
    指定Zookeeper集群中的IP与端口号。
  • delete.topic.enable:
    是否允许删除Topic,如果设置False, 表示允许删除。
  • host.name
    设置本机IP地址。若设置错误,则客户端会抛出Producer connection to localhost:9092 unsuccessful的异常信息。
  1. 添加环境变量
    为了操作方便,可以在/etc/profile文件中添加Kafka环境变量, 配置参数如下。
shell 复制代码
export KAFKA_HOME=/export/servers/kafa_2.11-2.0.0
export PATH=$PATH:$KAFKA_HOME/bin
  1. 分发文件
    修改配置文件后,将Kafka本地安装目录/export/servers/kafka_ _2.11-2.0.0以及 环境变量配置文件/etc/profile分发至hadoop02、hadoop03机器, 命令如下(下面路径为相对路径,所以要先回到/export/servers目录下)。
shell 复制代码
scp -r kafka_2.11-2.0.0/ hadoop02:/export/servers/
scp -r kafka_2.11-2.0.0/ hadoop03:/export/servers/
scp /etc/profile hadoop02:/etc/profile
scp /etc/profile hadoop03:/etc/profile

分发完成后,并根据当前节点的情况修改"broker.id"和"host.name*参数,随后还需要使用"source /etc/profile"使环境变量生效。至此,Kafka集群配置完毕。结果如下图所示:

将hadoop02上的/export/servers/kafka_2.11-2.0.0/config/ server.properties配置中的参数修改:

shell 复制代码
broker.id =1
host.name=hadoop02

将hadoop03上的/export/servers/kafka_2.11-2.0.0/config/ server.properties配置中的参数修改:

shell 复制代码
broker.id =2
host.name=hadoop03

结果如下图所示:


6.3.2 启动Kafka服务

  1. 启动Zookeeper服务
    Kafka服务启动前,需要先启动Zookeeper集群服务(在hadoop集群下)。在三台节点上依次输入"zkServer.sh start"启动Zookeeper服务,也可以通过一键启动脚本启动Zookeeper集群服务, Zookeeper服务启动后的效果如图所示。

我们可以写一个一键启动脚本start_zk.sh来完成一键启动Zookeeper集群服务。具体命令如下:

shell 复制代码
#!/bin/sh
for host in hadoop01 hadoop02 hadoop03
do
ssh root@$host "/export/servers/zookeeper-3.4.10/bin/zkServer.sh start"
done
  1. 启动Kafka服务
    Zookeeper服务启动成功后,进入到Kafka的/export/servers/kafka_2.11-2.0.0目录下bin/kafka-server start.sh脚本启动Kafka服务了,命令如下。

    bin/kafka-server-start.sh config/server.properties

结果如下图所示:

上述命令执行成功后,如果控制台输出的消息中无异常信息,并且光标始终处于闪烁状态,即表示Kafka服务启动成功,如图所示。

克隆一个会话用jps查看进程:

转载自:https://blog.csdn.net/u014727709/article/details/144041398

欢迎 👍点赞✍评论⭐收藏,欢迎指正

相关推荐
鸽鸽程序猿2 小时前
【JavaEE】【SpringCloud】分布式事务 Alibaba Seata
分布式·spring cloud·java-ee
雁于飞2 小时前
【无标题】
笔记·面试·职场和发展·跳槽·产品经理·创业创新·学习方法
Z.风止2 小时前
Go-learning(1)
开发语言·笔记·后端·golang
好好沉淀2 小时前
Elasticsearch (ES) 核心笔记
大数据·笔记·elasticsearch
宵时待雨2 小时前
STM32笔记归纳5:SPI
笔记·stm32·嵌入式硬件
LeoZY_2 小时前
CH347 USB转JTAG功能使用笔记:CH347根据SVF文件实现任意FPGA下载
笔记·stm32·嵌入式硬件·fpga开发·硬件架构·硬件工程
王锋(oxwangfeng)2 小时前
Spark 向量化执行引擎技术选型与实践指南
大数据·分布式·spark
孞㐑¥2 小时前
算法—字符串
开发语言·c++·经验分享·笔记·算法
一起养小猫2 小时前
Flutter for OpenHarmony 实战:打造功能完整的云笔记应用
网络·笔记·spring·flutter·json·harmonyos