Presto技术内幕

Presto技术内幕

JD-Presto研发团队, 著

出版社:电子工业出版社

年代:2016

定价:69.0

书籍简介:

Presto是专门用于实时查询计算而设计和开发的产品,由于Presto是基于Java语言开发的,因此对于使用者和开发者而言,Presto极易学习、使用并针对于特定的业务场景进行改造开发和性能优化。无论是对多数据源支持、高性能、易用性、可扩展性等方面,Presto都是实时查询计算产品中的佼佼者。

作者介绍:

翁志:现任京 东首席技术顾问,信息安全部负责人,硅谷研发中心负责人,主要负责京 东的技术创新,信息安全以及对外技术交流合作等,兼任全国信息安全标准化技术委员会委员。拥有近20年IT技术开发经验,拥有十余项国内外专利。2013年加入京 东,领导京 东大数据开源计算框架Presto荣获“2015COPU开源优秀项目奖”,本人获“中国开源杰出人物”称号。 机构负责人-戴东东:时任京 东数据库管理部负责人,负责数据库、大数据等新技术研究工作,拥有近15年IT技术研发及团队管理经验,侧重于海量数据库、大数据、机器学习等技术领域的研究。2012年加入京 东,组建并带领JD-Presto研发团队荣获多个国内外奖项。 高级架构师-吕信:Presto中国社区创建者与管理者,主要从事Hadoop、JD-Presto大数据开源产品及京 东数据云的研发与架构设计,具有丰富的大数据解决方案及大数据公有云解决方案的设计及开发经验。 架构师-郭李明:2012年入职京 东,一直从事与大数据分布式架构相关的技术研究,参与并主导了Presto京 东开源版本的核心功能开发,致力于大数据计算的解决方案研究。 高级工程师-袁安峰:擅长Presto性能调优与Bug修复,对Presto的SQL优化器有深入研究, 同时一直致力于对Presto底层实现原理的研究和探索。负责CSDN极客社区Presto板块维护,热衷于分享研究Presto技术原理的文章以及对Presto使用的心得和体会。 高级工程师-孔云龙:对HDFS、MapReduce、Hive等Hadoop生态系统中的技术有比较深入研究,在分布式查询引擎Presto和分布式消息系统Kafka的功能改造和优化方面积累了丰富的经验。目前正在京 东公有云部门从事数据计算服务相关研发工作。

书籍目录:

第一部分基础篇

第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 版本不仅仅可用于离线大数据分析计算来提升性能,还可用于多种数据源混合进行实时大数据分析计算,使一些使用其他大数据技术不能解决的业务场景有了一个全新有效的解决方案。

书籍规格:

书籍详细信息
书名Presto技术内幕站内查询相似图书
9787121285639
如需购买下载《Presto技术内幕》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位电子工业出版社
版次1版印次1
定价(元)69.0语种简体中文
尺寸26 × 19装帧平装
页数印数

书籍信息归属:

Presto技术内幕是电子工业出版社于2016.5出版的中图分类号为 TP274 的主题关于 数据处理-教材 的书籍。