博客
关于我
Presto分布式大数据查询引擎
阅读量:797 次
发布时间:2023-03-04

本文共 2498 字,大约阅读时间需要 8 分钟。

Presto分布式大数据查询引擎

什么是Presto?

Presto是一个开源的分布式大数据查询引擎,主要特点是支持跨数据库类型的查询。它能够快速高效地处理海量数据,常常被用作Hive和Pig的替代工具。与传统数据库不同,Presto不具备处理在线事务的能力,但它在数据分析和查询方面表现优异。

Presto支持的数据源类型

Presto能够连接多种数据源,包括但不限于以下几种:

  • 关系型数据库:如MySQL、SQL Server、PostgreSQL等。
  • 分布式文件系统:如HDFS。
  • NoSQL数据库:如Redis、Kafka。
  • 自定义数据源:通过Presto的插件机制支持多种扩展数据源。

Presto的主要特点

  • 基于内存计算:Presto将数据读取到内存中进行处理,减少了与磁盘IO的依赖,显著提高了查询速度。
  • 支持多种数据源:Presto不仅能访问HDFS,还能连接多种关系型数据库,实现跨数据库的联结查询。
  • 无需依赖HDFS:与Hive不同,Presto无需预先部署HDFS,可以直接作为独立的查询引擎使用。
  • Presto的优点

  • 与Hive相比:Presto在处理PB级别的数据时效率更高。这是因为Presto采用内存计算,而Hive更多依赖于磁盘IO。
  • 支持多数据源:Presto通过统一的查询语言,能够连接HDFS、MySQL等多种数据源,实现跨源数据的联结查询。
  • 部署简单:Presto无需预先部署HDFS,可以直接运行,减少了集群部署的复杂性。
  • Presto的缺点

  • 内存使用优化:虽然Presto基于内存,但并非所有操作都在内存中进行。对于像count、avg等聚合操作,Presto会边读边算,但这并不意味着它将所有数据都放在内存中处理。对于大规模的连表查询,可能会产生较多的临时数据,从而影响性能。
  • 与数据库查询的效率:虽然Presto可以直接连接数据库,但由于其架构设计,查询效率并不会显著提升。特别是在处理复杂查询时,Presto可能会成为性能瓶颈。
  • Presto的概念

    服务器类型(Server Types)

    Presto的服务器类型分为两类:coordinatorworker

    Coordinator

    • 职责:负责解析SQL语句,生成执行计划,并管理worker节点。
    • 特点:需要至少一个Coordinator节点,负责整个集群的查询管理。
    • 通信:通过REST API与worker和客户端进行通信。

    Worker

    • 职责:执行任务和处理数据,接收来自Coordinator的任务,并将结果返回给Coordinator。
    • 特点:Worker节点负责数据的读取和存储,协同工作以完成复杂查询。
    • 通信:通过REST API与Coordinator和其他Worker节点进行通信。

    数据源(Data Sources)

    Presto的数据源模型包括以下几个关键概念:

    • Connector:用于连接Presto与外部数据源(如Hive、MySQL等)的适配器。
    • Catelog:数据源的组织和管理单元,包含多个schema和table。
    • Schema:数据组织的层级,类似于数据库的schema概念。
    • Table:数据的基本单位,通过Connector与具体的数据源对应。

    查询执行模型(Query Execution Model)

    Presto的查询执行模型基于分层的stage和task设计,具体包括以下几个关键组件:

    • Stage:查询的拆分阶段,负责协调多个task的执行。
    • Task:实际执行查询的工作单元,负责处理数据的读取和转换。
    • Split:数据的分割单位,用于并行处理大数据集。
    • Driver:数据处理的最底层组件,负责具体的数据操作。
    • Operator:数据处理的逻辑组件,负责应用查询条件和转换数据。

    Presto的部署

    安装Presto

  • 下载

    wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.200/presto-server-0.200.tar.gz
  • 解压

    tar -zxvf presto-server-0.200.tar.gz -C /usr/local/
  • 数据目录:建议将数据目录设置在/usr/local/presto-server-0.200/data,避免与安装目录在同一路径,以便于后续升级。

  • 配置Presto

    Presto的配置文件主要位于etc目录下,包括以下几个重要文件:

  • 节点属性文件(node.properties):定义节点标识和数据目录。
  • JVM配置文件(jvm.config):优化Java虚拟机性能。
  • 配置属性文件(config.properties):定义服务器运行模式(coordinator/worker)和网络参数。
  • Catelog属性文件:配置数据源的连接器。
  • 运行Presto

    启动Presto服务器的命令:

    bin/launcher start

    默认日志目录为val/log,包括launcher.logserver.loghttp-request.log

    Presto CLI的使用

  • 下载Presto CLI
    wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.200/presto-cli-0.200-executable.jar
  • 设置执行权限
    chmod +x presto-cli-0.200-executable.jar
  • 运行Presto CLI
    ./presto --server localhost:8080 --catalog hive --schema default
  • 总结

    Presto作为一个强大的分布式大数据查询引擎,在支持多种数据源、快速查询速度等方面表现优异。通过合理配置和部署,Presto能够满足复杂的数据分析需求,但在处理大规模连表查询和与数据库查询时可能会遇到性能瓶颈。

    转载地址:http://amxfk.baihongyu.com/

    你可能感兴趣的文章
    postgis数据库优化_postgresql 性能优化
    查看>>
    postgis求面积、交集等相关函数
    查看>>
    postgis相关函数
    查看>>
    Postgres Docker版本安装mysql_fdw 插件
    查看>>
    Postgres invalid command \N数据恢复处理
    查看>>
    Postgres like 模糊查询匹配集合
    查看>>
    Postgres 自定义函数内实现 in 操作符的递归查询
    查看>>
    Postgres 返回当前时间前后指定天数的集合
    查看>>
    postgres--vacuum
    查看>>
    postgres--wal
    查看>>
    postgres--流复制
    查看>>
    postgres10配置huge_pages
    查看>>
    PostgreSQL 10.0 preview sharding增强 - pushdown 增强
    查看>>
    PostgreSQL 10.0 preview 变化 - pg_xlog,pg_clog,pg_log目录更名为pg_wal,pg_xact,log
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 15章 并行查询_15.2. 何时会用到并行查询?...
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
    查看>>
    PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色
    查看>>
    Qt开发——网络编程UDP网络广播软件之服务器端
    查看>>
    Postgresql 12.9如何配置允许远程连接
    查看>>
    PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
    查看>>