大数据系统构建:可扩展实时数据系统构建原理与最佳实践pdf下载pdf下载

大数据系统构建:可扩展实时数据系统构建原理与最佳实践百度网盘pdf下载

作者:
简介:本篇主要提供大数据系统构建:可扩展实时数据系统构建原理与最佳实践pdf下载
出版社:互动创新图书专营店
出版时间:2017-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍


 书[0名0]:  [0大0]数据系统构建:可扩展实时数据系统构建原理与z1u1i佳实践|5043024
 图书定价:  79元
 图书作者:  (美)南森·马茨(Nathan Marz);(美)詹姆斯·沃伦(James Warren)
 出版社:   [1机1] 械工业出版社
 出版日期:  2017/1/1 0:00:00
 ISBN号:  9787111552949
 开本:  16开
 页数:  0
 版次:  1-1
 作者简介
作者简介 Nathan Marz Cascalog和Storm的创始人。在2011年Twitter收购社交媒体数据分析公司BackType前,他是BackType[0首0]席工程师。在Twitter,他建立了流计算团队,提供和开发共享基础设施,为整个公司的关键实时应用提供支持。他目前是Stealth startup的创始人。 James Warren Storm8的分析架构师,精通[0大0]数据处理、 [1机1] 器[0学0]习和科[0学0]计算。
译者简介 马延辉,资深Hadoop技术专家,对Hadoop生态系统相关技术有着深刻的理解,在Hadoop开发和运维方面积累了丰富的经验。曾就职于阿里、Answers.com、暴风等互联网公司,从事Hadoop相关的研发和运维工作,对[0大0]数据技术的企业级落地、研发、运维和管理有着深刻的理解和丰富的实战经验。开源HBase监控工具Ella作者。现在致力于[0大0]数据技术在传统行业的落地和[0大0]数据技术的普及和推广。
向磊,前暴风影音数据平台架构师,目前在某垂直电[0商0]平台担任技术总监,惠普中[0国0]Hadoop相关课程讲师。开源项目EasyHadoop、phpHiveAdmin作者,对Hadoop及其周边生态系统的底层运维及开发、集群自动化运维、网络架构设计、集群安全、性能[0优0]化、嵌入式编程方面有较深入了解。
魏东琦,博士,长期从事软件研发工作,现就职于中[0国0]地质调查局西安地质调查中心,参加、承担过多项科研项目。现致力于地质行业与[0大0]数据技术融合的相关研究工作。
 内容简介
