Presto 安装部署与介绍

这篇具有很好参考价值的文章主要介绍了Presto 安装部署与介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

presto官网:Presto: Free, Open-Source SQL Query Engine for any Data

Presto简介:
Presto 是由 Facebook 开发的一个分布式 SQL 查询引擎, 它被设计为用来专门进行高速、实时的数据分
析。它的产生是为了解决 Hive MapReduce 模型太慢以及不能通过 BI Dashboards 直接展现 HDFS
据等问题。
Presto 是一个纯粹的纯内存的计算引擎,它不存储数据,其通过 Connector (类比 mr 中的 inputformat
组件)获取第三方 Storage 服务的数据 .
Ad-hoc (即席查询),期望查询时间秒级或几分钟
Hive 10
支持多数据源,如 Hive Kafka MySQL MonogoDB Redis JMX 等,也可自己实现 Connector
Client Protocol: HTTP+JSON, support various languages(Python, Ruby, PHP, Node.js Java)
支持 JDBC/ODBC 连接
ANSI SQL ,支持窗口函数, join ,聚合,复杂查询等
Presto 特点
Presto 是一个分布式的查询引擎,本身并不存储数据
presto 可以接入多种数据源,并且支持跨数据源查询(包括 hive rmdb kafka 等)。
一条 Presto 查询可以将多个数据源的数据进行合并分析
Presto 是一个 OLAP 的工具,擅长对海量数据进行复杂的分析;但是对于 OLTP 场景,并不是 Presto 所擅
长,所以不要把 Presto 当做数据库来使用
和大家熟悉的 Mysql 相比:
首先, Mysql 是一个数据库,具有存储和计算分析能力,而 Presto 只有计算分析能力;
其次,数据量方面, Mysql 作为传统单点关系型数据库不能满足当前大数据量的需求,于是有各种大数
据的存储和分析工具产生, Presto 就是这样一个可以满足大数据量分析计算需求的一个工具
Presto 数据管理模型
Presto 使用 Catalog Schema Table 3 层结构来管理数据。
Catalog: 就是数据源。 Hive 是数据源, Mysql 也是数据源, Hive Mysql 都是数据源类型,可以连
接多个 Hive 和多个 Mysql ,每个连接都有一个名字。一个 Catalog 可以包含多个 Schema ,大家可以
通过 show catalogs 命令看到 Presto 连接的所有数据源。
Schema :相当于一个 ,一个 Schema 包含多张数据表。
show schemas from 'catalog_xx' 可列出 catalog_xx 下的所有 schema
Table 数据表 ,与一般意义上的数据库表相同。
show tables from 'catalog_xx.schema_yy' 可查看 catalog_xx.schema_yy 下所有表。

下载presto:

presto 原理
Master-Slave 架构
三个模块: Coordinator Discovery Service Worker
Connector
Presto 沿用了通用的 Master-Slave 架构, Coordinator Presto Master Worker 即其 Slave
Discovery Service 就是用来保存 Worker 结点信息的,通过 HTTP 协议通信,而 Connector 用于获取第三
方存储的 Metadata 及原始数据等。
假如配置了 Hive Connector ,需要配置一个 Hive MetaStore 服务为 Presto 提供 Hive 元信息, Worker
点与 HDFS 交互读取数据。 Coordinator 负责解析 SQL 语句,生成执行计划,分发执行任务给 Worker 节点执行; Worker 节点负责实
际执行查询任务。 Worker 节点启动后向 Discovery Server 服务注册, Coordinator Discovery Server
得可以正常工作的 Worker 节点
缺点
No fault tolerance ;当一个 Query 分发到多个 Worker 去执行时,当有一个 Worker 因为各种原因查
询失败,那么 Master 会感知到,整个 Query 也就查询失败了,而 Presto 并没有重试机制,所以需要
用户方实现重试机制。
Memory Limitations for aggregations, huge joins ;比如多表 join 需要很大的内存,由于 Presto
纯内存计算,所以当内存不够时, Presto 并不会将结果 dump 到磁盘上,所以查询也就失败了,但
最新版本的 Presto 已支持写磁盘操作,这个待后续测试和调研。
MPP(Massively Parallel Processing ) 架构;这个并不能说其是一个缺点,因为 MPP 架构就是解决
大量数据分析而产生的,但是其缺点也很明显,假如我们访问的是 Hive 数据源,如果其中一台
Worke 由于 load 问题,数据处理很慢,那么整个查询都会受到影响,因为上游需要等待上游结果
hive 和presto的区别 Presto 安装部署与介绍
MapReduce Presto 的执行过程的不同点, MR 每个操作要么需要写磁盘,要么需要等待前一个 stage
部完成才开始执行,而 Presto SQL 转换为多个 stage ,每个 stage 又由多个 tasks 执行,每个 tasks 又将
分为多个 split 。所有的 task 是并行的方式进行, stage 之间数据是以 pipeline 形式流式的执行,数据之间
的传输也是通过网络以 Memory-to-Memory 的形式进行,没有磁盘 io 操作。这也是 Presto 性能比 Hive
很多倍的决定性原因
presto部署:


 里面有各种版本的presto  

