k8s部署presto

(作者:陈玓玏)


一、前提条件

  1. 已部署k8s;
  2. 已部署hadoop和hive,可参考以下链接:
    https://blog.csdn.net/weixin_39750084/article/details/136750613?spm=1001.2014.3001.5502
    https://blog.csdn.net/weixin_39750084/article/details/138585155?spm=1001.2014.3001.5502
    https://blog.csdn.net/weixin_39750084/article/details/138674399?spm=1001.2014.3001.5502

二、镜像拉取或封装

国外镜像源太慢了,直接拉一个现成的镜像吧:docker pull prestodb/presto:0.287,自己打包也可以,自己写个dockerfile。

FROM ubuntu:20.04RUN wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
RUN wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.286/presto-server-0.286.tar.gzRUN tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/ && mv /opt/jdk-8u202-linux-x64 /opt/jdk
RUN tar -zxvf presto-server-0.286.tar.gz -C /opt/ && mv /opt/presto-server-0.286 /opt/presto-serverENV PRESTO_HOME /opt/presto-server
ENV JAVA_HOME /opt/jdk
ENV PATH $PATH:$JAVA_HOME/bin:$PRESTO_HOME/bin

jdk用的华为的镜像源,不用登录oracle。https://repo.huaweicloud.com/java/jdk/

打包并推送镜像:

docker build -t ccr.ccs.tencentyun.com/cube-studio/presto-server:0.286 .
sudo docker push ccr.ccs.tencentyun.com/cube-studio/presto-server:0.286

三、部署presto

启动脚本和Presto配置文件

apiVersion: v1
kind: ConfigMap
metadata:name: presto-config-cmlabels:app: presto-coordinator
data:bootstrap.sh: |-#!/bin/bashcd /root/bootstrapmkdir -p $PRESTO_HOME/etc/catalogapt-get updateexport JDK_JAVA_OPTIONS="-Djdk.attach.allowAttachSelf=true"apt-get install -y lessexport PATH=$PATH:$(whereis less)cat ./node.properties > $PRESTO_HOME/etc/node.propertiescat ./jvm.config > $PRESTO_HOME/etc/jvm.configcat ./config.properties > $PRESTO_HOME/etc/config.propertiescat ./log.properties > $PRESTO_HOME/etc/log.propertiessed -i 's/${COORDINATOR_NODE}/'$COORDINATOR_NODE'/g' $PRESTO_HOME/etc/config.propertiesfor cfg in ../catalog/*; docat $cfg > $PRESTO_HOME/etc/catalog/${cfg##*/}done$PRESTO_HOME/bin/launcher run --verbosenode.properties: |-node.environment=productionnode.data-dir=/var/presto/datajvm.config: |--server-Xmx16G-XX:+UseG1GC-XX:G1HeapRegionSize=32M-XX:+UseGCOverheadLimit-XX:+ExplicitGCInvokesConcurrent-XX:+HeapDumpOnOutOfMemoryError-XX:+ExitOnOutOfMemoryErrorconfig.properties: |-coordinator=${COORDINATOR_NODE}node-scheduler.include-coordinator=truehttp-server.http.port=8080query.max-memory=10GBquery.max-memory-per-node=1GBquery.max-total-memory-per-node=2GB#discovery-server.enabled=truediscovery.uri=http://presto-coordinator-service:8080log.properties: |-com.facebook.presto=INFO

如果部署时出现报错:Can not attach to current VM (try adding ‘-Djdk.attach.allowAttachSelf=true‘ to the JVM),记得在环境变量里加上export JDK_JAVA_OPTIONS="-Djdk.attach.allowAttachSelf=true"

如果出现报错:Configuration property 'discovery-server.enabled' was not used,记得把配置discovery-server.enabled=true注释掉。

配置Hive连接文件

apiVersion: v1
kind: ConfigMap
metadata:name: presto-catalog-config-cmlabels:app: presto-coordinator
data:hive.properties: |-connector.name=hive-hadoop2hive.metastore.uri=thrift://hive-service:9083

部署presto

