概述
因为业务需要而cassandra查询功能缺少全局排序,测试presto+cassandra查询的方案
测试时使用的cassandra版本为Cassandra 3.11.3
测试时使用的presto版本为presto-server-0.230
测试环境:三个cantos节点:
10.28.3.137 cluster1 localhost
10.28.3.142 cluster2 localhost
10.28.3.144 cluster3 localhost
1.下载和安装cassandra
因测试集群已经安装好cassandra服务,具体安装步骤请参考cassandra官网或者其他cassandra安装的博客
2.下载和安装presto
1.下载地址请前往presto官网 https://prestodb.io/download.html
presto-server-0.230.tar.gz
presto-cli-0.230-executable.jar
并上传至服务器/usr/local路径下
2.解压 tar -xzvf presto-server-0.230.tar.gz
解压后的目录为【presto-server-0.230】
3.配置
估摸这presto重点都在配置上了。。。。
3.1 首先在【presto-server-0.230】目录下创建【etc】文件夹
此时etc路径为 /usr/local/presto-server-0.230/etc
3.2 配置node.properties
在etc目录中新建node.properties文件
此时文件路径为 /usr/local/presto-server-0.230/etc/node.properties
node.environment=pretest
node.id=cluster2
node.data-dir=/usr/local/presto-server-0.230/presto/data
node.environment 是集群名字,群集中的所有Presto节点必须设置相同
node.id 每个节点的唯一标识
node.data-dir 数据目录的位置(文件系统路径)。Presto将在此处存储日志和其他数据
3.3 配置jvm.config
在etc目录中新建jvm.config文件
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
此处我们是参照官网设置。
3.4 配置 config.properties
3.4.1 coordinator节点的配置
选择一个节点(cluster1)作为coordinator
同样在etc目录中新建config.properties文件
coordinator=true
#node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=16GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://cluster1:8080
coordinator:是coordinator角色还是worker角色
node-scheduler.include-coordinator 是指可否允许在协调器上安排工作,即计算节点是否包含coordinator,允许就注释,不允许就取消注释
http-server.http.port 是服务启动的端口号默认8080,可以按照需求修改、
discovery-server.enabled 节点是否作为发现节点的web服务。分发任务时,用于发现计算节点,每个计算节点启动时会在其上注册
discovery.uri 发现节点的web服务地址,一般和coordinator部在一起。其中的host建议改为IP更好,注意端口和http-server.http.port似乎是保持一致的
query.max-memory:每个查询可以用的最大内存。
query.max-memory-per-node:每个查询每台计算节点可以用的最大内存。
query.max-total-memory-per-node:每个查询每台计算节点可以用的总的最大内存,包括查询任务用的内存和系统消耗的内存。
3.4.2 workers节点的配置
其他节点作为workers节点
同样在etc目录中新建config.properties文件
coordinator=false
http-server.http.port=8080
query.max-memory=16GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://10.28.3.137:8080
3.5 配置log.properties
在etc目录中新建log.properties文件
com.facebook.presto=INFO
4 配置cassandra作为数据源
4.1 在etc目录下创建【catalog】文件夹
4.2 在【catalog】目录下创建cassandra.properties文件
路径是 /usr/local/presto-server-0.230/etc/catalog/cassandra.properties
connector.name=cassandra
cassandra.contact-points=cluster1,cluster2,cluster3
5.启动presto服务
/usr/local/presto-server-0.230/bin
启动服务命令
sh launcher start
停止服务,查看服务状态命令
sh launcher stop
sh launcher status
将每个节点都启动,查看状态为Running即可
6.客户端
将presto-cli-0.230-executable.jar 重命名为presto ,然后chmod +x
测试中我们重命名为 presto-cli
执行以下命令连接Cassandra数据库
./presto-cli --server 10.28.3.137:8080 --catalog cassandra --schema platform_log
其中server请选择Cassandra的种子节点,端口是前面3.4配置的端口
schema 对应的是cassandra的keyspace
至此,cassandra对接presto功能性验证完成
碰到的问题
起初3.4.1中node-scheduler.include-coordinator没有注释,即coordinator不作为计算节点;同时discovery.uri中写的是hostname
查询报错:
Query 20200114_083912_00013_yd3wx failed: Insufficient active worker nodes. Waited 5.00m for at least 1 workers, but only 0 workers are active
说明worker没起来,排查发现是两个worker执行启动命令以后,又会停止了,从下面操作可以看到
后注释了node-scheduler.include-coordinator,并且把worker的discovery.uri中hostname改为了ip地址,查询可以正常执行了
最后
以上就是文静小猫咪为你收集整理的presto对接cassandra的全部内容,希望文章能够帮你解决presto对接cassandra所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复