Pulsar单集群搭建(centos7.x版本)

Pulsar单集群搭建(centos7.x版本),第1张

Pulsar单集群搭建(centos7.x版本) Pulsar单集群搭建(centos7.x版本)

线上集群的六台机器,组件分布为,三台机器安装zookeeper集群,另外三台分别安装bookeeper和broker集群。每台机器上都要安装了jdk1.8版本。 (初次安装失败就是由于zk某台节点没有安装jdk环境导致,建议环境变量全部放在/etc/profile.d/my_env.sh中)
具体架构和组件如下表:

hadoop01hadoop02hadoop03hadoop04hadoop05hadoop06zookeeperQuorumPeerMainQuorumPeerMainQuorumPeerMainbookeeperMainMainMainbrokerPulsarBrokerStarterPulsarBrokerStarterPulsarBrokerStarter 1、zookeeper分布式安装部署 1.1、解压安装
hadoop用户 hadoop03、hadoop04、hadoop05
cd /opt/hadoop
tar -zxvf zookeeper-3.4.10.tar.gz 

1.2、配置服务器编号
hadoop03  root用户

exit
cd /data1
mkdir -p zookeeper-3.4.10/zkData
chown -R hadoop:hadoop zookeeper-3.4.10
su hadoop
cd /data1/zookeeper-3.4.10/zkData
vi myid
在文件中添加与server对应的编号:
3
 
hadoop04、hadoop05 root用户

exit
cd /data
mkdir -p zookeeper-3.4.10/zkData
chown -R hadoop:hadoop zookeeper-3.4.10
su hadoop
cd /data/zookeeper-3.4.10/zkData
vi myid
在文件中添加与server对应的编号:
45
1.3、配置zoo.cfg文件
hadoop用户 hadoop03、hadoop04、hadoop05

cd /opt/hadoop/zookeeper-3.4.10/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg

修改数据存储路径配置
hadoop03
dataDir=/data1/zookeeper-3.4.10/zkData

hadoop04、hadoop05
dataDir=/data/zookeeper-3.4.10/zkData

增加如下配置
#######################cluster##########################
server.3=hadoop03:2888:3888
server.4=hadoop04:2888:3888
server.5=hadoop05:2888:3888
1.4、配置环境变量 添加zk启动脚本()
root用户 hadoop03、hadoop04、hadoop05
vi /etc/profile.d/my_env.sh

#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/hadoop/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

su hadoop
source /etc/profile

脚本
vi /home/hadoop/bin/zk.sh
#! /bin/bash

case  in
"start"){
 for i in hadoop03 hadoop04 hadoop05
 do
  ssh $i "source /etc/profile ; /opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh start"
 done
};;
"stop"){
 for i in hadoop03 hadoop04 hadoop05
 do
  ssh $i "source /etc/profile ; /opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh stop"
 done
};;
"status"){
 for i in hadoop03 hadoop04 hadoop05
 do
  ssh $i "source /etc/profile ; /opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh status"
 done
};;
esac
使用方法
zk.sh start  开启集群
zk.sh stop  开启集群
zk.sh status  开启集群

连接节点以hadoop用户时可直接使用 ,否则使用需要指定文件路径才能识别到脚本 例如:/home/hadoop/bin/zk.sh status

2、安装Pulsar 2.1、解压安装环境变量
hadoop06、hadoop01、hadoop02   hadoop用户

tar -zxvf apache-pulsar-2.8.1-bin.tar.gz
hadoop06、hadoop01、hadoop02   root用户

vi /etc/profile.d/my_env.sh

#PULSAR_HOME
export PULSAR_HOME=/opt/hadoop/pulsar-2.8.1
export PATH=$PATH:$PULSAR_HOME/bin

su hadoop
source /etc/profile
2.2、初始化集群元数据

每个集群将一些元数据写入ZooKeeper。它只需要写一次

pulsar initialize-cluster-metadata 
--cluster pulsar-cluster-1 
--zookeeper hadoop03:2181 
--configuration-store hadoop03:2181 
--web-service-url http://hadoop01:8081,hadoop02:8081,hadoop06:8081 
--web-service-url-tls https://hadoop01:8443,hadoop02:8443,hadoop06:8443 
--broker-service-url pulsar://hadoop01:6650,hadoop02:6650,hadoop06:6650 
--broker-service-url-tls pulsar+ssl://hadoop01:6651,hadoop02:6651,hadoop06:6651

初始化完成,会在最后一行显示 Cluster metadata for ‘pulsar-cluster-1’ setup correctly
如果弄错了想删除已经初始化后的集群,可以在zookeeper中删除两个路径即可

注意:由于8080端口被docker占用,所以修改为8081,没有去尝试不修改是否会造成端口冲突,可自行尝试,后面的bk、pulsar配置中的8080也需要修改为8081

rmr /namespace
rmr /admin/clusters/pulsar-cluster-1
> ##### 集群元数据说明
>
> - cluster
> 集群名称
> - zookeeper
> ZooKeeper集群连接参数,仅需要包含ZooKeeper集群中的一个节点即可
> - 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**
3、Bookkeeper安装 3.1、解压并配置环境变量
hadoop06、hadoop01、hadoop02   hadoop用户

hadoop01上先安装再分发到02 06

tar -zxf bookkeeper-server-4.8.2-bin.tar.gz


环境变量——
hadoop06、hadoop01、hadoop02   root用户

vi /etc/profile.d/my_env.sh

