java使用presto的简单介绍

博主:adminadmin 2022-12-05 02:06:07 92

今天给各位分享java使用presto的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Classloader、插件化开发(结合Presto)

注意:

双亲委派模式是在Java 1.2后引入的,其工作原理的是:

双亲委派模式优势

一般来说,例如程序 hello.jar 执行到:

会按照双亲委派模型进行加载类 Demo 。如果 Demo 在 hello.jar 内, AppClassLoader 就将其加载完成;但是如果例如 SPI 这种,既不在应用 hello.jar 内又不在系统类路径内,那么就要抛弃双亲委派模型,获取 线程上下文类加载器 加载( 线程上下文类加载器 默认是 AppClassLoader ,此时的 线程上下文类加载器 肯定是自定义的类加载器)。

自定义一个 破坏双亲委派模型的类加载器 的方法:

深入理解Java类加载器

这里介绍2种加载方式:

例如要加载类:

将其编译为class文件,存放在路径 /Users/root/Projects/idea/my/com 。

这时要加载它:

对于SPI这种,就需要用到ServiceLoader加载。可以参考地址:

需要注意:

知识点

插件化的一个重要目标就是利用类加载器实现类隔离(比如不同厂商版本的依赖包),其原理在于在类中(例如 Demo )隐式类加载器就是 Demo 的类加载器(一般为插件类加载器),对于插件中出现的插件外的类(例如SPI接口类)则不加载。

这里分析Presto的connector插件架构。

Presto的自定义类加载器 PluginClassLoader 继承 URLClassLoader 类并重写了 loadClass ,其类加载逻辑为:

注意:

Java 自定义 ClassLoader 实现隔离运行不同版本jar包的方式

从上面我们得知,如果采取ServiceLoader的SPI方案,应该在 resources/META-INF/services 中存放实现类的全限定名。有意思的是Presto的插件基本都没有这个声明文件,但是编译打包后插件模块的 target/classes 中却能找到。如果观察插件的 pom.xml 文件,就会发现 packagingpresto-plugin/packaging 。其实在根 pom.xml 中使用了presto自己的打包插件 presto-maven-plugin ,将该maven插件打开看就能发现 ServiceDescriptorGenerator 中会在打包时自动生成了声明文件。

SOFA-Ark 是蚂蚁金服开源的一款基于Java实现的轻量级类隔离加载容器。

具体可以参考博客: sofa-ark类隔离技术分析调研

站在插件的角度看待,我觉得:

你应该知道的Java Classloader - 知乎

大数据平台最核心的软件是

大数据平台最核心的软件是:

一、Phoenix

这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。

Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

二、Stinger

原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架。某些测试下,Stinger能提升10倍左右的性能,同时会让Hive支持更多的SQL,其主要优点包括:让用户在Hadoop获得更多的查询匹配。其中包括类似OVER的字句分析功能,支持WHERE查询,让Hive的样式系统更符合SQL模型。

三、Presto

Facebook开源的数据查询引擎Presto,可对250PB以上的数据进行快速地交互式分析。该项目始于2012年秋季开始开发,目前该项目已经在超过1000名Facebook雇员中使用,运行超过30000个查询,每日数据在1PB级别。Facebook称Presto的性能比诸如Hive和Map*Reduce要好上10倍有多。

四、Shark

Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。

五、Pig

简介:Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

用cassandra + presto 代替oracle怎么样

终于把Cassandra+Presto+SpagoBI方案验证通过了。验证了Presto的JDBC Driver 、Prestogres网关、SHIB三种方式。

一、Presto JDBC驱动方案

Presto JDBC驱动方案,Java动用客户端,如dbeaver可以使用Presto JDBC驱动访问,执行SQL语句。这其中要注意的问题是:需要添加“user.timezone=Shanghai/ASIA”参数。

在自己写程序调用Presto JDBC驱动时,需要注意现在的版本已经是独立版本,不再需要调用引用Jar包。此外,也需要设置“user.timezone=Shanghai/ASIA”.。我在这个问题纠结了很久。

此外,需注意SpagoBI无法使用Presto JDBC驱动程序,只能使用Prestogres网关方案。

二、Prestogres网关方案

使用Prestogres网关方案时,需注意protocolVersion=2。这一步,我也是摸索了很久才找到连接一直无法测试成功的原因。SpagoBI测试成功后,PostgreSQL客户端也可以访问Presto了。

三、SHIB方案

SHIB方案安装配置简单,很容易成功。但使用SHIB后,发现界面粗糙,功能太简单,难以在实际生产中使用。

四、总结

