线上集群的六台机器,组件分布为,三台机器安装zookeeper集群,另外三台分别安装bookeeper和broker集群。每台机器上都要安装了jdk1.8版本。 (初次安装失败就是由于zk某台节点没有安装jdk环境导致,建议环境变量全部放在/etc/profile.d/my_env.sh中)
具体架构和组件如下表:
hadoop用户 hadoop03、hadoop04、hadoop05 cd /opt/hadoop tar -zxvf zookeeper-3.4.10.tar.gz1.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对应的编号: 451.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:38881.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 开启集群
2、安装Pulsar 2.1、解压安装环境变量连接节点以hadoop用户时可直接使用 ,否则使用需要指定文件路径才能识别到脚本 例如:/home/hadoop/bin/zk.sh status
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/profile2.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/profile3.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
注意:
prometheusStatsHttpPort默认是8000,但实际上在bookkeeper.conf中,httpServerPort默认也是8000,会导致端口被占用。
上面的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 metaformat3.5、启动bookie(三台机器都启动)
bookkeeper-daemon.sh start bookie3.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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)