0?1442652658

【缺陷】 presto资料 正常


伍名添加于 2017-01-12 15:11

一、Presto的分布式框架

Presto 是一个开源的分布式 SQL 查询引擎,它被设计为用来专门进行高速、实时的数据分析,数据量支持GBPB字节。它支持在线数据查询,包含HiveCassandra、关系数据库以及专有数据存储。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数。下面的框架图展现了简化的Presto系统框架:

image

1.1:Presto框架图

图角色及主要职责详细说明: 

Client:客户端,发生用户SQL请求和接收Presto服务端的响应数据。

    Coordinator: 协调员,接收客户端的SQL查询、检查SQL语法、分析和规划查询。

    Parser/Analyzer: SQL语法的检查和分析。

    Planner:查询规划。

    Scheduler:将规划后的查询任务分配给离数据最近的子节点,并监控子节点执行过程。

    Worker:子节点,执行Scheduler分配的任务。

Presto执行查询的整个流程如下图:

image


    客户端通过http请求将查询SQL发生到Coordinator;Coordinator调用Parser/Analyzer对预执行SQL进行语法检查和SQL分析,再由Planner进行SQL优化并生成查询计划。然后Scheduler将调度各个子节点执行查询计划。子节点根据Scheduler分配的角色完成查询计划。以以下SQL为例:

select c1.first_name, count(*)

from employees c1 join employees c2 on c1.emp_no=c2.emp_no

where c1.emp_no>10

group by c1.first_name limit 10;

整个SQL运行的流程图如下:

image


SQL执行过程

     注:Scan NodeFixed NodeSingle Node都标示子节点即Worker

二、Presto部署

       准备安装包:

       adiscovery-server.tar.gz

       bpresto-server. tar.gz

       cpresto-cli- executable.jar

步骤:

1、解压discovery-server.tar.gz得到含一个顶级目录discovery-server,我们把它叫做安装目录,在安装目录下新建子目录,命名为etc;切换到新建的etc目录下,新建文件config.propertiesjvm.confignode.properties文件。三个文件分别编写以下内容:

config.properties

http-server.http.port=8089 #discovery-server服务占用的端口号

jvm.config

       -server

-Xmx1G

-XX:+UseConcMarkSweepGC

-XX:+ExplicitGCInvokesConcurrent

-XX:+AggressiveOpts

-XX:+HeapDumpOnOutOfMemoryError

-XX:OnOutOfMemoryError=kill -9 %p

node.properties

       node.environment=presto #集群的名称,必须与presto集群的名称一致,可以自定义

node.id=ffffffff-0000-0000-0000-ffffffffffff #节点的唯一标示

node.data-dir=/home/ubuntu/presto/discovery-data #数据目录,该目录必须存在

进入安装目录下的bin目录,执行命令./ launcher run 启动discovery-server服务。

2、在masterwork节点分别解压presto-server. tar.gz得到一个顶级目录presto-server,该目录也叫安装目录,在安装目录下新建etc目录。在这个etc目录中放入以下配置信息:

节点属性配置文件:node.properties    #每个节点的环境配置信息

JVM 配置文件:jvm.config            #JVM的命令行选项

配置属性配置文件:config.properties   # Presto server的配置信息

日志配置文件:log.properties          #运行日志配置

Catalog目录:Catalog目录           #数据源的配置信息

节点属性配置文件:etc/node.properties包含针对于每个节点的特定的配置信息。 一个节点就是在一台机器上安装的Presto实例。 这份配置文件一般情况下是在Presto第一次安装的时候,由部署系统创建的。 一个etc/node.properties配置文件至少包含如下配置信息:

node.environment=presto   #集群名称, 所有在同一个集群中的Presto节点必须拥有相同的集群名称,且不需与discovery-server集群的名称保持一致。

node.id=ffffffff-ffff-ffff-ffff-ffffffffffff   #每个Presto节点的唯一标示。如果在一个节点上安装多个Presto实例,那么每个Presto节点必须拥有唯一的node.id

node.data-dir=/var/presto/data  #数据存储目录的位置(操作系统上的路径)。必须存在

JVM配置文件,etc/jvm.config

-server

-Xmx16G

-XX:+UseConcMarkSweepGC

-XX:+ExplicitGCInvokesConcurrent

-XX:+CMSClassUnloadingEnabled

-XX:+AggressiveOpts

-XX:+HeapDumpOnOutOfMemoryError

-XX:OnOutOfMemoryError=kill -9 %p

-XX:ReservedCodeCacheSize=150M

config.propertiesetc/config.properties包含了Presto server的所有配置信息。 每个Presto server既是一个coordinator也是一个worker。 但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator。

一个coordinator(master)的etc/config.properties应该至少包含以下信息:

coordinator=true  #是否为master

node-scheduler.include-coordinator=false #是否允许在coordinator服务中进行调度工作

http-server.http.port=8080  #指定HTTP server的端口。

discovery-server.enabled=true

discovery.uri=192.168.0.110:8089  discovery-serverip+端口号

以下是最基本的worker配置:

coordinator=false

http-server.http.port=8080

discovery.uri=192.168.0.110:8089

但是如果用一台机器进行测试,那么这一台机器将会即作为coordinator,也作为worker。配置文件将会如下所示:

coordinator=true

node-scheduler.include-coordinator=true

http-server.http.port=8080

discovery-server.enabled=true

discovery.uri=192.168.0.110:8089

log.properties

  com.facebook.presto=INFO

Catalog目录:

  以连接oracle为例,在该目录下新建xxx. properties文件,文件加入以下内容:

connector.name=oracle

connection-url=jdbc:oracle:thin:@192.168.0.110:1540:orcl #url

connection-user=user #数据库连接用户名

connection-password=password #连接密码

         切换到安装目录下的bin目录,执行./ launcher run(每个节点都需启动)。

    3、解压将presto-cli- executable.jar重命名为presto使用 chmod +x 命令设置可执行权限,然后执行:

./presto --server localhost:8080 --catalog oracle --schema default

回复
0?1470885445
登录后可添加回复
  • 当前状态 新增
  • 选定优先级 正常
  • 指派给 --
  • 里程碑 --
  • 开始日期 2017-01-12
  • 结束日期
  • 预计工时(H) 0.00 小时
  • 完成度 0%
  • 关联Commit

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×