apiVersion: apps/v1
kind: Deployment
metadata:name: presto-coordinator
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:app: presto-coordinatortemplate:metadata:labels:app: presto-coordinatorspec:containers:- name: presto-coordinatorimage: prestodb/presto:0.287command: ["bash", "-c", "bash /root/bootstrap/bootstrap.sh"]ports:- name: http-coordcontainerPort: 8080protocol: TCPenv:- name: COORDINATOR_NODEvalue: "true"volumeMounts:- name: presto-config-volumemountPath: /root/bootstrap- name: presto-catalog-config-volumemountPath: /root/catalog- name: presto-data-volumemountPath: /var/presto/datareadinessProbe:initialDelaySeconds: 60periodSeconds: 5httpGet:path: /v1/statusport: http-coordvolumes:- name: presto-config-volumeconfigMap:name: presto-config-cm- name: presto-catalog-config-volumeconfigMap:name: presto-catalog-config-cm- name: presto-data-volumeemptyDir: {}
---
kind: Service
apiVersion: v1
metadata:labels:app: presto-coordinatorname: presto-coordinator-service
spec:ports:- port: 8080targetPort: http-coordname: http-coordselector:app: presto-coordinatortype: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:name: presto-worker
spec:replicas: 2revisionHistoryLimit: 10selector:matchLabels:app: presto-workertemplate:metadata:labels:app: presto-workerspec:initContainers:- name: wait-coordinatorimage:  prestodb/presto:0.287command: ["bash", "-c", "until curl -sf http://presto-coordinator-service:8080/ui/; do echo 'waiting for coordinator started...'; sleep 2; done;"]containers:- name: presto-workerimage: prestodb/presto:0.287command: ["bash", "-c", "bash /root/bootstrap/bootstrap.sh"]ports:- name: http-coordcontainerPort: 8080protocol: TCPenv:- name: COORDINATOR_NODEvalue: "false"volumeMounts:- name: presto-config-volumemountPath: /root/bootstrap- name: presto-catalog-config-volumemountPath: /root/catalog- name: presto-data-volumemountPath: /var/presto/datareadinessProbe:initialDelaySeconds: 60periodSeconds: 5httpGet:path: /v1/statusport: http-coordvolumes:- name: presto-config-volumeconfigMap:name: presto-config-cm- name: presto-catalog-config-volumeconfigMap:name: presto-catalog-config-cm- name: presto-data-volumeemptyDir: {}

部署结束后,会起3个pod,一个服务:
在这里插入图片描述
在这里插入图片描述

四、使用presto

访问web界面
在这里插入图片描述
安装及连接客户端:

wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.208/presto-cli-0.208-executable.jar
chmod +x presto-cli-0.208-executable.jar
./presto-cli-0.208-executable.jar --server 192.168.3.100:34082 --catalog hive --schema default

使用客户端:

show schemas;
show tables;
select * from test;

在这里插入图片描述
我部署后能正确查询信息,但是总是有报错:ERROR: failed to open pager: Cannot run program "less": error=2, No such file or directory,这个报错的原因是没有装less,是presto用来分页的工具,在初始化脚本里已添加了,加上之后就没问题了。由初始化脚本中的以下代码解决:

apt-get update
apt-get install -y less
export PATH=$PATH:$(whereis less)

BUG全部解决后,使用如下:
在这里插入图片描述
虽然能正常使用presto了,但是k8s中显示presto-worker的deployment有BUG,Readiness probe failed:,应该是健康检查出了问题。
在这里插入图片描述
这个问题的解决,有两步:1. 把readinessProbe的initialDelaySeconds时间延长些;2.注意httpget写的path要正确,不知道怎么是正确的,可以用helm生成一个yaml,对比看看。我的正确配置后,如下:

  readinessProbe:initialDelaySeconds: 60periodSeconds: 5httpGet:path: /v1/statusport: http-coord

注意port和yaml里设置的保持一致。
至此,部署都没问题了。
在这里插入图片描述

参考链接:

https://blog.csdn.net/chenleiking/article/details/82493798

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-挂盘-分区-卸盘

Linux-挂盘-分区-卸盘 1. 添加硬盘 2. 查看硬盘 [rootlocalhost /]# lsblk # 查看我们新添加的磁盘 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 …

百度智能云参与信通院多项边缘计算标准编制,「大模型时代下云边端协同 AI 发展研讨会」成功召开

1 中国信通院联合业界制定、发布多项标准化成果,推动产业发展 大模型开启了 AI 原生时代,云边端协同 AI 构建了「集中式大规模训练」、「边缘分布式协同推理」新范式,有效降低推理时延和成本,提升数据安全和隐私性,也…

AtCoder ABC352 A-D题解

比赛链接:ABC352 Problem A: 签到题。 #include <bits/stdc.h> using namespace std; int main(){int N,X,Y,Z;cin>>N>>X>>Y>>Z;if((X<Z && Z<Y) || (Y<Z && Z<X))cout<<"YES"<<endl;else…

数据采集与AI分析,亮数据+通义千问助力跨境电商前行

文章目录 前言工具介绍数据采集工具亮数据Web Scraper IDE亮点 AI数据分析工具 实战电商数据采集与AI分析电商平台选取数据采集完全托管数据集自定义数据集 AI分析 价格总结 前言 随着信息技术的飞速发展&#xff0c;数据采集与AI分析在跨境电商中扮演着越来越重要的角色。通过…

用ControlNet+Inpaint实现stable diffusion模特换衣

用ControlNetInpaint实现stable diffusion模特换衣 ControlNet 训练与架构详解ControlNet 的架构用于文本到图像扩散的 ControlNet训练过程Zero卷积层的作用解释 inpaintInpaint Anything 的重要性Inpaint Anything 的功能概述 在现代计算机视觉领域&#xff0c;稳定扩散&#…