#BOOKKEEPER_HOME
export BOOKKEEPER_HOME=/opt/hadoop/bookkeeper-server-4.8.2
export PATH=$PATH:$BOOKKEEPER_HOME/bin

su hadoop
source /etc/profile
3.2、修改配置文件
vi $BOOKKEEPER_HOME/conf/bk_server.conf

bookiePort=3181 ##默认是3181,如果默认端口没有被占用请用默认端口
3.3、修改成自己的zk 修改成自己的zk中的一台机器
metadataServiceUri=zk+hierarchical://hadoop03:2181/ledgers
zkServers=hadoop03:2181,hadoop04:2181,hadoop05:2181
##开启Pulsar Functions功能
extraServerComponents=org.apache.bookkeeper.stream.server.StreamStorageLifecycleComponent

##设置文件存储路径
journalDirectories=/data1/bookkeeper/data/journal
ledgerDirectories=/data1/bookkeeper/data/ledgers
prometheusStatsHttpPort=8100

httpServerPort=8081

vi $BOOKKEEPER_HOME/conf/log4j.properties  文件
bookkeeper.log.dir=/data1/bookkeeper/log


hadoop06、hadoop01、hadoop02   root用户

mkdir -p /data1/bookkeeper/data/journal
mkdir -p /data1/bookkeeper/data/ledgers
mkdir -p /data1/bookkeeper/log
chown -R hadoop:hadoop /data1/bookkeeper/
su hadoop

注意:

  1. prometheusStatsHttpPort默认是8000,但实际上在bookkeeper.conf中,httpServerPort默认也是8000,会导致端口被占用。

  2. 上面的advertisedAddress需要设置为对应机器的ip,而不是全设置为同一个
    参数说明:
    advertisedAddress:指定当前节点的主机名或IP地址
    zkServers:指定zookeeper集群,用来将bookkeeper节点的元数据存放在zookeeper集群
    journalDirectories:当前bookkeeper节点的journal数据存放目录。 如果需要提高磁盘写入性能,可以指定多个目录用来存放journal数据,关键是每一个目录必须在不同的磁盘,不然反而会影响写入性能
    ledgerDirectories:当前bookkeeper节点的ledger存放目录
    3. 关于log日志文件存放位置,没有准确的修改方案,希望小伙伴有解决方案之后,在下方留言,一起交流学习

分发安装包

scp -r /opt/hadoop/bookkeeper-server-4.8.2 hadoop@hadoop02:/opt/hadoop/
scp -r /opt/hadoop/bookkeeper-server-4.8.2 hadoop@hadoop06:/opt/hadoop/
3.4 初始化bk集群

BookKeeper群集中的任何 bookie中运行一次 若出现提示,输入Y继续

hadoop06、hadoop01、hadoop02 hadoop用户

bookkeeper shell metaformat
3.5、启动bookie(三台机器都启动)
bookkeeper-daemon.sh start bookie
3.6、检查bookie是否正常运行(三台机器都检测)
bookkeeper shell bookiesanity

如果在某台bookie上检测报错,最简单的一种方式是将/data1/bookkeeper/data目录下的文件删除

4、部署Pulsar brokers 4.1、修改配置文件

hadoop01 hadoop用户

vi $PULSAR_HOME/conf/broker.conf

zookeeperServers=hadoop03:2181,hadoop04:2181,hadoop05:2181
configurationStoreServers=hadoop03:2181,hadoop04:2181,hadoop05:2181
brokerServicePort=6650
brokerServicePortTls=6651
webServicePort=8080
webServicePortTls=8443
clusterName=pulsar-cluster-1

## 启用Pulsar Functions
functionsWorkerEnabled=true
vi $PULSAR_HOME/conf/functions_worker.yml

pulsarFunctionsCluster: pulsar-cluster-1

分发安装包

scp -r /opt/hadoop/pulsar-2.8.1/conf hadoop@hadoop02:/opt/hadoop/
scp -r /opt/hadoop/pulsar-2.8.1/conf hadoop@hadoop06:/opt/hadoop/

修改每台机器 vi $PULSAR_HOME/conf/client.conf将localhost改成本机IP或hostname

hadoop01
webServiceUrl=http://hadoop01:8080/  #将localhost改成本机IP或hostname
brokerServiceUrl=pulsar:/hadoop01:6650/  #将localhost改成本机IP或hostname

hadoop02
webServiceUrl=http://hadoop02:8080/  #将localhost改成本机IP或hostname
brokerServiceUrl=pulsar:/hadoop02:6650/  #将localhost改成本机IP或hostname

hadoop06
webServiceUrl=http://hadoop06:8080/  #将localhost改成本机IP或hostname
brokerServiceUrl=pulsar:/hadoop06:6650/  #将localhost改成本机IP或hostname

启动

pulsar-daemon start broker

五、测试
订阅test主题(-n:消费的消息数量,-s:订阅的名字,-t:订阅的类型)

pulsar-client consume persistent://public/default/test 
-n 100 -s "consumer-test" -t "Exclusive"

发消息到test主题(-n:发送消息的次数,-m:消息内容)

pulsar-client produce persistent://public/default/test 
-n 1 -m "Hello Pulsar"结果
----- got message -----
Hello Pulsar
## 查看集群状态
pulsar-admin clusters get pulsar-cluster-1

相关链接:
https://zhuanlan.zhihu.com/p/272551491
https://blog.csdn.net/weixin_42003671/article/details/103031179

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5665204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存