Presto 部署

160 阅读1分钟

Presto on k8s

技术分享 | Presto性能对比测试:Kubernetes部署 VS 物理机部署 - 知乎 (zhihu.com)  

在Kubernetes上部署Presto_迷途的攻城狮(798570156)的博客-CSDN博客  

[Design] Disaggregated Presto Coordinators · Issue #15453 · prestodb/presto (github.com)

Disaggregated Coordinator · (prestodb.io)

Presto on docker

代码库

prestodb开源仓库中的0.272tag作为基础的presto代码库

docker 基础镜像

基于运维部centos7.2基础镜像。主要是安装了jdk11,

FROM registry.xiaojukeji.com/didionline/sre-didi-centos7-base-v2:stable


# 设置镜像标签
LABEL Description="This image is used for Diquery Presto"
MAINTAINER victorchutian <victorchutian@didiglobal.com>


# install java 11
RUN yum --enablerepo=didi_op_toa install  java-11-openjdk-devel java-11-openjdk -y \
    && alternatives --install  /usr/bin/java java /usr/java/jdk1.8.0_144/jre/bin/java 10 \
    && alternatives --install  /usr/bin/java java /usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64/bin/java 100 \
    && alternatives --auto java \
    && alternatives --install  /usr/bin/javac javac /usr/java/jdk1.8.0_144/bin/javac 10 \
    && alternatives --install  /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64/bin/javac 100 \
    && alternatives --auto javac


RUN yum --enablerepo=didi_op_toa clean a

 

docker 业务镜像

FROM registry.xiaojukeji.com/didionline/diquery-presto-docker-base-with-jdk11:stable


ENV PRESTO_HOME="/home/xiaoju/presto"


## 增加日志映射
COPY ./init/899-logsymbol.required.sh /etc/container/init/899-logsymbol.required.sh
COPY ./init/990-startapp.required.sh /etc/container/init/990-startapp.required.sh


####################### presto ########################
RUN mkdir ${PRESTO_HOME}
COPY --chown=qjw:qjw ./app ${PRESTO_HOME}
RUN chown -R qjw:qjw ${PRESTO_HOM

 

编译打包

 

使用项目根目录下编写的build.sh 打包(build-local*.sh脚本用于本地调试打包)。

打包完成后的output结构如下:

output
├── Dockerfile # 业务docker构建文件
├── app  # 对应镜像中的 /home/xiaoju/presto
│   ├── NOTICE
│   ├── README.txt
│   ├── bin 
│   ├── cluster-configs # 集群配置
│   ├── control.sh #启动脚本
│   ├── lib 
│   ├── plugin
│   └── templates # 配置模板
├── init # 弹性云初始化脚本
│   ├── 899-logsymbol.required.sh # data盘挂载
│   └── 990-startapp.required.sh # app启动脚本
└── presto-server.tar.gz # 编译产出的tar包

cluster-configs中存放的是集群配置文件,文件夹名称为odin的namespace。

templates为不同环境集群的启动模板。

control.sh中定义了cluster和模板的映射关系。

启动

以后台方式启动

990-startapp.required.sh
-> /home/qjw/presto/control.sh start
  -> /home/qjw/presto/bin/lanucher start