微信小程序开发 tabbar组件常见问题

一、 tabbar不显示问题 问题 刚开始我在app.json中配置了下面的代码&#xff0c;但tabbar并没有显示。代码如下&#xff1a; "tabBar": {"custom": true,"color": "#7A7E83","selectedColor": "#3cc51f","…

【机器学习-08】 | Scikit-Learn工具包进阶指南:Scikit-Learn工具包之决策树算法实战分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

微信H5跳小程序 wx-open-launch-weapp ios显示且正常跳转,安卓不显示不报错解决方案

前提&#xff1a;在一切都正常(无报错&#xff0c;没有写法错误等)的情况下&#xff0c;出现这个问题: 去你的h5项目&#xff0c;用浏览器打开&#xff0c;在network随便找一个静态文件&#xff0c;在response响应标头中找找&#xff0c;是否有Content-Security-Policy这个头&…

服务高峰期gc,导致服务不可用

随着应用程序的复杂性和负载的不断增加&#xff0c;对JVM进行调优&#xff0c;也是保障系统稳定性的一个重要方向。 需要注意&#xff0c;调优并非首选方案&#xff0c;一般来说解决性能问题还是要从应用程序本身入手&#xff08;业务日志&#xff0c;慢请求等&#xff09;&am…

struct.unpack_from()学习笔记

struct.unpack_from(fmt,b_data,offset) 按照指定的格式fmt&#xff0c;从偏移位置offset&#xff0c;对b_data开始解包&#xff0c;返回数据格式是一个元组(v1,v2…) fmt可以有&#xff1a; _struct.py: The remaining chars indicate types of args and must match exactly;…

基于Vue的验证码实现

一、验证码核心实现 创建slide-verify.vue&#xff0c;代码如下&#xff1a; <template><divclass"slide-verify":style"{ width: w px }"id"slideVerify"onselectstart"return false;"><!-- 图片加载遮蔽罩 -->&…

java项目之图书管理系统源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 系统主要分为管理员角色和用…

【Redis7】Redis持久化机制之RDB

文章目录 1.RDB简介2.RDB配置触发设置3.RDB的优缺点4.如何检查修复RDB文件5.如何禁用RDB6.RDB参数优化7.总结 1.RDB简介 Redis持久化机制中的RDB&#xff08;Redis Database&#xff09;是一种将Redis在某个时间点的数据以快照形式保存到磁盘上的方法。 原理&#xff1a;RDB通…

Node.js版本管理与npm镜像源管理

一、nvm —— node的版本管理工具 1.安装 nvm Windows 使用 nvm-windows点击跳转下载网站。 按照图示操作步骤下一步即可&#xff0c;对于下载位置推荐不要C盘任意即可 2.查看可用的 Node.js 版本&#xff1a; nvm list available #显示所有可以下载的版本3.安装特定的…

自动化证书管理|如何通过可管理的ACME为“90天SSL证书”做好准备?

SSL证书在保护组织的Web通信安全方面发挥着至关重要的作用。最近的趋势表明&#xff0c;在增强安全性诉求的推动下&#xff0c;SSL证书有效期逐渐缩短。这一变化需要组织耗费更多的时间和资源来进行证书更新工作&#xff0c;为了降低潜在风险并简化流程&#xff0c;自动化证书管…

windows、mac、linux中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换

文章目录 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是…

python查找内容在文件中的第几行(利用了滑动窗口)

def find_multiline_content(file_path, multiline_content):with open(file_path, r) as file:# 文件内容file_lines file.readlines()# 待检测内容multiline_lines multiline_content.strip().split(\n)# 待检测内容总行数num_multiline_lines len(multiline_lines)matchi…

安装测缝计安装事项详解

在建筑和工程领域&#xff0c;测量缝隙和裂缝的准确性对于工程质量和安全性至关重要。测缝计作为一种专业的测量工具&#xff0c;能够帮助工程师和施工人员准确测量和监测建筑结构的缝隙情况&#xff0c;进而采取合适的修复和加固措施&#xff0c;保证建筑物的稳定性和安全性。…

PCIe协议之-Flow Control基础

✨前言&#xff1a; Flow Control即流量控制&#xff0c;这一概念起源于网络通信中。PCIe总线采用Flow Control的目的是&#xff0c;保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP&#xff08;事务层包&#xff09;。也就是说&#xff0c;发送端在发送前可以…

Flat Ads获广东电视台报道!CEO林啸:助力更多企业实现业务全球化增长

近日,在广州举行的第四届全球产品与增长展会(PAGC2024)上,Flat Ads凭借其卓越的一站式全球化营销和创新的变现方案大放异彩,不仅吸引了众多业界目光,同时也在展会上斩获了备受瞩目的“金帆奖”,展现了其在全球化营销推广领域的卓越实力和专业服务。 在大会现场,Flat Ads的CEO林…