以上几种方案中,Prestogres网关方案,可以使用PostgreSQL 客户端和JDBC驱动,支持SpagoBI等BI工具。但这种方式架构复杂,可能有性能瓶颈,无法发挥该方案的优势。SHIB现在代码量较小,在Team中有报表开发经验的成员即可上手。如果时间和人力允许,开发一个轻量级的Bigdata BI也是可能的。我更推荐使用SHIB+定制开发的模式。

presto如何数据库中有哪些库

可以浏览很多数据库呀!Presto 是 Facebook 推出的一个基于Java开发的大数据分布式 SQL 查询引擎,可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别,据称该引擎的性能是 Hive 的 10 倍以上。Presto 可以查询包括 Hive、Cassandra 甚至是一些商业的数据存储产品,单个 Presto 查询可合并来自多个数据源的数据进行统一分析。Presto 的目标是在可期望的响应时间内返回查询结果,Facebook 在内部多个数据存储中使用 Presto 交互式查询,包括 300PB 的数据仓库,超过 1000 个 Facebook 员工每天在使用 Presto 运行超过 3 万个查询,每天扫描超过 1PB 的数据。

大数据分析应该掌握哪些基础知识?

Java基础语法

· 分支结构if/switch

· 循环结构for/while/do while

· 方法声明和调用

· 方法重载

· 数组的使用

· 命令行参数、可变参数

IDEA

· IDEA常用设置、常用快捷键

· 自定义模板

· 关联Tomcat

· Web项目案例实操

面向对象编程

· 封装、继承、多态、构造器、包

· 异常处理机制

· 抽象类、接口、内部类

· 常有基础API、集合List/Set/Map

· 泛型、线程的创建和启动

· 深入集合源码分析、常见数据结构解析

· 线程的安全、同步和通信、IO流体系

· 反射、类的加载机制、网络编程

Java8/9/10/11新特性

· Lambda表达式、方法引用

· 构造器引用、StreamAPI

· jShell(JShell)命令

· 接口的私有方法、Optional加强

· 局部变量的类型推断

· 更简化的编译运行程序等

MySQL

· DML语言、DDL语言、DCL语言

· 分组查询、Join查询、子查询、Union查询、函数

· 流程控制语句、事务的特点、事务的隔离级别等

JDBC

· 使用JDBC完成数据库增删改查操作

· 批处理的操作

· 数据库连接池的原理及应用

· 常见数据库连接池C3P0、DBCP、Druid等

Maven

· Maven环境搭建

· 本地仓库中央仓库

· 创建Web工程

· 自动部署

· 持续继承

· 持续部署

Linux

· VI/VIM编辑器

· 系统管理操作远程登录

· 常用命令

· 软件包管理企业真题

Shell编程

· 自定义变量与特殊变量

· 运算符

· 条件判断

· 流程控制

· 系统函数自定义函数

· 常用工具命令

· 面试真题

Hadoop

· Hadoop生态介绍

· Hadoop运行模式

· 源码编译

· HDFS文件系统底层详解

· DNNN工作机制

· HDFS的API操作

· MapReduce框架原理

· 数据压缩

· Yarn工作机制

· MapReduce案例详解

· Hadoop参数调优

· HDFS存储多目录

· 多磁盘数据均衡

· LZO压缩

· Hadoop基准测试

Zookeeper

· Zookeeper数据结果

· 内部原理

· 选举机制

· Stat结构体

· 监听器

· 分布式安装部署

· API操作

· 实战案例

· 面试真题

· 启动停止脚本

HA+新特性

· HDFS-HA集群配置

Hive

· Hive架构原理

· 安装部署

· 远程连接

· 常见命令及基本数据类型

· DML数据操作

· 查询语句

· Join排序

· 分桶函数

· 压缩存储

· 企业级调优

· 实战案例

· 面试真题

Flume

· Flume架构

· Agent内部原理

· 事务

· 安装部署

· 实战案例

· 自定义Source

· 自定义Sink

· Ganglia监控

Kafka

· 消息队列

· Kafka架构

· 集群部署

· 命令行操作

· 工作流程分析

· 分区分配策略

· 数据写入流程

· 存储策略

· 高阶API

· 低级API

· 拦截器

· 监控

· 高可靠性存储

· 数据可靠性和持久性保证

· ISR机制

· Kafka压测

· 机器数量计算

· 分区数计算

· 启动停止脚本

DataX

· 安装

· 原理

· 数据一致性

· 空值处理

· LZO压缩处理

Scala

· Scala基础入门

· 函数式编程

· 数据结构

· 面向对象编程

· 模式匹配

· 高阶函数

· 特质

· 注解类型参数

· 隐式转换

· 高级类型

· 案例实操

Spark Core

· 安装部署

· RDD概述

· 编程模型

· 持久化检查点机制

· DAG

· 算子详解

· RDD编程进阶

· 累加器广播变量

Spark SQL

· SparkSQL

· DataFrame

· DataSet

· 自定义UDFUDAF函数

