目录
简介
presto架构
presto集群是master worker架构,有如下几个组件:
coordinator:presto集群的master节点,只能有一个,负责接收client的查询请求、解析SQL、生成执行计划、分发执行计划。
discovery server:只能有一个只能有一个,负责维护coordinator和worker节点关系,worker节点启动后向discovery service服务注册,coordinator通过discovery service获取注册的worker节点以及catalog,通常内嵌于coordinator节点中。
worker:负责执行查询任务以及与hdfs进行交互读取数据,一个worker可以配置多个connector。
优缺点
优点:多数据源/支持sql/可以自己扩展connector/多源数据混合计算/高性能。
缺点:基于内存计算不适合多个大表join操作(需要大量内存)。
数据模型
catalog:数据源,类似于一个mysql实例/hive集群。
schema:数据库,类似于mysql中的database。
table:表。
查询模型
安装
安装server
下载文件:
mkdir -p /opt/app/presto
cd /opt/app/presto
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.220/presto-server-0.220.tar.gz
tar -zxvf presto-server-0.220.tar.gz
创建配置文件目录
cd presto-server-0.220
mkdir etc
etc/config.properties
# 该节点是否是presto的coordinator节点
coordinator=true
# coordinator节点是否参与运算
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
# 用户内存和系统内存加起来的最大值
query.max-total-memory-per-node=2GB
# discovery server内嵌到coordinator中
discovery-server.enabled=true
discovery.uri=http://hadoop01:8080
etc/node.properties
node.environment=test
# node.id不可重复
node.id=hadoop01
node.data-dir=/var/presto/data
创建数据目录
mkdir -p /var/presto/data
etc/jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
etc/log.properties (可以省略)
com.facebook.presto=INFO
配置hive catalog
创建catalog目录
mkdir -p etc/catalog
添加hive catalog(前提要启动hive metastore服务)
etc/catalog/hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://hadoop01:9083
# hadoop配置文件
hive.config.resources=/opt/app/hadoop/hadoop-2.6.0-cdh5.16.1/etc/hadoop/core-site.xml,/opt/app/hadoop/hadoop-2.6.0-cdh5.16.1/etc/hadoop/hdfs-site.xml
启动server
./bin/launcher start
启动成功后可以通过jps可以查看到PrestoServer进程。
启动日志在 /var/presto/data/var/log/ 目录下。
安装client
下载文件:
cd /opt/app/presto
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.220/presto-cli-0.220-executable.jar
chmod +x presto-cli-0.220-executable.jar
ln -s presto-cli-0.220-executable.jar presto-cli
启动cli
./presto-cli --server hadoop01:8080
show catalogs;
show schemas from hive;
show tables from hive.default;
exit
# 启动时候指定catalog和schema
./presto-cli --server hadoop01:8080 --catalog hive --schema default
show tables;