前置阅读:
pulsar-1:docker部署pulsar多节点集群
(1).为什么使用pulsar-presto
(2).docker部署pulsar-presto
(3).docker部署pulsar-sql
(4).使用pulsar-presto/pulsar-sql查询pulsar
(1).为什么使用pulsar-presto
什么是presto:
但对于pulsar在我们的业务定位来说,我只是想寻找/提供一种TB级消息存储规模下定位问题/简单使用的手段,不需要像图中这样兴师动众。
需求是:先有。
(2).docker部署pulsar-presto
mkdir -p /app/3rd/pulsar-presto/conf/presto/catalog
cp https://github.com/apache/pulsar/blob/master/conf/presto/catalog/pulsar.properties /app/3rd/pulsar-presto/conf/presto/catalog
修改pulsar.properties:
#the url of Pulsar broker service
#如果多个broker,用,分隔,broker的8080端口提供http服务:
pulsar.broker-service-url=http://10.0.36.69:8080,http://10.0.37.216:8080,http://10.0.39.216:8080
# the url of Pulsar broker web service
pulsar.web-service-url=http://10.0.36.69:8080,http://10.0.37.216:8080,http://10.0.39.216:8080
#URI of Zookeeper cluster
#如果多个zk,用,分隔
pulsar.zookeeper-uri=10.0.36.69:2181,10.0.37.216:2181,10.0.39.216:2181
docker run -it -d -p 8081:8081 -v /app/3rd/pulsar-presto/conf/presto/catalog/pulsar.properties:/pulsar/conf/presto/catalog/pulsar.properties --name sql-worker -d -it --restart=always apachepulsar/pulsar-all:2.8.0 /pulsar/bin/pulsar sql-worker run
启动sql-worker有可能会遇到问题:
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "container init exited prematurely".
解决方式:
1.卸载旧版本 docker
yum remove docker docker-common docker-selinux dockesr-engine -y
2.升级系统软件
yum upgrade -y
3.安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4.添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新并安装 docker-ce
yum makecache fast yum install docker-ce -y
6.启动服务
systemctl daemon-reload systemctl restart docker
访问pulsar-sql的web:htttp://ip:8081
默认密码是admin
登陆后:(登陆很慢)
显示当前的运行情况,可以看到这是一个test版本。
(3).docker部署pulsar-sql
mkdir -p /app/3rd/pulsar-sql/bin
cp https://github.com/apache/pulsar/blob/master/bin/pulsar /app/3rd/pulsar-sql/bin
修改357行:将ip改为(1)中的pulsar-presto(sql-worker)所在机器的ip
exec JAVA -cp "
docker run --name pulsar-sql -d -it --restart=always -v /app/3rd/pulsar-sql/bin/pulsar:/pulsar/bin/pulsar apachepulsar/pulsar-all:2.8.0 /pulsar/bin/pulsar sql
(4).使用pulsar-presto/pulsar-sql查询pulsar
进入pulsar-sql容器使用:
docker exec -it c84a7afbd097 /bin/sh
进入presto命令行:
/pulsar/bin/pulsar sql
或者直接执行:
docker exec -it c84a7afbd097/pulsar/bin/pulsar sql
简单查询一下:某个topic的消息
select * from "pulsar"."tenant/namespace/"."delete_cache";
select * from "pulsar"."tenant/namespace/"."delete_cache" limit 1;
"pulsar"是catalog,必须指定。
在pulsar-presto的web界面可以看到刚才的执行情况:
可以看出pulsar-presto的web还很初级,完善后应该会很强大,持续关注。