精华内容
下载资源
问答
  • Presto

    2020-07-25 16:29:49
    Presto是什么 Presto是分布式SQL查询引擎,用来进行高速、实时的数据分析 Presto的产生是为了解决Hive的MapReduce模型太慢且不能通过BI等工具展现HDFS数据结果的问题 Presto是一个计算引擎,它不存储数据,通过丰富...

    Presto是什么

    Presto是分布式SQL查询引擎,用来进行高速、实时的数据分析
    Presto的产生是为了解决Hive的MapReduce模型太慢且不能通过BI等工具展现HDFS数据结果的问题

    • Presto是一个计算引擎,它不存储数据,通过丰富的Connextor获取第三方服务的数据,并支持扩展。
    • 比如通过链接HIVE的matestore来获取hive的源数据信息。从而读取hdfs上面hive的数据,
    • 通过MySQL的connector获取MySQL的数据。

    Presto的优点

    • Presto支持标准的SQL,降低了分析人员和开发人员的使用门槛。
    • Presto支持可插拔的Connector,可以链接多种数据源,包括Hive,DBMS,Kafka、MongoDB等等。而且还支持不同数据源之间的联合查询。
    • Presto是一个低延迟,高并发的内存计算引擎,比Hive的计算效率要高的多。

    Preesto的数据模型

    在这里插入图片描述

    通过一条hive的查询语句进行分析
    Select *
    From hive.testdb.tableA a JOIN mysql.testdb.tableB b
    WHERE a.id = b.id
    
    SHOW CATALOGS
    SHOW SCHEMAS
    
    • Catalog:即数据源。Hive、MySQL都是数据源。Presto可以链接多个Hive和多个MySQL
    • Schema:类比于DataBase,一个Catalog下有多个Schema
    • Table:数据表,与我们常用的数据库表意义相同。一个Schema下有多个数据表。
      我们平常使用的数据源都是两级 一个是 db一个是table
      在Presto中因为我们可以链接多个数据源hive,所以这里面是三级的语句。

    从语句中我们可以发现,一个Catalog是Hive一个Catalog是MySQL,可以发现,presto是支持夸数据源的查询。

    两个问题:

    • Prest和Hive是什么关系?
    • 了解Presto之后,你认为它有哪些使用场景?在工作中,是如何使用presto的。

    安装Presto

    解压prest
    Presto-server-0.212.tar.gz
    Presto-cli-0.212-executable.jar 正常连接的工具

    复制Presto-cli-0.212-executable.jar 到Presto-server-0.212/bin目录下
    配置
    Presto-server-0.212.tar.gz
    在Presto-server-0.212.tar.gz解压目录创建etc的文件夹
    创建data目录
    /usr/local/presto/presto-dritory 数据文件目录

    Mkdir etc/
    在这个文件夹中我们需要创建四个properties文件
    Vim config.properties

    在这里插入图片描述
    Vim note.properties

    在这里插入图片描述
    /usr/local/presto/presto-directory

    Vim jvm.config

    在这里插入图片描述
    Vim log.properties

    在这里插入图片描述

    配置完上面的信息之后,我们需要为我们的presto添加catalog
    也就是添加数据源

    在presto的etc文件夹下面,创建catalog文件夹
    进入catalog文件夹
    我们先添加一个mysql的配置文件
    编辑mysql.properties

    我们添加的第一个catalog就是hive的catalog,我们把hive的catalog添加到presto之后就可以查询hive的相关信息了
    在catalog文件夹下面,创建 hive.properties文件

    如果要创建hive数据源的连接器,可以创建一个etc/catalog/hive.properties文件,文件中的内容如下,完成在hivecatalog上挂载一个hiveconnector:

    connector.name=hive-hadoop2 
    hive.metastore.uri=thrift://192.168.100.200:9083 
    hive.config.resources=/usr/local/hadoop-2.8.5/etc/hadoop/core-site.xml,/usr/local/hadoop-2.8.5/etc/hadoop/hdfs-site.xml
    
    

    Vim hive.properties

    在这里插入图片描述

    如果只是测试使用,我们只需要配置三个信息即可
    Connector.name
    配置hive.metastore的url ;如果我们没有进行过端口的配置的话,默认的端口就是9083
    最后指定Hadoop的安装路径

    然后启动presto
    进入presto bin目录下:
    ./launcher start
    通过jps查看执行情况

    如果查看presto是否可以访问到hive中的数据呢,这个时候我们就需要用到presto的客户端
    移动prest-cli-0.212-executable.jar 复制到 bin目录下

    赋权 chmod a+x prest-cli-0.212-executable.jar

    ./presto-cli-0.238-executable.jar  --server localhost:7670  --catalog  hive  --schema  default
    

    这个时候,我们执行 show tables
    就可以在presto中看到我们在hive中创建的表

    这个就可以通过presto进行数据的查看了
    也可以访问mysql中的数据

    [root@localhost bin]# ./presto-cli-0.238-executable.jar --server localhost:7670 --catalog  mysql
    

    我们也可以 通过进入presto安装目录 执行bin/launcher run
    出现如图所示的执行结果,说明运行成功

    在这里插入图片描述

    这时可以访问 spark000:7670,查看能否看到 ui 页面

    Presto架构

    在这里插入图片描述

    • Coordination负责解析SQL语句,生成查询计划,分发执行任务。

    • Discovery Server负责维护Coordinator和Worker的关系,通常内嵌于Coordinator节点

    • Work节点负责执行查询任务以及与HDFS进行交互读取数据

    在这里插入图片描述

    通过架构图我们可以知道,presto在查询的时候,ProstoCli客户端输入命令,发送到Presto server ,服务端从Hive Metastore 和HDFS上面查询数据,然后返回给客户端。

    那么Coordination和Worker处于上面上面位置呢?

    在这里插入图片描述

    Coordination节点负责接收Presto CLI发过来的数据查询命令,然后Coordination从Hive的元数据Metastore中,获取元数据信息,然后对SQL解析之后,生成的查询计划分发到Work节点,各个work节点然后去HDFS上面查询数据,然后Coordination将查询结果进行汇总,返回到客户端。

    Presto是如何对多个数据源进行联合查询的,通过下图我们可以看出

    在这里插入图片描述
    Presto通过不同的worker下面的 Connector实现夸数据源的查询

    问题:

    Presto与Hive有什么区别?

    Presto与我们常见的数据查询引擎有什么区别?

    MPP架构

    在这里插入图片描述

    Shared everything 典型的代表就是 SQL SERVER
    Shared Storage
    Shared Nothing:典型的代表就是Hadoop(每一个datanode都有自己独立的资源,各个节点相互独立)

    在这里插入图片描述

    在这里插入图片描述

    Presto的查询执行

    Select * from a join b
    在这里插入图片描述
    Presto 包含哪些 Connector

    熟知的有Hive JMX MYSQL等等
    Cassndra ES Kafka MongoDB,Redis等等
    支持可扩展的自定义Connector

    除此之外,Presto还提供了很多的聚合函数

    在这里插入图片描述

    需求项目

    • 在页面对Presto进行查询操作,并展示查询结果。我们通过上面的例子可以发现,我们的查询都是通过客户端完成的比较麻烦,如果我们可以直接在页面进行查询,是不是很好,需要对数据在页面进行查询操作
    • 可以通过Web界面,动态的对Presto的数据源进行增删改查(Presto是默认不支持动态的添加catalog的,如果添加了新的catalog就需要进行重新启动,这样比较麻烦)
    • 对数据进行可视化的展示,绘制相关图表等等(由于是基于Presto的,那么就天然的支持多数据源的查询了)

    实现方案

    • 第一步:通过改造Presto代码实现数据源的增删操作
    • 第二步:通过相关模块实现Presto的数据查询,并且进行展示
    • 第三步:基于查询得到的数据绘制图表(前端可以使用vue)

    在这里插入图片描述
    左边是catalog,中间是查询区

    第一步:实现动态的添加catalog

    在这里插入图片描述
    我们在前面配置preso的时候也知道,presto worker需要配置 presto etc/下面的 catalog 信息一些porperties文件,然后这些文件就是我们配置的catalog,worker会扫描这些文件,然后读取文件内的配置信息,然后创建相关的connection,并且将connection的信息类似于服务注册的方式,发布到Discovery Server上面,这样呢Coordinator就知道了哪些work都有哪些catalog connector,正是因为worker需要从本地添加catalog,所以当我们需要添加删除catalog的时候,都需要去重启worker,让catalog正常工作。
    我们发现都需要从本地加载,而没有一个catalog的存放位置。如果我们将catalog的管理统一起来,修改worker的源码,让worker每隔一段时间去读catalog信息,并且更新自己的connector,这样就实现了动态增删catalog。
    (这里为了简单,把catalog放入到mysql中进行统一的管理,这样做比较简单,但不是最好的。

    流程如下:

    在这里插入图片描述
    从github上面获取 presto的源代码
    进行修改

    SQL 查询模块

    在这里插入图片描述

    展开全文
  • presto

    2020-06-22 10:57:44
    Presto SQL 常见问题 Presto SQL优化 当前影响查询效率的主要问题 presto会比hive快,原因: Hive sql 转换 Presto sql 经常遇到的一些问题,降低转换成本。 针对Presto sql的优化介绍,了解优化的基本...

    目录

    特点

    问题

    Hive SQL -> Presto SQL 常见问题

    Presto SQL优化

    当前影响查询效率的主要问题


    presto会比hive快,原因:

     

    Hive sql 转换 Presto sql 经常遇到的一些问题,降低转换成本。

    针对Presto sql的优化介绍,了解优化的基本原则以及常规的实践方式。

    了解存储格式对即席查询的影响,最终推动存储格式的优化。

    Presto是常驻任务,接受请求立即执行,全内存并行计算;hive需要用yarn做资源调度,接受查询需要先申请资源,启动进程,并且采用mapreduce计算模型,中间结果会经过磁盘。

    由于 Presto 卓越的性能表现,使得 Presto 可以弥补 Hive 无法满足的实时计算空白,因此可以将 Presto 与 Hive 配合使用:对于海量数据的批处理和计算由 Hive 来完成;对于大量数据(单次计算扫描数据量级在 GB 到 TB)的计算由 Presto 完成。Presto 也适合实时计算任务。

    特点

    基于内存的分布式计算引擎(不是数据库) 多数据源接入(hive/mysql/sqlserver/kafka/redis…) 跨数据源join操作、标准sql支持,强类型检查

    问题

     不适合计算太大的数据量(目前1TB以上不建议)
     容错处理较差,如果某个节点失败,整个查询也将失败
     Udf支持不完善、不能完全兼容hive语法
     ​

    Hive SQL -> Presto SQL 常见问题

    官方文档

    https://prestodb.io/docs/0.206/

     字符串使用单引号
     库/表/字段 和 关键词区别使用双引号
     presto数组下标是由1开始,而不是由0开始
     强类型约束
         类型转换:type = ‘1’  改为  cast(type as Integer) = 1
     异常处理
         try(ext[‘liveid’])
     Json提取
         Hive: get_json_object(detail_1,'$.detail1’)
         Presto: json_extract_scalar (detail_1,'$.detail1’)
     ​
     month函数使用
         presto是强类型约束,month函数需要的类型是timestamp,而hive中则是直接使用string即可,所以在presto中需要先将string转换成timestamp类型,如下:month(date_parse(dt, '%Y-%m-%d’))
     ​
     时间转换
     Hive: unix_timestamp -> Presto: to_unixtime 
     Hive: from_unixtime -> Presto: from_unixtime

    Presto SQL优化

    避免单节点处理数据

     count(distinct)
         group by 代替
         approx_distinct(x)代替,大约有2.3%的误差
     union
         不需要排重则尽量使用union all
     order by
         使用列存储,尽量将排序字段减少、使用limit

    减少数据的扫描范围

    分区获取、只查询需要的列,避免select *

    利用索引减少数据扫描,如min-max index

    查询sql常规优化

     过滤条件必须加上分区字段
     在group by 时,尽可能将基数大的字段放前面(数量多的)
     如:group by dt, uid   ->   group by uid, dt
     避免多个like语句
     ​
     避免join条件涉及计算,使用子查询替换包含计算的条件
     ​

    当前影响查询效率的主要问题

     存在很多多次扫描同一张表的语句
     ​
     数据分区粒度比较粗
     ​
     Presto 查询覆盖率不足,目前覆盖率30%左右
     ​
     很多查询都是从比较原始的表进行,比如ods_action_log_new,dwd_huya_event等
     ​
     数据存储格式几乎都是text格式
     ​
     ​
    
     
    展开全文
  • PRESTO

    2018-03-06 14:48:33
    PRESTO Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节,为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。 可以做什么? Presto支持在线数据...

    PRESTO

    Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GBPB字节,为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。

    可以做什么?

    Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。 一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。期望响应时间小于1秒到几分钟。

    架构


    presto-overview.png

    Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker 由客户端提交查询,从Presto命令行CLI提交到coordinator coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker

    连接器

    HADOOP / HIVE

    Presto支持从以下版本的Hadoop中读取Hive数据:

    • Apache Hadoop 1.x
    • Apache Hadoop 2.x
    • Cloudera CDH 4
    • Cloudera CDH 5

    支持以下文件类型:Text, SequenceFile, RCFile, ORC

    此外,需要有远程的Hive元数据。 不支持本地或嵌入模式。 Presto不使用MapReduce,只需要HDFS

    CASSANDRA

    必须有Cassandra 2.x 这种连接器完全不依赖Hive连接器,只需要一个安装好的Cassandra

    部署Presto

    下载Presto server tarball, presto-server-0.100.tar.gz,将它解压。 它包含一个顶级目录, presto-server-0.100,我们叫它安装目录

    Presto需要一个用于存储日志、本地元数据等的数据目录。 建议在安装目录的外面创建一个数据目录。这样方便Presto进行升级

    配置Presto

    在安装目录中创建一个etc目录。 在这个etc目录中放入以下配置信息:

    • 节点属性:每个节点的环境配置信息
    • JVM 配置:JVM的命令行选项
    • 配置属性:Presto server的配置信息
    • Catalog属性:configuration forConnectors(数据源)的配置信息
    展开全文
  • prestoPresto-源码

    2021-02-13 15:14:24
    Presto是用于大数据的分布式SQL查询引擎。 有关部署说明和最终用户文档,请参见《》。 要求 Mac OS X或Linux Java 8 Update 92或更高版本(8u92 +),64位。 支持Oracle JDK和OpenJDK。 Maven 3.3.9+(用于建筑...
  • Presto原理分析

    千次阅读 2018-12-01 09:49:22
    Presto

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    原创诗词一首

    游海螺沟
    归鸿声断残云碧,
    悬崖两边竟积雪,
    云雾弥漫道不现,
    车灯渐灭路难行。
    山路弯,日渐斜,
    车中儿声又渐起。
    不畏前方道路险,
    飞驰已过榆林山。

    展开全文
  • 模块介绍 presto-research-doc:源码分析 presto-research-plugin:插件和UDF的开发流程演示
  • Presto.zip

    2021-02-25 09:55:09
    Presto——The Definitive Guide》Presto指南20版
  • presto剖析

    2015-09-17 11:03:47
    treasure data presto学习资料,presto剖析(ppt)
  • presto build failing

    2020-11-28 08:49:56
    m trying to set myself up a Docker environment in order to contribute more effectively to Presto when possible. e.g. I was a bit stymied here by relying on cla-bot to check commits: <p>...
  • Presto router

    2020-11-28 08:48:53
    <div><p>Add a router module that does rule-based redirecting. It's a stateless service that can be deployed in multiple instances behind a load balancer....prestosql/presto</p></div>
  • presto客户端

    2018-07-20 11:39:20
    presto统一数据访问网关,可以通过一个客户端访问不同类型的数据库,支持oracle、mysql、postgresql、hive、hbase等,代码开源,支持自己开发数据库连接器
  • presto java_Presto Jdbc

    2021-02-26 20:09:37
    Presto Jdbc标签(空格分隔): Presto一, 建立连接传统的JDBC方式类似,建立PrestoConnection”连接“,并且通过unwrap方法将connection转换为PrestoConnection。实际上是赋值一些基本信息,并且建立新的...
  • 深入理解Presto

    2021-02-24 05:37:38
    Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:清晰的...
  • Presto 的平均查询性能是 Hive 的 10 倍!   由于 Presto 的数据源具有完全解耦、高性能,以及对 ANSI SQL 的支持等特性,使得 Presto 在 ETL、实时数据计算、 Ad-Hoc 查询和实时数据流分析等多个业务场景中均能...
  • Presto初步认识

    2017-06-27 18:01:47
    presto
  • Presto技术内幕

    2019-03-27 11:03:41
    Presto技术内幕

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,067
精华内容 3,226
关键字:

presto