https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
例:
linux>wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.250/presto-server-0.250.tar.gz
linux>wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.250/presto-cli-0.250-executable.jar

解压到 mv 到  /opt/install/presto

linux>tar -xf presto-server-0.250.tar.gz
linux>mv presto-server-0.250 /opt/install/presto

创建目录:

linux>cd presto


linux>mkdir data
linux>mkdir etc

编辑配置文件

linux>cd etc
linux>vi jvm.config

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError


linux/etc>mkdir catalog
linux/etc>cd catalog

linux/catalog>vi hive.properties

connector.name=hive-hadoop2    #hive-hadoop2 名字是固定的
hive.metastore.uri=thrift://192.168.58.201:9083
hive.config.resources=/opt/install/hadoop/etc/hadoop/core-site.xml,/opt/install/hadoop/etc/hadoop/hdfs-site.xml

分发到其他节点

linux>scp -r presto/ 192.168.58.201:`pwd`
linux>scp -r presto/ 192.168.58.202:`pwd`

在 presto的etc 目录下编辑文件

主机1:192.168.58.200
linux>vi  node.properties

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/opt/install/presto/data

linux>vi config.properties

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery-server.enabled=true
discovery.uri=http://192.168.58.200:8881

主机2:192.168.58.201
linux>vi  node.properties

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-fffffffffffe
node.data-dir=/opt/install/presto/data

linux>vi config.properties

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

主机3:192.168.58.202
linux>vi  node.properties

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-fffffffffffd
node.data-dir=/opt/install/presto/data

linux>vi config.properties
coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery.uri=http://192.168.58.200:8881

启动 hive的服务  bin/hive --service metastore  (不行的话所有都启动)  因为 192.168.58.201 hive-site.xml 指定的是192.168.58.201 所以在这台上启动hive --service metastore

配置文件如下的hive:  vi   hive-site.xml

192.168.58.201>vi   hive-site.xml
<configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://nodefive:3306/hive?createDatabaseIfNotExist=true</value>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>root</value>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>12345</value>
        </property>
        <property>
     <name>hive.metastore.thrift.bind.host</name>
     <value>192.168.58.201</value>
    </property>
</configuration>

分别启动服务 :

进入presto运行
主机1:192.168.58.200
linux>bin/launcher run
主机2:192.168.58.201
linux>bin/launcher run
主机3:192.168.58.202
linux>bin/launcher run

presto 的客户端

linux>mv presto-cli-0.196-executable.jar prestocli
linux>chmod +x prestocli
进入客户端方法:
linux>./prestocli --catalog hive --schema default --server 192.168.58.200:8881 

linux>./prestocli --catalog hive --schema default --server 192.168.58.200:8881  --catalog hive --schema default

注:启动presto
 不加 --schema 的话就是全部数据库,查询时候需要用 数据库名.表名 的方式查询
例:
presto>select * from schema.table limit 100

进入后常用命令:
presto>show schemas查看数据库
presto>show tables from SchemaName; 查看 数据库的表
或者
presto>use SchemaName;
presto>show tables;  查看当下数据库下的所有表

注:命令跟hive差不多更多命令例子可参presto考官网
presto SQL应用官网:https://prestodb.io/docs/current/sql.html

presto SQL应用官网:https://prestodb.io/docs/current/sql.html

报错:

