![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
presto
eagooqi
大数据处理专家
展开
-
Presto监控和配置:配置
Web UI Query基本状态的查询JMX HTTP API GET /v1/jmx/mbean[/{objectName}] • com.facebook.presto.execution:name=TaskManager • com.facebook.presto.execution:name=QueryManager • com.facebook.presto.execution:name=NodeScheduler事件通知 Event Listener原创 2020-12-10 15:06:26 · 1076 阅读 · 1 评论 -
presto 相关使用中的问题
1、Error injecting constructor, java.lang.IllegalArgumentException: query.max-memory-per-node set to 20GB, but only 10213706957B of useable heap available解决方法:Presto will claim 0.40 * max heap size for the system pool, so your query.max-memory-per-node mu原创 2020-12-10 13:53:42 · 1039 阅读 · 0 评论 -
Presto 标量函数注册和调用过程简述
上一篇文章已经介绍过如何进行函数开发,本文主要讲述标量函数(Scalar Function)实现之后,是如何在Presto内部进行注册和被调用的。主要讲述标量函数是因为:三类函数的注册和调用过程略有不同,而实际查询中调用最多的是标量函数。标量函数注册函数在能够调用之前,首先要进行注册,上一篇文章已经介绍过函数注册的方法,那么函数在注册时究竟注册了哪些信息呢?函数注册实际上是维护FunctinoRegistry类中的一个 MultiMap,Key 为函数的限定名(QualifiedName,可以简单地转载 2020-11-10 12:05:03 · 423 阅读 · 0 评论 -
Presto System load过高问题调研
背景:我们Presto有个集群,每6.5天会出现System load过高问题,这个集群有个特点,只服务于一个业务方,且SQL基本相似。如图所示:Sys load很高(20-40%),严重影响查询性能业务SQL查询时间表现为:ScanFilterAndProjectOperator(Source Stage)阶段有机器有明显的长尾现象,比如20台机器,正常这个Operator执行时间只需要1S,但是有几台机器会耗时几分钟。而重启服务后,查询恢复正常。先jstack看下Presto在干啥:转载 2020-11-10 11:45:26 · 626 阅读 · 0 评论 -
Presto兼容Hive SQL的一些改造工作
前言Presto是一款优秀的分布式SQL查询引擎,适用于即席查询和报表分析等业务,其使用了ANSI SQL语法和语义,使用标准是SQL-92和SQL:2016。但是因为很多业务方一直使用Hive离线引擎来做SQL分析,而Hive使用类似SQL的语法(HQL)。为了使用户能平滑的将业务迁移到Presto上或者能让SQL同时跑到Presto及Hive引擎上,我们对Presto语法及一些算子等做了二次兼容开发,来最大限度降低用户迁移成本。接下来我们介绍下我们的主要兼容工作。一、权限认证Presto默认转载 2020-11-10 11:38:37 · 1006 阅读 · 0 评论 -
Presto 函数实现简述
0. 写在前面Presto Functions 并不能像 Hive UDF 一样动态加载,需要根据 Function 的类型,实现 Presto 内部定义的不同接口,在 Presto 服务启动时进行注册,然后才能在 SQL 执行时进行调用。1. 函数定义Presto 内部将 Functions 分为以下三大类: Scalar Function,即标量函数。将传递给它的一个或者多个参数值,进行计算后,返回一个确定类型的标量值。 Aggregation Function,即聚合函数。转载 2020-11-10 11:37:28 · 1438 阅读 · 0 评论 -
Presto调度task选择Worker方法
Presto调度task方式: public final class SystemPartitioningHandle implements ConnectorPartitioningHandle { private enum SystemPartitioning { SINGLE, FIXED, SOURCE, SCALED, COORDINATOR_ONLY, ARBITRARY .转载 2020-11-10 11:19:23 · 679 阅读 · 0 评论 -
Presto集群内存不足时保护机制
为了防止集群里节点OOM,Presto有个循环线程来获取当前集群节点和集群整体内存占用情况。通过这篇文章:Presto内存管理相关参数设置 我们知道Presto里分为RESERVED_POOL和GENERAL_POOL。判断节点是否阻塞(内存不足):如果使用RESERVED_POOL(意思是说最大SQL使用这个POOL),那判断集群内存超出内存的方法就是:1、RESERVED_POOL内存被SQL占用了2、GENERAL_POOL里有被阻塞的Node因为RESERVED_POOL会导致内转载 2020-11-10 11:18:11 · 700 阅读 · 0 评论 -
Presto内存管理相关参数设置
背景之前介绍过Presto内存管理和分配策略,但是那个是0.192版本,详细见:Presto内存管理原理和调优 ,0.201之后内存管理作了新的修改,所以重新简单分析下,然后给出一个配置模板,希望对使用Presto的同学有帮助。两种内存Presto里面内存只有2种内存,一种是user memory,另一种是system memory。system memory用于input/output/exchange buffers等,user memory 用于hash join、agg这些。内存池转载 2020-11-10 11:15:21 · 854 阅读 · 0 评论 -
Presto ORC及其性能优化
简介ORC的全称是(Optimized Row Columnar),其是为了加速Hive查询以及节省Hadoop磁盘空间而生的,其使用列式存储,支持多种文件压缩方式。由于其被广泛应用在Hadoop系统中,Presto 0.77版本在Hive Connector里实现了ORC Reader。ORC文件结构上图(图1)来自网络,有很多文章通过这张图片介绍了ORC文件结构,我这里就不多啰嗦了,我们直接通过数据来看文件格式吧。创建表:插入数据: insert into orc(i.转载 2020-11-10 11:09:25 · 766 阅读 · 1 评论 -
记一次Presto Worker OOM的查找过程
背景最近Presto集群又上线了几个新业务,伴之而来的是OOM很频繁,且发生时间多在早晨8点左右,线上稳定性是高优需要解决的,所以查找了下导致Presto集群OOM的原因,发现了一些问题,这里抛砖引玉下,可能其他使用Presto的用户也会遇到类似的问题。排查过程我给一些业务划分了不同的label,这里说明下我们把Presto引擎改进了下,可以动态将机器划分不同的label,这样SQL查询时候指定不同的label,SQL调度时只根据指定的label查找机器即可。之后发现一个业务方的SQL会导致集群转载 2020-11-10 11:06:24 · 443 阅读 · 0 评论 -
Jetty导致Presto堆外内存泄露的排查过程
背景一个Presto集群报警,显示Coordinator内存不足。看了下,发现RES内存(86.7G) > XMX(72G) + 堆外内存(10G),然后看了下Presto UI里Resource Utilization的Non-Heap Memory Used,只用了200M。问题奇怪,pmap查看进程的内存映像信息,如下: 1234567891011 [presto@hostname ~/presto-current]$ pmap -x转载 2020-11-10 10:32:06 · 805 阅读 · 1 评论