IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【pulsar学习】pulsar集群部署及可视化监控部署 -> 正文阅读

[大数据]【pulsar学习】pulsar集群部署及可视化监控部署

最好的学习一个组件的方法就是先用起来,遇见问题再去查找资料。但是往往就卡在了装软件、配置组件这一步。本文主要记录自己在装分布式pulsar时遇到的问题,希望能对读者有所帮助。

1 先验知识

Apache Pulsar安装有两种模式:

  • 本地local模式:最简单的安装方式, 此种方式仅适用于测试学习使用, 并无法作为开发中使用。Pulsar可用于64位macOS、Linux和Windows。使用Pulsar需要安装64位JRE/JDK 8或更高版本
  • 分布式集群模式:实际生产中用到的模式。

本文主要介绍分布式集群模式安装。搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群BookKeeper 集群broker 集群(Broker 是 Pulsar 的自身实例)。这三个集群组件如下:

  • ZooKeeper 集群(3 个 ZooKeeper 节点组成)
  • bookie 集群(也称为 BookKeeper 集群,3 个BookKeeper 节点组成)
  • broker 集群(3 个 Pulsar 节点组成)

安装方式有:

  • 6台机器:3台用于zookeeper,3台用于bookie集群和broker集群。
  • 3台机器:每台机器上同时部署zookeeper、bookie和broker。
  • 9台机器:分别用3台机器部署zookeeper、bookie和broker集群。

奈何我的小电脑通过虚拟机构建三个机器就已经够呛了,所以采用第二个安装方案。

2 部署流程

我的电脑配置,三台centos7.5机器,8G运存,已安装JDK8,zookeeper3.5.7。

  • hadoop100:IP地址196.168.10.100
  • hadoop102:IP地址196.168.10.102
  • hadoop103:IP地址196.168.10.103

2.1 安装zookeeper

Pulsar 的安装包已包含了搭建集群所需的各个组件库。无需单独下载 ZooKeeper 安装包和 BookKeeper 安装包。(在实际中,zookeeper我们并不仅仅应用在pulsar上, 包括HBase等其他的组件也需要依赖, 所以我们此处zookeeper使用外置zk集群环境)

zookeeper的安装和基本原理可以看我之前的文章:zookeeper原理与实操

但是,zookeeper部署后, 3.5以后的版本, 会自动占用8080端口. 需要修改配置文件。这会和后边的端口有冲突,因此需要将这个改掉。具体做法为:

vim /opt/module/zookeeper-3.5.7/conf/zoo.cfg

然后添加或修改内容:admin.serverPort=8887

这个很重要,否则后面会报错。

2.2 bookie与broker配置

下载最新版本pulsar
官方下载地址:https://pulsar.apache.org/download/
本文下载的是:apache-pulsar-2.8.1-bin.tar.gz

(1)上传解压、构建软连接

tar -zxvf apache-pulsar-2.8.1-bin.tar.gz -C /opt/module
ln -s apache-pulsar-2.8.1-bin puslar_2.8.1

(2)修改bookkeeper配置文件

vim /opt/module/puslar_2.8.1/conf/bookkeeper.conf

修改其第56行:修改本地ip地址
advertisedAddress=hadoop100
修改其39行:
journalDirectory=/opt/module/pulsar_2.8.1/tmp/journal
修改其389行:
ledgerDirectories=/opt/module/pulsar_2.8.1/tmp/ledger
修改602行:
zkServers=hadoop100:2181,hadoop102:2181,hadoop103:2181

(3)修改broker集群配置文件

vim /opt/module/puslar_2.8.1/conf/broker.conf
修改第98行: 修改集群的名称
clusterName=pulsar-cluster
修改第23行: 配置zookeeper地址
zookeeperServers=hadoop100:2181,hadoop102:2181,hadoop103:2181
修改第26行: 配置zookeeper地址
configurationStoreServers=hadoop100:2181,hadoop102:2181,hadoop103:2181
修改第44行: 更改为本地ip地址
advertisedAddress=hadoop100

(4)将puslar_2.8.1这个文件夹分配到另外两台机器。我用的是xsync脚本,但是也可以用scp -r apache-pulsar-2.8.1/ node2:$PWD 进行分发
(5)修改第二台和第三台的broker地址和bookie地址。

2.3 集群启动

(1)先启动zookeeper集群,详细的看我之前的博客:zookeeper原理与实操
(2)初始化元数据,在pulsar_2.8.1/bin目录下执行一下内容:

./pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper hadoop100:2181,hadoop102:2181,hadoop103:2181 \
--configuration-store hadoop100:2181,hadoop102:2181,hadoop103:2181 \
--web-service-url http://hadoop100:8080,hadoop102:8080,hadoop103:8080 \
--web-service-url-tls https://hadoop100:8443,hadoop102:8443,hadoop103:8443 \
--broker-service-url pulsar://hadoop100:6650,hadoop102:6650,hadoop103:6650 \
--broker-service-url-tls pulsar+ssl://hadoop100::6651,hadoop102:6651,hadoop103:6651

集群元数据说明

  • cluster 集群名称
  • zookeeper
  • ZooKeeper
    集群连接参数,仅需要包含ZooKeeper集群中的一个节点即可,在哪个机器初始化,就写那个集群的zookeeper地址,我这里在hadoop01local初始化的元数据。
  • configuration-store
    Pulsar实例的配置存储集群(ZooKeeper),多集群部署时才会发挥作用,需要另外部署ZooKeeper集群,但是单集群部署时可以和–zookeeper参数设置一样,只需要包含ZooKeeper集群中的一个节点即可
  • web-service-url
    集群Web服务的URL+端口,URL是一个标准的DNS名称,默认端口8080,不建议修改。
  • web-service-url-tls
    集群Web提供TLS服务的URL+端口,端口默认8443,不建议修改。
  • broker-service-url
    集群brokers服务URL,URL中DNS的名称和Web服务保持一致,URL使用pulsar替代http/http,端口默认6650,不建议修改。
  • broker-service-url-tls
    集群brokers提供TLS服务的URL,默认端口6551,不建议修改。
    ps:如果没有DNS服务器,也可以使用多主机(multi-host)格式的service-url设置web-service-url,web-service-url-tls,broker-service-url,broker-service-url-tls
    bin/pulsar zookeeper-shell进入zk控制台,通过ls /查看所有zk节点。能看到bookies,ledgers等节点,则说明初始化成功了。

(3)启动bookkeeper服务和启动broker,这里通过脚本实现,因为不想一台一台机器去启动。

#!/bin/bash

case $1 in
"start"){
        for i in hadoop100 hadoop102 hadoop103
        do
        echo ---------- zookeeper $i 启动 ------------
        ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon start bookie"
        sleep 1s
        ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon start broker"
        done
};;
"stop"){
        for i in hadoop100 hadoop102 hadoop103
        do
        echo ---------- zookeeper $i 停止 ------------ 
        ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon stop bookie"
        sleep 3s
        ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-daemon stop broker"
        done
};;
"status"){
        for i in hadoop100
        do
        echo ---------- zookeeper $i 状态 ------------ 
        ssh $i "/opt/module/pulsar_2.8.1/bin/pulsar-admin brokers list pulsar-cluster"
        done
};;
esac

测试结果如下,启动后:
在这里插入图片描述
可以看到每台机器上对开起了broker进程和bookkeeper服务。由以上脚本可以看到/opt/module/pulsar_2.8.1/bin/pulsar-admin brokers list pulsar-cluster可以判断broker是否启动成功,当时我这里一直报错404。原因是zookeeper占用了8080端口,上面已经介绍了该怎么处理这个问题。

还需要说明一下,需要修改vim /etc/hosts将localhost映射为本机静态IP。

3 可视化监控部署

(1)下载
下载地址:https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
(2)解压
解压操作:

tar -zxf apache-pulsar-manager-0.2.0-bin.tar.gz -C /opt/module/
cd /opt/module/pulsar-manager
# 接着再次解压:
tar -xvf pulsar-manager.tar

(3)拷贝dist包到 pulsar-manager目录下并更名为ui

cd /opt/module/pulsar-manager/pulsar-manager
cp -r ../dist ui

(4)启动

cd /export/server/pulsar-manager/pulsar-manager
./bin/pulsar-manager

(5)初始化超级用户密码

CSRF_TOKEN=$(curl http://hadoop100: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://hadoop100:7750/pulsar-manager/users/superuser \
-d '{"name": "hhhSir", "password": "***", "description": "hhh", "email": "abc@qq.com"}'

(6)访问主页:http://hadoop100:7750/ui/index.html

在这里插入图片描述
在这里插入图片描述

总结

学会从繁杂的事情中静下来学点东西。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:25:11  更:2022-06-06 17:26:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:17:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码