Apache Pulsar的分布式集群模式构建
1. 准备环境
6台带jdk8的Linux服务器(CentOS7为例)
ip分别为:
| 主机名 | IP地址 |
|---|---|
| zookeeper1 | 192.168.8.101 |
| zookeeper2 | 192.168.8.102 |
| zookeeper3 | 192.168.8.103 |
| pulsar1 | 192.168.8.108 |
| pulsar2 | 192.168.8.109 |
| pulsar3 | 192.168.8.110 |
2. 下载Pulsar最新安装包
下载地址:Apache Pulsar
3. 构建
搭建Pulsar集群全少需要3个组件:ZooKeeper集群、BookKeeper集群和broker集群(Broker是Pulsar的自身实例)。这
三人集群组件如下:
- ZooKeeper集群(3个ZooKeeper节点组成)
- bookie集群(也称为BookKeeper集群,3个BookKeeper节点组成)
- broker集群(3个Pulsar节点组成)
Pulsar的安装包已包含了搭建集群所需的各个组件库。无需单独下载ZooKeeper安装包和BookKeeper安装包。(在实际
中,zookeeper我们并不仅仅应用在pulsar上,包括HBase等其他的组件也需要依赖,所以我们此处zookeeper使用外置zk集群环境)
注意:如果是在内网测试环境搭建集群,为了避免防火墙造成端口开启繁琐,可以关闭服务器防火墙
第一步: 将下载的pulsar安装包上传到linux服务器, 并解压
cd /usr/local
上传apache-pulsar-2.8.1-bin.tar.gztar -zxvf apache-pulsar-2.8.1-bin.tar.gzmv apache-pulsar-2.8.1 pulsar
第二步: 修改bookkeeper集群配置文件
cd /usr/local/pulsar/conf/
vim bookkeeper.conf修改其第56行:修改本地ip地址(版本不一样位置可能不一样)
advertisedAddress=pulsar1
修改其39行:(版本不一样位置可能不一样)
journalDirectory=/usr/local/pulsar/tmp/journal
修改其389行:(版本不一样位置可能不一样)
ledgerDirectories=/usr/local/pulsar/tmp/ledgers
修改617行:(版本不一样位置可能不一样)
zkServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
第三步: 修改broker集群的配置文件
cd /usr/local/pulsar/conf/
vim broker.conf修改第98行:修改集群的名称(版本不一样位置可能不一样)
clusterName=pulsar-cluster
修改第23行:配置zookeeper地址(版本不一样位置可能不一样)
zookeeperServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
修改第26行:配置zookeeper地址(版本不一样位置可能不一样)
configurationStoreServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
修改第44行:更改为本地ip地址(版本不一样位置可能不一样)
advertisedAddress=pulsar1
第四步: 将配置好bookies目录和brokers目录发送到第二台和第三台
cd /usr/local
scp -r pulsar/ pulsar2:$PWD
scp -r pulsar/ pulsar3:$PWD
第五步: 修改第二台和第三台的broker的地址和bookies地址
pulsar2:
cd /usr/local/pulsar/conf/
vim bookkeeper.conf
修改其第56行:修改本地ip地址
advertisedAddress=pulsar2vim broker.conf
修改第44行:更改为本地ip地址
advertisedAddress=pulsar2第三台节点:都更改为对应IP地址或者主机名即可
4. 启动
第一步: 首先启动zookeeper集群
启动命令在zookeeper1启动脚本中,三个同时启动
启动后注意查看状态,必须看到一个leader和两个follower才可以使用
第二步: 初始化元数据(此操作, 仅需要初始化一次即可)
此操作, 仅需要初始化一次即可
首先初始化Pulsar集群元数据:
cd /usr/local/pulsar/bin
./pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 \
--configuration-store zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 \
--web-service-url http://pulsar1:8080,pulsar2:8080,pulsar3:8080 \
--web-service-url-tls https://pulsar1:8443,pulsar2:8443,pulsar3:8443 \
--broker-service-url pulsar://pulsar1:6650,pulsar2:6650,pulsar3:6650 \
--broker-service-url-tls pulsar+ssl://pulsar1:6651,pulsar2:6651,pulsar3:6651
接着初始化bookkeeper集群:若出现提示输入Y/N:请输入Y
./bookkeeper shell metaformat
第三步: 启动bookkeeper服务
cd /usr/local/pulsar/bin
./pulsar-daemon start bookie
注意:三个节点都需要依次启动
验证是否启动:可三台都检测
./bookkeeper shell bookiesanity
提示:
Bookie sanity test succeeded 认为启动成功
第四步: 启动Broker
cd /usr/local/pulsar/bin
./pulsar-daemon start broker
注意:三个节点都需要依次启动
检测是否启动:
./pulsar-admin brokers list pulsar-cluster
提示:
[root@node1 bin]# ./pulsar-admin brokers iist pulsar-cluster
"node1.itcast.cn:8080"
"node2.itcast.cn:8080"
"node3.itcast.cn:8080"
认为启动成功
5. 测试
在pulsar的bin目录下, 专门提供了一个pulsar-client的客户端工具, Pulsar-Clinet工具允许使用者在运行的集群中消费并发送消息到
Pulsar Topic中
1:模拟开启消费者监听数据
./pulsar-client consume persistent://public/default/test -s "consumer-test"
2:模拟生产一条数据
./pulsar-client produce persistent://public/default/test --messages "hello-pulsa"
6. Apache Pulsar的可视化监控部署
第一步: 下载Pulsar-Manager
下载地址:
https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.3.0/apache-pulsar-manager-0.3.0-bin.tar.gz
第二步: 上传到服务器, 并解压
cd /usr/local
上传apache-pulsar-manager-0.3.0-bin.tar.gz
解压操作:
tar -zxf apache-pulsar-manager-0.3.0-bin.tar.gzcd /usr/local/pulsar-manager
接着再次解压:
tar -xvf pulsar-manager.tar
第三步: 拷贝dist包到 pulsar-manager目录下并更名为ui
cd /usr/local/pulsar-manager/pulsar-manager
cp -r ../dist ui
第四步: 启动Pulsar
cd /usr/local/pulsar-manager/pulsar-manager
./bin/pulsar-manager
第五步: 初始化超级用户密码(只用执行一次)
CSRF_TOKEN=$(curl http://192.168.8.108:7750/pulsar-manager/csrf-token)
curl \-H 'X-XSRF-TOKEN: $CSRF_TOKEN' \-H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \-H "Content-Type: application/json" \-X PUT http://192.168.8.108:7750/pulsar-manager/users/superuser \-d '{"name": "pulsar", "password": "pulsar", "description": "test", "email": "username@test.org"}'
第六步: 访问Pulsar UI
http://192.168.8.108:7750/ui/index.html
用户名: pulsar
密码: pulsar
Apache Pulsar的可视化监控基本使用
第一步: 点击 + new Enirconment 构建新环境,连接pulsar
Environment Name
pulsar-cluster
Service URL
http://192.168.8.108:8080
Bookie URL
http://192.168.8.108:6650
相关文章:
Apache Pulsar的分布式集群模式构建
1. 准备环境 6台带jdk8的Linux服务器(CentOS7为例) ip分别为: 主机名IP地址zookeeper1192.168.8.101zookeeper2192.168.8.102zookeeper3192.168.8.103pulsar1192.168.8.108pulsar2192.168.8.109pulsar3192.168.8.110 2. 下载Pulsar最新安…...
第三百八十六回
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示…...
Java中介者模式剖析及使用场景
中介者模式 一、介绍二、智能家居系统项目实现三、总结1.优点2.缺点3.使用经验4.Spring框架类似使用思想 一、介绍 介者模式是一种行为型设计模式,它允许对象之间通过一个中介者对象进行通信,而不是直接相互引用。将多对多的关系转化为一对多的关系&…...
ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效
随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网,AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音,所有的音效均由AI创造,与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…...
Go语言基础
Go的数据类型定义 //运行第一个程序package main func main(){print("Hello World") }在GO语言中,一个程序只能有一个main包,对应只能有一个main方法,若无法满足这个条件,编译时将会报错。注释方式与PHP相同 import的使…...
IOS覆盖率报告info文件解读
一,IOS覆盖率报告的生成 在做前端精准测试的时候,对于iOS端,通常会做如下操作: (1)合并覆盖率数据 如下操作: xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_fil…...
爬虫实战——scrapy框架爬取多张图片
scrapy框架的基本使用,请参考我的另一篇文章:scrapy框架的基本使用 起始爬取的网页如下: 点击每张图片,可以进入图片的详情页,如下: 代码实现: 项目文件结构如下 img_download.py文件代码 im…...
LLVM TableGen 系统学习笔记
Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件, 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称,一系列值和一系列父类。 它保存了特定领域…...
基于stm32的流水灯设计
1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥,…...
kotlin图片合成和压缩
kotlin图片合成和压缩 之前的方法是继承AsyncTask 在doInBackground 里面去做压缩的操作,然后用 publishProgress 切到主线程里面更新 新方法是在协程里的去做 class ImageService {private fun getSumWidths(bitmaps: ArrayList<Bitmap>): Int {var sumWid…...
Java学习笔记004——接口概念理解及意义
一个类中有抽象方法,则必须声明为abstract(做为抽象类),抽象类不能实例化。子类继承抽象类,必须对所有的抽象方法重写,否则依然有抽象方法,还是抽象的,无法实例化。故抽象类常做为基…...
MT笔试题
前言 某团硬件工程师的笔试题,个人感觉题目的价值还是很高的,分为选择题和编程题,选择题考的是嵌入式基础知识,编程题是两道算法题,一道为简单难度,一道为中等难度 目录 前言选择题编程题 选择题 C语言中变…...
50道SQL面试题
50道SQL面试题 有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 环境 -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS teacher; CREATE TABLE teacher (t_id varchar(20) …...
2024蓝桥杯每日一题(双指针)
一、第一题:牛的学术圈 解题思路:双指针贪心 仔细思考可以知道,写一篇综述最多在原来的H指数的基础上1,所以基本方法可以是先求出原始的H指数,然后分类讨论怎么样提升H指数。 【Python程序代码】 n,l map(int,…...
Android 开发过程中常见的内存泄漏场景分析
场景1 Static变量存储上下文环境Context public class ClassName {// 定义1个静态变量private static Context mContext;//... // 引用的是Activity的contextmContext context; // 当Activity需销毁时,由于mContext 静态 & 生命周期 应用程序的生命周期&…...
Codeforces-1935E:Distance Learning Courses in MAC(思维)
E. Distance Learning Courses in MAC time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The New Year has arrived in the Master’s Assistance Center, which means it’s time to introduce a new feature…...
ZooKeeper和Diamond有什么不同
本文主要是讨论下两个类似产品:ZooKeeper和Diamond在配置管理这个应用场景上的异同点。 Diamond,顾名思义,寄寓了开发人员对产品稳定性的厚望,希望它像钻石一样,提供稳定的配置访问。Diamond是淘宝网Java中间件团队的核…...
三、N元语法(N-gram)
为了弥补 One-Hot 独热编码的维度灾难和语义鸿沟以及 BOW 词袋模型丢失词序信息和稀疏性这些缺陷,将词表示成一个低维的实数向量,且相似的词的向量表示是相近的,可以用向量之间的距离来衡量相似度。 N-gram 统计语言模型是用来计算句子概率的…...
QML 3D入门知识路线
目前使用的版本 v5.14.0 模块导入 使用QML 3D时需要 import Qt3D.Core 2.14 核心模块类 V6以上的版本已经发布,所以有很多module会发生变化,主要有核心module、输入、逻辑、渲染、动画和扩展module,以及2D/3D场景模块 类名 能…...
蓝牙系列五:开源蓝牙协议BTStack框架代码阅读(1)
蓝牙学习系列,借鉴卫东上老师的蓝牙视频教程。 BTStack协议栈学习。首先来看一下,对于硬件操作,它是如何来进行处理的。在上篇文章中曾说过,在main函数里面它会调用硬件相关的代码,调用操作系统相关的代码。在BTStack中,可以搜索一下main.c,将会发现有很多main.c,都是…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