ERROR    main    com.facebook.presto.server.PrestoServer    Unable to create injector, see the following errors:

1) Error injecting constructor, java.io.IOException: java.io.IOException: Can not attach to current VM (try adding '-Djdk.attach.allowAttachSelf=true' to the JVM config)
Presto 安装部署与介绍

 解决办法:编辑jvm.config 文件添加配置-Djdk.attach.allowAttachSelf=true后重启presto服务

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-Djdk.attach.allowAttachSelf=true

打开浏览器输入地址192.168.58.200:8881即可访问UI

Presto 安装部署与介绍文章来源地址https://www.toymoban.com/news/detail-406577.html

到了这里,关于Presto 安装部署与介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • presto连接mongodb

    1.包下载 2.创建配置目录 3.特定于每个节点的环境配置 4.Java虚拟机的命令行选项

    2024年02月16日
    浏览(35)
  • Presto自定义函数

    创建目录META-INF/services 创建文件 com.facebook.presto.spi.Plugin,指明你所实现的Plugin位置 实现Plugin接口

    2024年02月13日
    浏览(39)
  • 1. Presto基础

    一、presto基础操作 二、时间函数 0、当前日期/当前时间 1、转时间戳 1)字符串转时间戳 (推荐) 即:‘2019-04-26’ 转换成 2019-04-26 00:00:00.000 2)按照format指定的格式,将字符串string解析成timestamp。 注:字符串格式和format格式需保持一致,以下为错误示例: 注:时间戳格式化

    2024年02月02日
    浏览(40)
  • 2. Presto应用

    1、Presto安装使用 参考官方文档:https://prestodb.io/docs/current/ Presto是一个高效的查询分析引擎,支持多种数据源,例如(Hive、MySQL、MD、Kafka等),内部查询是基于内存操作的,相比较Spark效率更高,而且更大的特点在于可以自定义内存空间,设置内存使用大小。 安装部署 测试

    2024年02月02日
    浏览(38)
  • Presto VS Spark

    5个节点,每个节点10G内存。 测试SQL,每个执行3次,求平均,对比计算性能。 Spark:2.3.1 Presto: 0.208 Spark: Presto: Spark计算比Presto快一倍,胜出。 平分秋色,Spark会好那么一丢丢。 Spark: 0.43s Presto: 0.5s Presto无论聚合计算,还是全表扫描查询,都略比Spark有优势,不过总的查询不

    2023年04月23日
    浏览(29)
  • 深入探讨 Presto 中的缓存

    【squids.cn】 全网zui低价RDS,免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 Presto是一种流行的开源分布式SQL引擎,使组织能够在多个数据源上大规模运行交互式分析查询。缓存是一种典型的提高 Presto 查询性能的优化技术。它为 Presto 平台提供了显着的性能和效

    2024年02月07日
    浏览(63)
  • 大数据入门之Presto/Trino

    What is Presto ? Presto是由Facebook开发的分布式sql查询引擎,用来进行高速、实时的数据查询 Presto的产生是为了解决Hive的MapReduce模型太慢且不能通过BI等工具展现HDFS的问题 Presto是一个计算引擎,它不存储数据,通过丰富的connector获取第三方服务的数据,并支持扩展。可以通过连接

    2024年02月07日
    浏览(42)
  • 数据库:Hive转Presto(二)

    继续上节代码,补充了replace_func函数,        

    2024年02月07日
    浏览(34)
  • 【大数据】Presto(Trino)SQL 语法进阶

    Presto(Trino)是一个快速、分布式的SQL查询引擎,可以用于查询各种数据源,包括Hadoop、NoSQL、关系型数据库等。下面是Presto(Trino)SQL语法的概述: 它支持标准SQL语法,包括以下SQL命令: SELECT :用于从一个或多个表中检索数据,指定所需的列和过滤条件。 FROM :用于指定要

    2024年02月11日
    浏览(33)
  • Presto、Spark 和 Hive 即席查询性能对比

    Presto、Spark 和 Hive 是三个非常流行的大数据处理框架,它们都有着各自的优缺点。在本篇博客文章中,我们将对这三个框架进行详细的对比,以便读者更好地了解它们的异同点。 Presto 是一个开源的分布式 SQL 查询引擎,它可以在多个数据源之间进行查询,并且可以快速地处理

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包