1 presto概述
presto 是 分布式 SQL 查询引擎
2 核心概念
- 协调者 coordinator
- 解析语句
- 规划查询
- 管理work节点
- 使用REST API与work节点通信,从work节点获取结果并最终返回给客户端
- 工作者 work
- 执行任务
- 处理数据
- 从connector获取数据并相互交换中间数据
- work工作进程启动时 ,它会将自己告诉 协调器 中的 发现服务服务器discover,这使得协调器能够发现work节点
- 使用REST API与work/coordinator节点通信
- 连接器 connector
- 使presto适应hive或RDBMS等数据源,可以类比数据库驱动一样考虑connector
- catalog
- 每个catalog目录文件,与 连接器 + Schema 相关联
- 可配置多个连接器
- hive连接器
- mysql连接器
- 第三方连接器
- 多连接器配置,可以实现 同一个SQL查询中,查询两个hive集群数据
- Schema
- 表的组织形式
- catalog 和 schema 定义了可查询的表
- 阶段 stage
- 执行查询时,通过执行分解为阶段层次结构来实现
- 例如:
- 如果 Presto 需要从存储在 Hive 中的 10 亿行中聚合数据,
它会通过创建一个根阶段来聚合其他几个阶段的输出,所有这些阶段都旨在实现分布式查询计划的不同部分。
- 如果 Presto 需要从存储在 Hive 中的 10 亿行中聚合数据,
- 任务 task
- 阶段转化为任务,然后执行或处理拆分
- 拆分 split
- 对较大数据集的部分拆分进行操作
- 驱动 driver
- task包含一个或多个driver。driver对数据进行操作并组合操作符以产生输出。
2 安装
集群部署:
集群规划:
7个节点,中选出5个节点,避开nn、rm等关键节点。
1个coordinator,4个work
coordinator :
- config.properties
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8082
query.max-memory=120GB
query.max-memory-per-node=20GB
query.max-total-memory-per-node=32GB
query.max-total-memory=270GB
query.low-memory-killer.policy=total-reservation-on-blocked-nodes
discovery-server.enabled=true
discovery.uri=http://192.168.129.8:8082
- jvm.config
-server
-Xmn10G
-Xmx80G
-XX:+UseG1GC
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
- log.properties
com.facebook.presto=INFO
- node.properties
node.environment=nf_production
node.id=dhc8
node.data-dir=/data/presto/data
work:
- config.properties
coordinator=false
http-server.http.port=8082
query.max-memory=120GB
query.max-memory-per-node=20GB
query.max-total-memory-per-node=32GB
query.max-total-memory=270GB
query.low-memory-killer.policy=total-reservation-on-blocked-nodes
discovery.uri=http://192.168.129.8:8082
- jvm.config
-server
-Xmn10G
-Xmx80G
-XX:+UseG1GC
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
- log.properties
com.facebook.presto=INFO
- node.properties
node.environment=nf_production
node.id=dhc3
node.data-dir=/data/presto/data
catalog
- hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://nfcls8:9083
hive.config.resources=/data/bigdata/server/hadoop-2.7.7/etc/hadoop/core-site.xml,/data/bigdata/server/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
注:presto节点需要安装在Hadoop集群节点上,避开Nn/rm等关键组件节点