我是靠谱客的博主 文静小猫咪,最近开发中收集的这篇文章主要介绍presto对接cassandra,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为业务需要而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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部