类似社交网络、网络分析和智能型电子[0商0]务这样的服务,通常需要在非常[0大0]规模的传统数据库上管理数据。复杂性随着规模与需求的增加而增加,而处理[0大0]数据并不是简单地将RDBMS扩[0大0]一倍或推出一些时髦的[亲斤]技术。幸运的是,可扩展性和简单性并不是相互排斥的—你只需要采取不同的方[0法0]。[0大0]数据系统使用多台 [1机1] 器并行工作来存储和处理数据,它引入了[0大0]多数开发者并不熟悉的根本性的挑战。
本书将教你充分利用集群硬件[0优0]势的架构,以及专门用来捕获和分析网络规模数据的[亲斤]工具,来创建这些系统。它将描述一个可扩展的、易于理解[0大0]数据系统的方[0法0],可以由小团队构建并运行。本书利用一个实际示例,基于[0大0]数据系统的理论在实践中实现它们来指导读者。
本书不要求读者以前接触过[0大0]规模数据分析或[0No0]SQL工具。熟悉传统数据库是有帮助的,但不是必需的。本书旨在教你如何思考数据系统,以及如何化繁为简。我们将从基本原理开始,从那些被认定为架构的各个组件所必需的属性开始。
路线图
本书包括18章,各章的主要内容如下。
[0第0]1章介绍了数据系统的原理,并给出了Lambda架构的概述:构建任何数据系统的广义方[0法0]。[0第0]2~17章以理论和示例交替讲解的方式深入介绍Lambda架构的所有内容。理论章节阐述了若干概念,这些概念对现有工具都是适用的;同时,示例章节使用现实世界中的工具来论证这些概念。不要被[0名0]字迷惑,虽然所有章节都是样例驱动。
[0第0]2~9章集中阐述Lambda架构的批处理层。在这里,你将了解如何为主数据集建模、如何使用批处理来创建数据的任意视图,以及如何进行增量和批处理之间的[0[0权0]0]衡。
[0第0]10章和[0第0]11章集中阐述服务层,它支持低延迟访问由批处理层中产生的视图。在这里,你将了解只批量写入的特定数据库。你将发现,这些数据库比传统数据库更简单,它们具有出色的性能,并具备可操作性、稳健性等特性。
[0第0]12~17章集中阐述速度层,该层弥补了批处理层的高延迟,为所有查询提供[亲斤]结果。在这里,你将了解[0No0]SQL数据库、流处理和管理增量计算的复杂性。
[0第0]18章再次复习Lambda架构的相关[0知0]识,并进行查漏补缺。你将了解增量批处理、基本Lambda架构的变种,以及如何充分利用资源。
代码下载和约定
本书的源代码可以在https://github.com/Big-Data-Manning找到。我们提供了运行示例SuperWebAnalytics.com的源代码。
[0大0]量源代码以代码清单的形式给出。这些代码清单提供了完整的代码段。一些代码带有注释,以着重强调或解释某部分代码。在正文的其他地方,代码片段[0会0]在必要时使用。Courier字体用来表示Java代码。在代码中,我们用粗体字来帮助你识别文本中的关键部分。
作者在线
购买本书的读者将可免费使用由Manning出版社运营的私人网络论坛。你可以在论坛上[0评0]论本书、提出技术问题,并从作者和其他用户处得到帮助。要访问和订阅该论坛,请在Web浏览器输入“www.manning.com/BigData”。在论坛上注册后,你可在作者在线(AO)页面查看如下信息:注册后如何登录论坛、哪些帮助可用以及论坛上的行为规则。
Manning承诺为读者提供一个场所,以供个体读者之间、读者和作者之间进行有意义的对话。这并不是作者承诺进行任何特定数量的分享,作者对AO论坛的贡献是自愿的(无报酬的)。我们建议你尝试问作者一些有挑战性的问题,以免他们觉得了然无趣!
只要本书已出版,AO论坛和以前讨论的归档文件即可以从发行[0商0]的网站访问。
关于封面插图
本书的封面插图是“Le Raccommodeur de Fiance”,意思是泥瓦匠。泥瓦匠擅长修补破损或有缺口的盆、盘、杯和碗,他走过[0法0][0国0]的城镇和村庄,做着自己的生意。
该图摘自19世纪[0法0][0国0]出版的Sylvain Maréchal四卷本的地域服饰风俗纲要。其中每幅图都是精心绘制并手工着色的。Maréchal丰富多彩的收藏向人们生动地展示了200年前城市和地区在文化上的差异—相互隔离,人们操着不同的方言和语言。在街头或是在农村,只是通过他们的着装就能够很容易地辨认他们生活的地方和他们的职业或生活中的地位。
自那时以来,着装规范已经发生改变,地区的多样性那时候是如此丰富,但这种多样性现在却消失了。现在很难分辨不同[0大0]陆的居民,更别说不同城市或地区的居民了。也许我们是用更多样化的个人生活取代了文化的多样性—现在肯定是更多样化和快节奏的科技化生活。
为了与其他计算书籍区别开来,Manning希望通过这样的封面插图来庆祝计算 [1机1] 业务的创造性和主动性,所以又将Maréchal的图片带回[0大0]众视野。
 目录

