presto集群部署,并读取delta lake数据

presto集群部署,并读取hdfs上的delta lake数据

  • 记录presto的安装与部署,使用presto的版本为0.278

  • 使用presto读取在hdfs上的delta数据

1.节点设计

node1node2node3
coordinator
worker

2. 配置文件

在安装目录中创建一个etc目录,包含以下配置文件:

  • node.properties: 每个节点的环境配置
  • jvm.config: JVM的命令行选项
  • config.properties: Presto Server的配置项
  • catalog/delta.properties: 数据源连接器的配置,我们使用presto读取delta数据

2.1 node.properties

node.environment:环境的名称。所有节点的环境名称需一样,不能有特殊符号,启动会报错。

node.id:Presto安装的唯一标识符。所有节点都要不一样

  • node1
node.environment=nhprod
node.id=nanhulab-2022-1205-node1
node.data-dir=/var/presto/data
  • node2
node.environment=nhprod
node.id=nanhulab-2022-1205-node2
node.data-dir=/var/presto/data
  • node3
node.environment=nhprod
node.id=nanhulab-2022-1205-node3
node.data-dir=/var/presto/data

2.2 jvm.config

每个节点都一样,能使用空格或其他特殊字符

-server
-Xmx5G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

2.3 config.properties

  • node1设置为coordinator
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8090
query.max-memory=6GB
query.max-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://ip:8090
  • node2,node3设置为worker
coordinator=false
http-server.http.port=8090
query.max-memory=6GB
query.max-memory-per-node=2GB
discovery.uri=http://ip:8090

2.4 log.properties

设置日志等级DEBUG,INFO,WARN和ERROR

com.facebook.presto=INFO

2.5 连接器配置

在etc下目录新建catalog文件夹,各类connector的文件
delta的属性几乎和hive的相同
配置hive.config.resources的属性,避免presto找不到hadoop相关的文件

  • delta.properties
connector.name=delta
hive.metastore.uri=thrift://ip:9083
hive.config.resources=/usr/local/hadoop/etc/hadoop/core-site.xml,/usr/local/hadoop/etc/hadoop/hdfs-site.xml

3. 启动

集群启动脚本

echo "开启presto集群"
for host in node1 node2 node3
do
 echo "开启$host的presto"
 ssh $host "source /etc/profile;/opt/presto/bin/launcher start"
done

验证

  • 可以访问web: http://ip:8090/ui/
  • jps查看,有prestoServer进程

4. 使用Presto CLI访问

4.1 jar包授予权限

mv presto-cli-0.278-executable.jar presto
chmod +x presto

4.2 指定catalog为delta

./presto --server ip:8090 --catalog delta

4.3 sql查询

直接使用delta表的path进行查询 ,我这边delta表在hadoop上,所以是hdfs开头

  • delta是catalog的名称

  • "$ path$ “指明表名是路径,个人觉得也可以理解为Schema。show schemas可以看到有”$ path$ "
    schemas

  • 全路径为delta.$ path$ .开头,后面加delta的path

  • delta表的path不能有大写字母,presto会将路径小写,导致找不到path,一直报错,大坑!!!!

select * from delta."$path$"."hdfs:ip:9000/data"

命令行的效果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值