Spark Streaming

· SparkStreaming

· 背压机制原理

· Receiver和Direct模式原理

· Window原理及案例实操

· 7x24 不间断运行性能考量

Spark内核优化

· 内核源码详解

· 优化详解

Hbase

· Hbase原理及架构

· 数据读写流程

· API使用

· 与Hive和Sqoop集成

· 企业级调优

Presto

· Presto的安装部署

· 使用Presto执行数仓项目的即席查询模块

Ranger2.0

· 权限管理工具Ranger的安装和使用

Azkaban3.0

· 任务调度工具Azkaban3.0的安装部署

· 使用Azkaban进行项目任务调度,实现电话邮件报警

Kylin3.0

· Kylin的安装部署

· Kylin核心思想

· 使用Kylin对接数据源构建模型

Atlas2.0

· 元数据管理工具Atlas的安装部署

Zabbix

· 集群监控工具Zabbix的安装部署

DolphinScheduler

· 任务调度工具DolphinScheduler的安装部署

· 实现数仓项目任务的自动化调度、配置邮件报警

Superset

· 使用SuperSet对数仓项目的计算结果进行可视化展示

Echarts

· 使用Echarts对数仓项目的计算结果进行可视化展示

Redis

· Redis安装部署

· 五大数据类型

· 总体配置

· 持久化

· 事务

· 发布订阅

· 主从复制

Canal

· 使用Canal实时监控MySQL数据变化采集至实时项目

Flink

· 运行时架构

· 数据源Source

· Window API

· Water Mark

· 状态编程

· CEP复杂事件处理

Flink SQL

· Flink SQL和Table API详细解读

Flink 内核

· Flink内核源码讲解

· 经典面试题讲解

GitGitHub

· 安装配置

· 本地库搭建

· 基本操作

· 工作流

· 集中式

ClickHouse

· ClickHouse的安装部署

· 读写机制

· 数据类型

· 执行引擎

DataV

· 使用DataV对实时项目需求计算结果进行可视化展示

sugar

· 结合Springboot对接百度sugar实现数据可视化大屏展示

Maxwell

· 使用Maxwell实时监控MySQL数据变化采集至实时项目

ElasticSearch

· ElasticSearch索引基本操作、案例实操

Kibana

· 通过Kibana配置可视化分析

Springboot

· 利用Springboot开发可视化接口程序

presto 配置 优先级

presto主要配置文件如下: catalog/:配置各数据源的信息。presto是由facebook开源,基于内存的分布式查询引擎。支持多数据源,可支持PB级海量数据查询,本身不作数据存储。由于基于内存查询,减少了IO开销,故查询效率很高,但不适用于多表联合查询。

拓展资料:

1、presto架构 :

与众多分布式框架类似,由某组件进行请求处理以及分发任务至各执行节点。在presto架构中,Coordinator即为这样的角色。负责解析SQL,生成执行计划,分发任务到各节点。 Worker即各实际执行查询的节点。worker收到任务后,通过各种connector取各数据源中的数据。 Discovery service即联系Coordinator及Worker的服务。Worker启动会向Discovery server注册服务,Coordinator向Discovery server获取Worker节点信息。

2、Presto因其优秀的查询速度被我们所熟知,它本身基于MPP架构,可以快速的对Hive数据进行查询,同时支持扩展Connector,目前对Mysql、MongoDB、Cassandra、Hive等等一系列的数据库都提供了Connector进行支持。是我们常用的SQL on Hadoop的解决方案。那么我们今天就来看一下,当我们选择Presto作为我们的查询引擎之后,我们需要考虑的问题。

3、单机维度

GENERAL_POOL每次内存申请时,都会判断内存使用量是否超过了最大内存,如果超过了就报错,错误为“Query exceeded local memory limit of x”,这保护了Presto会无限申请内存,只会导致当前查询出错。同时,如果该节点的GENERAL_POOL可使用内存以及可回收内存为0,那么认为该node为Block node。RESERVED_POOL可以认为是查询最大的SQL,其能满足GENERAL_POOL的内存限制策略,那么肯定会满足RESERVED_POOL的策略(复用了GENERAL_POOL策略)。

4、Resource Groups

Resource Groups 可以认为是Presto实现了一个弱资源限制和隔离功能。其可以为每个group指定队列大小、并发大小、内存使用大小。为每个group设置合理的hardConcurrencyLimit(最大并发数)、softMemoryLimit(内存最大使用值)及maxQueued(队列大小)一方面可以使不同业务影响降低,另一方面也大概率避免OOM问题,当然善于运用user及做下二次开发,就可以让Presto支持多用户共用同一分组和权限认证功能。

java使用presto的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java使用presto的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-05,除非注明,否则均为首码项目网原创文章,转载请注明出处。