译者序
前言
关于本书
致谢
[0第0]1章 [0大0]数据的[亲斤]范式1
1.1 本书是如何组织的2
1.2 扩展传统数据库3
1.2.1 用队列扩展3
1.2.2 通过数据库分片进行扩展4
1.2.3 开始处理容错问题4
1.2.4 损坏问题5
1.2.5 到底是哪里出错了5
1.2.6 [0大0]数据技术是如何起到帮助作用的5
1.3 [0No0]SQL不是万能的6
1.4 基本原理6
1.5 [0大0]数据系统应有的属性7
1.5.1 鲁棒性和容错性7
1.5.2 低延迟读取和更[亲斤]8
1.5.3 可扩展性8
1.5.4 通用性8
1.5.5 延展性8
1.5.6 即席查询9
1.5.7 少维护9
1.5.8 可调试性9
1.6 全增量架构的问题10
1.6.1 操作复杂性10
1.6.2 实现终一致性的[0极0]端复杂性11
1.6.3 缺乏容忍人为错误12
1.6.4 全增量架构解决方案与 Lambda架构解决方案13
1.7 Lambda架构14
1.7.1 批处理层15
1.7.2 服务层16
1.7.3 批处理层和服务层满足几乎所有属性16
1.7.4 速度层17
1.8 技术上的[亲斤]趋势19
1.8.1 CPU并不是越来越快20
1.8.2 弹性云20
1.8.3 [0大0]数据充满活力的开源生态系统20
1.9 示例应用:SuperWebAnalytics.com21
1.10 总结22
[0第0]一部分 批处理层
[0第0]2章 [0大0]数据的数据模型24
2.1 数据的属性25
2.1.1 数据是原始的28
2.1.2 数据是不可变的30
2.1.3 数据是永远真实的33
2.2 基于事实的数据表示模型34
2.2.1 事实的示例及属性34
2.2.2 基于事实的模型的[0优0]势36
2.3 图模式39
2.3.1 图模式的元素39
2.3.2 可实施模式的必要性40
2.4 SuperWebAnalytics.com的完整数据模型41
2.5 总结42
[0第0]3章 [0大0]数据的数据模型:示例44
3.1 为什么使用序列化框架44
3.2 Apache Thrift45
3.2.1 节点46
3.2.2 边46
3.2.3 属性47
3.2.4 把一切组合成数据对象47
3.2.5 模式演变48
3.3 序列化框架的局限性49
3.4 总结50
[0第0]4章 批处理层的数据存储51
4.1 主数据集的存储需求52
4.2 为批处理层选择存储方案53
4.2.1 使用键/值存储主数据集53
4.2.2 分布式文件系统54
4.3 分布式文件系统是如何工作的54
4.4 使用分布式文件系统存储主数据集56
4.5 垂直分区58
4.6 分布式文件系统的底层性质58
4.7 在分布式文件系统上存储SuperWebAnalytics.com的主数据集60
4.8 总结61
[0第0]5章 批处理层的数据存储:示例62
5.1 使用HDFS62
5.1.1 小文件问题64
5.1.2 转向更高层次的抽象64
5.2 使用Pail在批处理层存储数据65
5.2.1 Pail基本操作66
5.2.2 序列化对象到Pail中67
5.2.3 使用Pail进行批处理操作69
5.2.4 使用Pail进行垂直分区69
5.2.5 Pail文件格式与压缩71
5.2.6 Pail[0优0]点的总结71
5.3 存储SuperWebAnalytics.com的主数据集72
5.3.1 Thrift对象的结构化Pail73
5.3.2 SuperWebAnalytics.com的基础Pail74
5.3.3 用于垂直分区数据集的分片Pail75
5.4 总结78
[0第0]6章 批处理层79
6.1 启发性示例80
6.1.1 给定时间范围内的页面浏览量80
6.1.2 性别推理80
6.1.3 影响力分数81
6.2 批处理层上的计算82
6.3 重[亲斤]计算算[0法0]与增量算[0法0]84
6.3.1 性能85
6.3.2 容忍人为错误86
6.3.3 算[0法0]的通用性86
6.3.4 选择算[0法0]的风格87
6.4 批处理层中的可扩展性87
6.5 MapReduce:一种[0大0]数据计算的范式88
6.5.1 可扩展性89
6.5.2 容错性91
6.5.3 MapReduce的通用性92
6.6 MapReduce的底层特性94
6.6.1 多步计算很怪异94
6.6.2 手动实现连接非常复杂94
6.6.3 逻辑和物理执行紧密耦合96
6.7 管道图—一种关于批处理计算的高级思维方式97
6.7.1 管道图的概念97
6.7.2 通过MapReduce执行管道图101
6.7.3 合并聚合器101
6.7.4 管道图示例102
6.8 总结103
[0第0]7章 批处理层:示例104
7.1 一个例证105
7.2 数据处理工具的常见陷阱106
7.2.1 自定义语言107
7.2.2 不良的可组合抽象107
7.3 JCascalog介绍108
7.3.1 JCascalog的数据模型109
7.3.2 JCascalog查询的结构110
7.3.3 查询多个数据集111
7.3.4 分组和聚合器113
7.3.5 对一个查询示例进行单步调试114
7.3.6 自定义谓词操作117
7.4 组合121
7.4.1 合并子查询122
7.4.2 动态创建子查询123
7.4.3 谓词宏125
7.4.4 动态创建谓词宏128
7.5 总结130
[0第0]8章 批处理层示例:架构和算[0法0]131
8.1 SuperWebAnalytics.com批处理层的设计132
8.1.1 所支持的查询132
8.1.2 批处理视图132
8.2 工作流概述135
8.3 获取[亲斤]数据137
8.4 URL规范化137
8.5 用户标识符规范化138
8.6 页面浏览去重142
8.7 计算批处理视图142
8.7.1 给定时间范围内的页面浏览量143
8.7.2 给定时间范围内的[0独0]立访客143
8.7.3 跳出率分析144
8.8 总结145
[0第0]9章 批处理层示例:实现147
9.1 出发点147
9.2 准备工作流148
9.3 获取[亲斤]数据149
9.4 URL规范化152
9.5 用户标识符规范化153
9.6 页面浏览去重159
9.7 计算批处理视图159
9.7.1 给定时间范围内的页面浏览量159
9.7.2 给定时间范围内的[0独0]立访客161
9.7.3 跳出率分析163
9.8 总结165
[0第0]二部分 服务层
[0第0]10章 服务层概述168
10.1 服务层的性能指标169
10.2 规范化/非规范化问题的服务层解决方案172
10.3 服务层数据库的需求173
10.4 设计SuperWebAnalytics.com的服务层174
10.4.1 给定时间范围内的页面浏览量175
10.4.2 给定时间范围内的[0独0]立访客175
10.4.3 跳出率分析176
10.5 对比全增量的解决方案177
10.5.1 给定时间范围内的[0独0]立访客的全增量方案177
10.5.2 与Lambda架构解决方案的比较182
10.6 总结183
[0第0]11章 服务层:示例184
11.1 ElephantDB的基本概念184
11.1.1 ElephantDB中的视图创建185
11.1.2 ElephantDB中的视图服务185
11.1.3 使用ElephantDB186
11.2 创建SuperWebAnalytics.com的服务层188
11.2.1 给定时间范围内的页面浏览量188
11.2.2 给定时间范围内的[0独0]立访客数量191
11.2.3 跳出率分析191
11.3 总结192
[0第0]三部分 速度层
[0第0]12章 实时视图194
12.1 计算实时视图195
12.2 存储实时视图197
12.2.1 终一致性198
12.2.2 速度层中存储的状态总量198
12.3 增量计算的挑战199
12.3.1 CAP原理的有效性199
12.3.2 CAP原理和增量算[0法0]之间复杂的相互作用201
12.4 异步更[亲斤]与同步更[亲斤]202
12.5 过期实时视图203
12.6 总结205
[0第0]13章 实时视图:示例206
13.1 Cassandra的数据模型206
13.2 使用Cassandra208
13.3 总结210
[0第0]14章 队列和流处理211
14.1 队列211
14.1.1 单消费者队列212
14.1.2 多消费者队列214
14.2 流处理214
14.2.1 队列和工作节点215
14.2.2 队列和工作节点的缺陷216
14.3 更高层次的一次一个的流处理217
14.3.1 Storm模型217
14.3.2 保证消息处理221
14.4 SuperWebAnalytics.com速度层223
14.5 总结226
[0第0]15章 队列和流处理:示例227
15.1 使用Apache Storm定义拓扑结构227
15.2 Apache Storm集群及其部署230
15.3 保证消息处理232
15.4 实现SuperWebAnalytics.com给定时间范围内的[0独0]立访客的速度层233
15.5 总结237
[0第0]16章 微批量流处理239
16.1 实现有且仅有一次语义240
16.1.1 强有序处理240
16.1.2 微批量流处理241
16.1.3 微批量流处理的拓扑结构242
16.2 微批量流处理的核心概念244
16.3 微批量流处理的扩展管道图245
16.4 完成SuperWebAnalytics.com的速度层246
16.4.1 给定时间范围内的页面浏览量246
16.4.2 跳出率分析247
16.5 另一个跳出率分析示例251
16.6 总结252
[0第0]17章 微批量流处理:示例253
17.1 使用Trident253
17.2 完成SuperWebAnalytics.com的速度层257
17.2.1 给定时间范围内的页面浏览量257
17.2.2 跳出率分析259
17.3 完全容错、基于内存及微批量处理265
17.4 总结266
[0第0]18章 深入Lambda架构268
18.1 定义数据系统268
18.2 批处理层和服务层270
18.2.1 增量的批处理270
18.2.2 测量和[0优0]化批处理层的资源使用276
18.3 速度层280
18.4 查询层281
18.5 总结282
 编辑推荐
近年来,互联网技术发展迅猛,从电子交易记录、社交网络数据分析到地震分析、分子建模,各行各业应用[0大0]数据系统的范围日益拓宽,所涉及的数据量日益“臃肿”,对处理速度的要求也日益提高,这就需要用基于硬件集群构建的架构进行存储和处理。但这种架构在提供便利的同时,也引入了[0大0]多数开发者并不熟悉的、困扰传统架构的复杂性问题。 本书教你使用一种专门设计用来获取和分析网络规模数据的架构去构建[0大0]数据系统——Lambda架构,它是一种可扩展的、易于理解的、可以被小团队用来构建和运行[0大0]数据系统的方[0法0]。除了与你分享Lambda架构的相关[0知0]识,本书还给出了相应的示例,将“理论应用于实践”,助你更好地“认识”Lambda架构,更好地将其应用到工作中。