出版社:电子工业出版社
年代:2016
定价:69.0
Presto是专门用于实时查询计算而设计和开发的产品,由于Presto是基于Java语言开发的,因此对于使用者和开发者而言,Presto极易学习、使用并针对于特定的业务场景进行改造开发和性能优化。无论是对多数据源支持、高性能、易用性、可扩展性等方面,Presto都是实时查询计算产品中的佼佼者。
第一部分基础篇
第1章概述2
1.1Presto背景及发展2
1.2Presto特点2
1.3基本概念3
1.3.1Presto服务进程3
1.3.2Presto模型4
1.3.3Presto查询执行模型5
1.4Presto整体架构9
1.4.1硬件架构9
1.4.2软件架构9
1.5小结11
第2章Presto安装与部署12
2.1环境说明12
2.2准备工作13
2.2.1建立SSH信任关系13
2.2.2安装Java17
2.2.3安装Maven17
2.2.4安装Hive18
2.3源码编译21
2.3.1下载源码21
2.3.2源码结构说明22
2.3.3编译26
2.4部署30
2.4.1服务部署30
2.4.2客户端部署38
2.4.3JDBC使用40
2.5小结42
第二部分核心设计篇
第3章Presto RESTful框架解析44
3.1Statement服务接口44
3.2Query服务接口47
3.3Stage服务接口48
3.4Task服务接口49
3.5小结52
第4章提交查询53
4.1提交查询的步骤53
4.2源码解析53
4.3提交查询的流程60
4.4小结61
第5章生成查询执行计划62
5.1基本概念63
5.1.1Node63
5.1.2Metadata API67
5.2词法与语法分析68
5.2.1语法规则69
5.2.2词法分析69
5.2.3语法分析71
5.3获取QueryExecution72
5.3.1获取QueryExecutionFactory72
5.3.2创建QueryExecution73
5.3.3启动QueryExecution74
5.4语义分析77
5.4.1Statement分析77
5.4.2Relation分析84
5.4.3表达式分析91
5.5执行计划生成91
5.5.1执行计划节点91
5.5.2SQL执行计划93
5.5.3Relation执行计划95
5.5.4Query执行计划99
5.6执行计划优化102
5.6.1ImplementSampleAsFilter102
5.6.2CanonicalizeExpressions102
5.6.3SimplifyExpressions102
5.6.4UnaliasSymbolReferences103
5.6.5PruneRedundantProjections103
5.6.6SetFlatteningOptimizer103
5.6.7LimitPushDown104
5.6.8PredicatePushDown104
5.6.9MergeProjections104
5.6.10ProjectionPushDown104
5.6.11IndexJoinOptimizer105
5.6.12CountConstantOptimizer105
5.6.13WindowFilterPushDown105
5.6.14HashGenerationOptimizer105
5.6.15PruneUnreferencedOutputs106
5.6.16MetadataQueryOptimizer106
5.6.17SingleDistinctOptimizer106
5.6.18BeginTableWrite106
5.6.19AddExchanges107
5.6.20PickLayout107
5.7执行计划分段107
5.7.1Source107
5.7.2Fixed107
5.7.3Single107
5.7.4Coordinator_only107
5.8示例108
5.8.1Count执行计划108
5.8.2Join执行计划108
5.9小结110
第6章查询调度111
6.1生成调度执行器111
6.2查询调度过程113
6.2.1NodeManager114
6.2.2NodeSelector115
6.3小结118
第7章查询执行119
7.1查询执行逻辑120
7.2Task调度120
7.2.1Source Task调度120
7.2.2Fixed Task调度126
7.2.3Single Task调度128
7.2.4Coordinator_Only Task调度128
7.3Task执行129
7.3.1创建Task129
7.3.2更新Task135
7.3.3运行Task140
7.4小结147
第8章队列148
8.1配置说明148
8.1.1queues队列定义149
8.1.2rules规则定义149
8.2队列加载150
8.3队列匹配151
8.4小结154
第9章System Connector155
9.1System Connector使用155
9.1.1Information_schema155
9.1.2Metadata157
9.1.3Runtime157
9.2System Connector实现159
9.2.1Information_schema实现160
9.2.2System Connector实现163
9.3小结168
第10章Hive Connector169
10.1与Hive的结合170
10.2Split分片管理175
10.3数据读取179
10.4Create Table As Select的实现182
10.5小结186
第11章Kafka Connector187
11.1认识Kafka Connector187
11.1.1配置187
11.1.2配置属性187
11.1.3内置字段189
11.1.4表定义文件190
11.1.5Kafka中的key和message191
11.1.6行解码192
11.1.7日期和时间解码器194
11.1.8文本解码器194
11.1.9数值解码器194
11.2Kafka连接器使用教程194
11.2.1安装Apache Kafka195
11.2.2下载数据195
11.2.3在Presto中配置Kafka topics197
11.2.4基本数据查询197
11.2.5添加表定义文件199
11.2.6将message中所有值映射到不同列200
11.2.7使用实时数据202
11.3Kafka Connector获取数据207
11.3.1Split分片管理207
11.3.2数据读取209
11.4小结210
第12章Connector开发211
12.1创建Maven工程211
12.2注册Plugin213
12.3Connector213
12.4Metadata215
12.5SplitManager217
12.6RecordSetProvider218
12.7小结219
第13章Functions开发220
13.1Function注册220
13.2窗口函数225
13.3聚合函数229
13.4小结232
第三部分高级篇
第14章JD—Presto功能改造234
14.1PDBO功能开发234
14.1.1JDBC Split剖析235
14.1.2JdbcRecordCursor剖析238
14.1.3分批次读取实现原理240
14.1.4动态步长实现原理243
14.1.5条件下发245
14.1.6PDBO配置定义247
14.2DDL及DML支持250
14.2.1Hive连接器Insert功能250
14.2.2Hive连接器CTAS动态分区表功能252
14.3动态增加、修改、删除Catalog254
14.3.1目的254
14.3.2现状254
14.3.3实现255
14.3.4效果258
14.4小结258
第15章Presto性能调优259
15.1合理设计分区259
15.2Group By字句优化259
15.3使用模糊聚合函数259
15.4合并多条Like子句为一条regexp_like子句260
15.5大表放在Join子句左边260
15.6关闭distributed hash join261
15.7使用ORC存储261
15.8小结262
第16章Presto应用场景263
16.1ETL263
16.2实时数据计算264
16.3Ad—Hoc查询266
16.4实时数据流分析266
16.5小结268
附录A常见问题及解决办法269
A.1同时访问两个Hadoop集群269
A.2Kafka集群重启后无法获取数据272
A.3Task exceeded max memory size277
A.4SQL中In子句太长导致栈溢出错误278
A.5高并发导致大量查询出错279
附录BPresto配置参数说明282
附录CPresto执行信息说明289
Presto是专门为大数据实时查询计算而设计和开发的产品。由于Presto是基于Java语言开发的,因此,对使用者和开发者而言,Presto极易学习、使用并针对特定的业务场景进行改造开发和性能优化。无论是对多数据源支持,还是高性能、易用性、可扩展性等方面, Presto都是大数据实时查询计算产品中的佼佼者。
《Presto技术内幕》按照由浅入深的顺序对Presto进行了全方位的细致讲解,具体内容包括Presto概述、 Presto安装与部署、 Presto RESTful框架解析、提交查询、生成查询执行计划、查询调度、查询执行、队列、System Connector、 Hive Connector、 Kafka Connector、 Connector开发、 Functions开发、 JD-Presto功能改造、 Presto性能调优、 Presto应用场景。
《Presto技术内幕》由浅入深地详细介绍了Presto 的安装过程、内部运行原理机制、功能特性、性能优化方法,以及在应用过程中常见的问题及解决方案等,同时详细介绍了JD-Presto 版本的许多新功能及其适用的业务场景,这些功能的成功研发,使得JD-Presto 版本不仅仅可用于离线大数据分析计算来提升性能,还可用于多种数据源混合进行实时大数据分析计算,使一些使用其他大数据技术不能解决的业务场景有了一个全新有效的解决方案。