精华内容
下载资源
问答
  • presto
    2022-01-03 15:47:37

    一、Presto的概述

    1.1 Presto的简介

    官网:Presto | Distributed SQL Query Engine for Big Data

    Presto是facebook的一个开源,并完全基于内存的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:

    • 具有良好的清晰的体系架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。

      例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。
    • 简单的数据结构,列式存储,逻辑行。

      大部分数据都可以轻易的转化成presto所需要的这种数据结构。 
    • 丰富的插件接口,完美对接外部存储系统,或者添加自定义的函数。

    1.2 Presto支持的数据源

    参考官网:Connectors — Presto 0.266.1 Documentation

    1)hive源,支持的文件类型如下:

    - ORC
    - Parquet
    - Avro
    - RCFile
    - SequenceFile
    - JSON
    - Text

    2)开源数据存储系统

    MySQL & PostgreSQL,Cassandra,Kafka,Redis

    3)其他数据源

    MongoDB,ElasticSearch,HBase

    1.3 Presto和Hive的比较

    hive是一个数据仓库管理工具,是一个交互式比较弱一点的查询引擎,而且只能访问hdfs的数据,底层编译成mr、spark或者tez程序

    presto是一个交互式查询引擎,可以在很短的时间内返回查询结果,秒级,分钟级,能访问很多数据源,也不能用于在线事务处理(OLTP)

    注意:presto是取代不了hive的,因为presto全部的数据都是在内存中,限制了在内存中的数据集大小,比如多个大表的join,这些大表是不能完全放进内存的

    1.4 Presto与Impala的比较

    首先你要知道Presto,Impala都属于开源OLAP引擎.

    Presto是一个分布式SQL查询引擎,FaceBook于2013年11月份对其进行了开源, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。Presto 本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。

    Impala是实时交互SQL大数据查询工具,是Google Dremel的开源实现(Apache Drill类似),Cloudera推出的Impala系统,它拥有和Hadoop一样的可扩展性、它提供了类SQL(类Hsql)语法,在多用户场景下也能拥有较高的响应速度和吞吐量。Impala还能够共享Hive Metastore,甚至可以直接使用Hive的JDBC jar和beeline等直接进行查询,并且支持丰富的数据存储格式(Parquet、Avro等)。此外,Impala 通过使用分布式查询引擎(由 Query Planner、Query Coordinator 和 Query Exec Engine 三部分组成),可以直接从 HDFS 或 HBase 中用 SELECT、JOIN 和统计函数查询数据,从而大大降低了延迟。

    ​
    1. Presto支持标准的ANSI SQL规范,复杂查询、聚合(aggregation)、连接(join)和窗口函数
       Impala的sql和Hive基本一致
    2. Presto可连接的数据源更加丰富
       Impala可连接的数据源不多,hive,hdfs,hbase
    3. Presto的支持的文件存储格式比较多
       Impala的较少
    4. 速度上的比较
       Impala快,但是使用的内存更多,比hive快10多倍
       presto相对较慢,但是使用的内存比Impala少。  比hive快 5~10倍  

    所以从整体性能对比看,两者差不多,但是Presto更优.

    大数据开源引擎presto和impala,哪个好? - 知乎

    二、Presto的体系架构

    2.1 简介与图解

    Presto查询引擎是一个master/slaves的主从架构,由一个Coordinator节点和一个Discovery Server节点,多个Worker节点组成,Discovery Server通常内嵌于Coordinator节点中。Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行。Worker节点负责实际执行查询任务。Worker节点启动后向Discovery Server服务注册,Coordinator从Discovery Server获得可以正常工作的Worker节点。如果配置了Hive Connector,需要配置一个Hive MetaStore服务为Presto提供Hive元信息,Worker节点与HDFS交互读取数据。

     

    • Coordinator服务

    是一个中心的查询角色,它主要的一个作用是接受查询请求,将他们转换成各种各样的任务,将任务拆解后分发到多个worker去执行各种任务的节点

    1、解析SQL语句
    2、⽣成执⾏计划
    3、分发执⾏任务给Worker节点执⾏
    • Worker服务

    是一个真正的计算的节点,执行任务的节点,它接收到task后,就会到对应的数据源里面,去把数据提取出来,提取方式是通过各种各样的connector:

    1、负责实际执⾏查询任务
    • Discovery service服务

    是将coordinator和woker结合到一起的服务:

    1、Worker节点启动后向Discovery Server服务注册
    2、Coordinator从Discovery Server获得Worker节点

    coordinator和woker之间的关系是怎么维护的呢?是通过Discovery Server,所有的worker都把自己注册到Discovery Server上,Discovery Server是一个发现服务的service,Discovery Server发现服务之后,coordinator便知道在我的集群中有多少个worker能够给我工作,然后我分配工作到worker时便有了根据

    最后,presto是通过connector plugin获取数据和元信息的,它不是⼀个数据存储引擎,不需要有数据,presto为其他数据存储系统提供了SQL能⼒,客户端协议是HTTP+JSON

    参考美团技术文章:Presto实现原理和美团的使用实践 - 美团技术团队

    2.2 Presto中SQL运行过程

     

    1、当我们执行一条sql查询,coordinator接收到这条sql语句以后,它会有一个sql的语法解析器去把sql语法解析变成一个抽象的语法树AST,这抽象的语法书它里面只是进行一些语法解析,如果你的sql语句里面,比如说关键字你用的是int而不是Integer,就会在语法解析这里给暴露出来

    2、如果语法是符合sql语法规范,之后会经过一个逻辑查询计划器的组件,他的主要作用是,比如说你sql里面出现的表,他会通过connector的方式去meta里面把表的schema,列名,列的类型等,全部给找出来,将这些信息,跟语法树给对应起来,之后会生成一个物理的语法树节点,这个语法树节点里面,不仅拥有了它的查询关系,还拥有类型的关系,如果在这一步,数据库表里某一列的类型,跟你sql的类型不一致,就会在这里报错

    3、如果通过,就会得到一个逻辑的查询计划,然后这个逻辑查询计划,会被送到一个分布式的逻辑查询计划器里面,进行一个分布式的解析,分布式解析里面,他就会去把对应的每一个查询计划转化为task

    4、在每一个task里面,他会把对应的位置信息全部给提取出来,交给执行的plan,由plan把对应的task发给对应的worker去执行,这就是整个的一个过程

    这是一个通用的sql解析流程,像hive也是遵循类似这样的流程,不一样的地方是distribution planner和executor pan,这里是各个引擎不一样的地方,前面基本上都一致的

    2.3 MapReduce vs Presto

     

    Presto的task是放在每个worker上该执行的,每个task执行完之后,数据是存放在内存里了,而不像mr要写磁盘,然后当多个task之间要进行数据交换,比如shuffle的时候,直接从内存里处理

    小贴士:

    presto适合PB级的海量数据查询分析,并不是说把pb的数据放进内存。比如对一张PB级别的表进行count,avg这种类型的查询,虽然数据很多,但是最终的查询结果很小,这种就不会把数据都放到内存里面,只是在运算的过程中,拿出一些数据放内存,然后计算,保存结果,清理内存,在拿,这种的内存占用量是很小的。
    ​
    但是join这种,在运算的中间过程会产生大量的数据,或者说那种查询的数据不大,但是生成的数据量很大,这种也是不合适用presto的,但不是说不能做,只是会占用大量内存,消耗很长的时间,这种hive合适点
    ​
    presto算是hive的一个补充,需要尽快得出结果的用presto,否则用hive

    三、Presto的安装

    3.1 Presto Server的安装

    参考官网:Deploying Presto — Presto 0.266.1 Documentation

    步骤1)上传presto-server-0.266.tar.gz、解压,更名、配置环境变量

    tar -zxvf presto-server-0.266.tar.gz -C /usr/local/
    cd /usr/local
    mv presto-server-0.266/ presto
    vim /etc/profile
    source /etc/profile

    步骤2)维护目录结构

    data/
    etc/
    ├── catalog
    │   └── hive.properties  # Configures the TPCH connector to generate data
    ├── config.properties    # Presto instance configuration properties
    ├── jvm.config           # JVM configuration for the process
    ├── log.properties       # Logging configuration
    └── node.properties      # Node-specific configuration properties
    mkdir $PRESTO_HOME/data
    mkdir $PRESTO_HOME/etc
    touch $PRESTO_HOME/etc/{config.properties,jvm.config,log.properties,node.properties}
    mkdir $PRESTO_HOME/etc/catalog  && touch  $PRESTO_HOME/etc/catalog/hive.properties

    步骤3)配置note.properties

    vim $PRESTO_HOME/etc/node.properties
    node.environment=production
    node.id=ffffffff-ffff-ffff-ffff-fffffffffff1
    node.data-dir=/usr/local/presto/data

    注意:别忘记修改其他节点的id的值

    步骤4)配置jvm.config

    vim $PRESTO_HOME/etc/jvm.config
    -server
    -Xmx16G
    -XX:+UseG1GC
    -XX:G1HeapRegionSize=32M
    -XX:+UseGCOverheadLimit
    -XX:+ExplicitGCInvokesConcurrent
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:+ExitOnOutOfMemoryError

    步骤5)配置config.properties

    vim $PRESTO_HOME/etc/config.properties
    ​
    coordinator=true
    node-scheduler.include-coordinator=true
    http-server.http.port=8090
    query.max-memory=50GB
    discovery-server.enabled=true
    discovery.uri=http://192.168.10.101:8090
    coordinator:  表示是否开启coordinator服务项
    node-scheduler.include-coordinator:  是否在coodinator节点上开启一个worker
    http-server.http.port: coordinator的通信端口
    discovery-server.enabled: 是否内置一个discovery server
    discovery.uri: discovery server的通信地址,必须和coordinator公用一个端口号

    步骤6:配置log.properties(可选)

    vim $PRESTO_HOME/etc/log.properties
    com.facebook.presto=INFO

    步骤7)配置catalog里的hive.properties

    vim $PRESTO_HOME/etc/catalog/hive.properties
    connector.name=hive-hadoop2
    hive.metastore.uri=thrift://192.168.10.101:9083

    最后,scp指令同步到其他两台机器上 注意修改 node.properties . config.properties

    192.168.10.102的node.properties

    node.environment=production
    node.id=ffffffff-ffff-ffff-ffff-fffffffffff2
    node.data-dir=/usr/local/presto/data

    192.168.10.103的node.properties

    node.environment=production
    node.id=ffffffff-ffff-ffff-ffff-fffffffffff3
    node.data-dir=/usr/local/presto/data

    192.168.10.102和192.168.10.103的config.properties的内容如下:

    coordinator=false
    http-server.http.port=8090
    query.max-memory=50GB
    discovery.uri=http://192.168.10.101:8090

    3.2 Presto server的运行

    1)首先、要启动 hdfs和Hive的metastore服务项

    start-dfs.sh
    nohup hive --service metastore 2>&1 >/dev/null &

    2)然后、启动presto服务

    • 前台运行

    bin/launcher run
    • 后台启动

    bin/launcher start
    bin/launcher start
    bin/launcher start

    3)小贴士:启动后,您可以在var/log以下位置找到日志文件:

    launcher.log: 这个日志是由启动器创建的,并连接到服务器的 stdout 和 stderr 流。它将包含一些在初始化服务器日志记录时发生的日志消息以及 JVM 产生的任何错误或诊断信息。
    server.log:这是 Presto 使用的主要日志文件。如果服务器在初始化期间出现故障,它通常会包含相关信息。它会自动旋转和压缩。
    http-request.log:这是包含服务器收到的每个 HTTP 请求的 HTTP 请求日志。它会自动旋转和压缩。

    3.3 Presto Client安装

    3.3.1 第一种客户端:presto-cli-0.266-executable.jar

    1)说明

    是一个可执行文件,只需要上传到presto的bin目录下,更名即可

    2)上传、更名、修改权限

    mv presto-cli-0.266-executable.jar  presto-cli
    chmod a+x presto-cli

    3) 运行客户端

    presto-cli --server 192.168.10.101:8090 --catalog hive --schema sz2103

    3.3.2 第二种客户端:yanagishima-20.0.zip

    0) 说明

    yanagishima是一个presto的webui客户端。  在github上可以下载源码,进行编译
    ​
    20.0版本是最后一个支持jdk1.8的版本。 
    ​
    yanagishima-20.0.zip:是已经编译好的

    1)上传、解压、更名

    unzip yanagishima-20.0.zip -d /usr/local
    mv  yanagishima-20.0  yanagishima

    2)修改配置文件

    vim /usr/local/yanagishima/conf/yanagishima.properties
    找到以下属性进行修改:
    jetty.port:  webui的端口号 ,比如设置成8899
    presto.datasources:   数据源的名称,自定义即可,注意,下面的都要替换成这个名字
    presto.coordinator.server.nickname=
    catalog.nickname=hive
    schema.nickname=default
    sql.query.engines=presto

    3)启动服务项

    ./bin/yanagishima-start.sh

    4)访问webui

    http://192.168.10.101:8899
    更多相关内容
  • presto

    2021-03-21 20:55:04
    Laravel应用演示项目 ... cd presto 将.env.example复制到.env cp .env.example .env 生成应用程序镜像docker-compose build app生成应用docker-compose build app 在后台模式下运行环境-d docker-compo
  • presto.NullInt64 float64 , presto.NullFloat64 map , presto.NullMap time.Time , presto.NullTime 任意支持类型的多达3维数组到Go切片要求达到1.8或更高版本Presto 0.16x或更高版本安装您需要一个安装了Go并...
  • presto-udf-*-jar-with-dependencies.jar复制到所有presto节点中的${PRESTO_HOME}/plugin/custom-functions/中。 (如果不存在,则创建目录) 重新启动presto集群 职能 标量函数 功能 退货类型 参数类型 描述 ...
  • presto-redis 用于连接器。 这是一个使用 PrestoDb 在 redis 上运行 SQL 查询的实验。 它启动一个 PrestoDB 服务器并尝试连接到本地主机端口 6379 上的 redis 实例 数据模型将地图视为表,将地图中的对象视为行。 ...
  • Analysys Presto-HBase连接器该组件是根据Presto连接器接口规范实现的,用于增加向Presto查询HBase的功能。 我们的性能比其他开放源代码版本的HBase连接器快10到100倍。性能比较环境细节资料大小事件表包含500万条...
  • presto-oracle

    2019-04-01 19:55:04
    Presto OraclePlugin This is a plugin for Presto that allow you to use Oracle Jdbc Connection Presto-Connectors Member Connection Configuration Create new properties file inside etc/catalog dir: ...
  • 分布式查询引擎“Presto”的 node.js 客户端库。 var presto = require ( 'presto-client' ) ; var client = new presto . Client ( { user : 'myname' } ) ; client . execute ( { query : 'SELECT count(*) as ...
  • datax支持presto读取

    2020-12-07 15:38:40
    1、说明:datax支持presto读取,datax规范开发插件,读取presto中数据,可以在presto中配置mysql、postgresql、es、hive等数据库的连接,通过datax执行关联查询,数据存入新的库 2、插件更新:解压文件 prestoreader...
  • presto-localcsv 一个presto插件,支持在本地文件系统中读取csv文件。 连接器配置文件:localcsv.properties connector.name=localcsv csv.root=/home/name/csvdb csv.root设置数据文件的根目录,模式名称是第二级...
  • Presto_ODBC.rar

    2021-09-10 12:23:29
    包含32位和64位驱动,配置调试通过,有配置截图,另外提供简单的c#调用方法。安装包含64位驱动,但是C#调用的话请使用32位驱动。
  • cursor = presto . connect ( 'localhost' ). cursor () cursor . execute ( 'SELECT * FROM my_awesome_data LIMIT 10' ) print cursor . fetchone () print cursor . fetchall () DB-API(异步) from pyhive ...
  • 用法cmd选项移位p-配置并运行Presto Selecto安装自动的如果您已安装其中之一,请在 , 或搜索Presto Selecto。 安装后,当有可用的更新(版本0.4及更高版本)时,Sketch会自动通知您。手动的下载并打开presto-select...
  • 安装 $ pip install presto-python-client快速开始使用DBAPI接口查询Presto: import prestodbconn = prestodb . dbapi . connect ( host = 'localhost' , port = 8080 , user = 'the-user' , catalog = 'the-...
  • presto-sql.txt

    2020-08-13 09:49:06
    presto提供多数据源,可以通过该语句从其他数据源导入数据到presto,作为ETL的手段。
  • 为您提供Presto 分布式SQL查询引擎下载,Presto是一个针对大数据的分布式SQL查询引擎,第一次构建Presto后,你可以将项目加载到你的IDE中并运行服务器,我们建议使用IntelliJ IDEA,因为Presto是一个标准的Maven项目...
  • presto客户端

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

    2020-10-14 10:45:41
    presto-maven-plugin 0.3版,presto的maven编译插件源码,替换了windows下编译出错的问题,可以clean install到本地,在编译presto
  • 深入理解Presto

    2021-01-27 11:51:18
    Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:清晰的...
  • ranger-2.1.0-presto-plugin.tar.gz
  • Presto以太坊连接器在以太坊区块链上释放Presto交互式SQL查询的功能介绍是一个功能强大的交互式查询引擎,只要存在与源的连接器,它就可以对任何东西(包括MySQL,HDFS,本地文件,Kafka)运行SQL查询。 这是与以太...
  • presto-jdbc-0.245.jar

    2021-03-09 20:40:28
    presto连接jdbc,适用于dberver使用即席查询时连接
  • 通过DBeaver连接ldaps认证的Presto,网上搜索的文档大都不可用,该文档包含了关键的ssl证书配置及DBeaver连接参数配置,补充了网上搜索文档中配置的遗漏点。
  • presto sql 与mysql sql 对比.pdf
  • 经过对 Presto 和 Hive 的性能做了大量的对比测试,最终结果表明: Presto 的平均查询性能是 Hive 的 10 倍!  由于 Presto 的数据源具有完全解耦、高性能,以及对 ANSI SQL 的支持等特性,使得 Presto 在 ETL、...
  • Presto Accumulo! 一个Presto连接器,用于读取和写入由Apache Accumulo支持的数据。 寻找PrestoBatchWriter吗? 签出0.178分支。 该存储库包含四个子项目: presto-accumulo-iterators-要在TabletServer上安装...
  • Docker上的Presto和Minio 使用docker-compose您可以为Presto设置Presto,Hadoop和Minio容器,以从Minio查询数据。 Presto将Hadoop容器用于元存储。 跑步 运行docker-compose up -d 您可以查看Minio浏览器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,911
精华内容 12,764
关键字:

presto

友情链接: GDOP.zip