java使用presto的简单介绍
今天给各位分享java使用presto的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Classloader、插件化开发(结合Presto)
- 2、大数据平台最核心的软件是
- 3、用cassandra + presto 代替oracle怎么样
- 4、presto如何数据库中有哪些库
- 5、大数据分析应该掌握哪些基础知识?
- 6、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的信息别忘了在本站进行查找喔。
发布于:2022-12-05,除非注明,否则均为
原创文章,转载请注明出处。