具体描述
大数据是当前最为流行的热点概念之一,其已由技术名词衍生到对很多行业产生颠覆性影响的社会现象,作为最明确的技术发展趋势之一,基于大数据的各种新型产品必将会对每个人的日常生活产生日益重要的影响。
《大数据日知录:架构与算法》从架构与算法角度全面梳理了大数据存储与处理的相关技术。大数据技术具有涉及的知识点异常众多且正处于快速演进发展过程中等特点,其技术点包括底层的硬件体系结构、相关的基础理论、大规模数据存储系统、分布式架构设计、各种不同应用场景下的差异化系统设计思路、机器学习与数据挖掘并行算法以及层出不穷的新架构、新系统等。《大数据日知录:架构与算法》对众多纷繁芜杂的相关技术文献和系统进行了择优汰劣并系统性地对相关知识分门别类地进行整理和介绍,将大数据相关技术分为大数据基础理论、大数据系统体系结构、大数据存储,以及包含批处理、流式计算、交互式数据分析、图数据库、并行机器学习的架构与算法以及增量计算等技术分支在内的大数据处理等几个大的方向。通过这种体系化的知识梳理与讲解,相信对于读者整体和系统地了解、吸收和掌握相关的优秀技术有极大的帮助与促进作用。
《大数据日知录:架构与算法》的读者对象包括对NoSQL 系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。
作者简介
张俊林是技术书籍《这就是搜索引擎:核心技术详解》(该书荣获全国第十二届输出版优秀图书奖)的作者,目前担任畅捷通智能平台总监。在此之前,张俊林曾经在阿里巴巴搜索技术中心、百度商务搜索部凤巢广告平台以及新浪微博搜索部及数据系统部担任资深技术专家,新浪微博技术委员会成员,负责算法策略方向。他还曾是智能信息聚合网站“玩聚网”的联合创始人之一。他的研发兴趣集中在:搜索技术、推荐系统、社交挖掘、自然语言处理与大数据算法架构等方面,并在以上领域有多年工业界实践经验。
张俊林本科毕业于天津大学管理学院,1999年至2004年在中科院软件所直接攻读博士学位,研究方向是信息检索理论与自然语言处理,就学期间曾在ACL/COLING/IJCNLP等国际顶级会议发表多篇学术论文,另外,他在此期间领导设计的搜索系统曾在美国国防部DARPA主持的TREC第二届高精度检索系统评测中在17支国际高水平研究团队激烈竞争中胜出,并取得综合排名第一名的优异成绩。
目录信息
0.1 大数据是什么.......................... 2
0.2 大数据之翼:技术范型转换......................................... 4
0.3 大数据商业炼金术................................ 6
0.4 “大数据”在路上................................................... 7
第1 章 数据分片与路由.............................................. 9
1.1 抽象模型.......................................................10
1.2 哈希分片(Hash Partition) ..............................11
1.2.1 Round Robin....................................11
1.2.2 虚拟桶(Virtual Buckets) ..........................12
1.2.3 一致性哈希(Consistent Hashing) ...........................13
1.3 范围分片(Range Partition) ......................................18
参考文献......................................19
第2 章 数据复制与一致性................................................20
2.1 基本原则与设计理念............................21
2.1.1 原教旨CAP 主义..............................................21
2.1.2 CAP 重装上阵(CAP Reloaded).............................23
2.1.3 ACID 原则...............................................24
2.1.4 BASE 原则.................................................24
2.1.5 CAP/ACID/BASE 三者的关系...........................25
2.1.6 幂等性(Idempotent)........................................26
2.2 一致性模型分类.................................................26
2.2.1 强一致性............................................27
2.2.2 最终一致性........................................28
2.2.3 因果一致性.............................28
2.2.4 “读你所写”一致性....................................29
2.2.5 会话一致性....................................29
2.2.6 单调读一致性..............................................30
2.2.7 单调写一致性.....................................................30
2.3 副本更新策略...........................30
2.3.1 同时更新..........................................30
2.3.2 主从式更新.....................................31
2.3.3 任意节点更新......................................32
2.4 一致性协议...........................................................32
2.4.1 两阶段提交协议(Two-Phrase Commit,2PC)..........................33
2.4.2 向量时钟(Vector Clock) ..............................38
2.4.3 RWN 协议.................................................40
2.4.4 Paxos 协议.............................................42
2.4.5 Raft 协议.............................................45
参考文献................................................49
第3 章 大数据常用的算法与数据结构....................................51
3.1 布隆过滤器(Bloom Filter) ............................51
3.1.1 基本原理.............................................52
3.1.2 误判率及相关计算..........................................52
3.1.3 改进:计数Bloom Filter....................................53
3.1.4 应用............................................54
3.2 SkipList............................................55
3.3 LSM 树........................................58
3.4 Merkle 哈希树(Merkle Hash Tree) .............................62
3.4.1 Merkle 树基本原理..................................................62
3.4.2 Dynamo 中的应用.........................................63
3.4.3 比特币中的应用..................................................63
3.5 Snappy 与LZSS 算法..........................................65
3.5.1 LZSS 算法.............................................65
3.5.2 Snappy..........................................67
3.6 Cuckoo 哈希(Cuckoo Hashing) ..................................67
3.6.1 基本原理...............................................68
3.6.2 应用:SILT 存储系统.........................................68
参考文献...................................................70
第4 章 集群资源管理与调度.......................................71
4.1 资源管理抽象模型...................................72
4.1.1 概念模型....................................72
4.1.2 通用架构...............................................73
4.2 调度系统设计的基本问题.....................................74
4.2.1 资源异质性与工作负载异质性............................74
4.2.2 数据局部性(Data Locality) ........................................75
4.2.3 抢占式调度与非抢占式调度...................................75
4.2.4 资源分配粒度(Allocation Granularity) .............76
4.2.5 饿死(Starvation)与死锁(Dead Lock)问题...........................76
4.2.6 资源隔离方法........................................77
4.3 资源管理与调度系统范型.............................77
4.3.1 集中式调度器(Monolithic Scheduler).......................78
4.3.2 两级调度器(Two-Level Scheduler) .........................79
4.3.3 状态共享调度器(Shared-State Scheduler) ....................79
4.4 资源调度策略...............................................81
4.4.1 FIFO 调度策略..........................................81
4.4.2 公平调度器(Fair Scheduler)......................81
4.4.3 能力调度器(Capacity Scheduler) ..........................82
4.4.4 延迟调度策略(Delay Scheduling)............................82
4.4.5 主资源公平调度策略(Dominant Resource Fair Scheduling).............82
4.5 Mesos .................................84
4.6 YARN......................................87
参考文献..............................................90
第5 章 分布式协调系统...................................91
5.1 Chubby 锁服务...............................92
5.1.1 系统架构........................................93
5.1.2 数据模型..................................94
5.1.3 会话与KeepAlive 机制...............................95
5.1.4 客户端缓存.......................................95
5.2 ZooKeeper ................................96
5.2.1 体系结构...........................................96
5.2.2 数据模型(Data Model) .............................97
5.2.3 API ...............................98
5.2.4 ZooKeeper 的典型应用场景..................................98
5.2.5 ZooKeeper 的实际应用.......................................103
参考文献...................................104
第6 章 分布式通信..............................106
6.1 序列化与远程过程调用框架..................................107
6.1.1 Protocol Buffer 与Thrift .....................108
6.1.2 Avro...............................109
6.2 消息队列.....................................110
6.2.1 常见的消息队列系统......................................110
6.2.2 Kafka .......................111
6.3 应用层多播通信(Application-Level Multi-Broadcast)........114
6.3.1 概述...............................114
6.3.2 Gossip 协议...........................115
参考文献..........................118
第7 章 数据通道.........................................120
7.1 Log 数据收集.................................120
7.1.1 Chukwa........................121
7.1.2 Scribe......................122
7.2 数据总线......................................123
7.2.1 Databus............................125
7.2.2 Wormhole .......................127
7.3 数据导入/导出...........................................128
参考文献.............................129
第8 章 分布式文件系统....................................131
8.1 Google 文件系统(GFS) .................................132
8.1.1 GFS 设计原则...........................................132
8.1.2 GFS 整体架构..............................133
8.1.3 GFS 主控服务器..................................134
8.1.4 系统交互行为.................................136
8.1.5 Colossus ........................137
8.2 HDFS ..........................138
8.2.1 HDFS 整体架构.................................139
8.2.2 HA 方案..............................140
8.2.3 NameNode 联盟........................143
8.3 HayStack 存储系统....................................145
8.3.1 HayStack 整体架构.................................146
8.3.2 目录服务..................................147
8.3.3 HayStack 缓存...........................................148
8.3.4 HayStack 存储系统的实现...............................148
8.4 文件存储布局.........................................150
8.4.1 行式存储........................................151
8.4.2 列式存储...........................................151
8.4.3 混合式存储........................................156
8.5 纠删码(Erasure Code).............................158
8.5.1 Reed-Solomon 编码...............................159
8.5.2 LRC 编码.....................................164
8.5.3 HDFS-RAID 架构.........................166
参考文献.....................................166
第9 章 内存KV 数据库...................................168
9.1 RAMCloud ..............................169
9.1.1 RAMCloud 整体架构................................169
9.1.2 数据副本管理与数据恢复................................170
9.2 Redis....................................172
9.3 MemBase ...............................173
参考文献................................................175
第10 章 列式数据库...........................................176
10.1 BigTable....................................177
10.1.1 BigTable 的数据模型..........................177
10.1.2 BigTable 的整体结构................................178
10.1.3 BigTable 的管理数据.............................179
10.1.4 主控服务器(Master Server)......................181
10.1.5 子表服务器(Tablet Server) ....................182
10.2 PNUTS 存储系统........................................186
10.2.1 PNUTS 的整体架构..............................186
10.2.2 存储单元...............................187
10.2.3 子表控制器与数据路由器..................................187
10.2.4 雅虎消息代理.............................188
10.2.5 数据一致性.........................................189
10.3 MegaStore..................................................190
10.3.1 实体群组切分......................191
10.3.2 数据模型........................................192
10.3.3 数据读/写与备份.................................193
10.4 Spanner .........................................194
10.4.1 SpanServer 软件栈.........................................195
10.4.2 数据模型.........................................196
10.4.3 TrueTime ...........................................196
参考文献..............................................197
第11 章 大规模批处理系统...................................199
11.1 MapReduce 计算模型与架构................................200
11.1.1 计算模型.......................................201
11.1.2 系统架构......................................203
11.1.3 MapReduce 计算的特点及不足......................................206
11.2 MapReduce 计算模式...........................206
11.2.1 求和模式(Summarization Pattern)................207
11.2.2 过滤模式(Filtering Pattern) ................208
11.2.3 组织数据模式(Data Organization Pattern) .....................210
11.2.4 Join 模式(Join Pattern)......................212
11.3 DAG 计算模型..........................................214
11.3.1 DAG 计算系统的三层结构............................214
11.3.2 Dryad .......................................215
11.3.3 FlumeJava 和Tez ........................................217
参考文献...........................................218
第12 章 流式计算........................................219
12.1 流式计算系统架构....................................222
12.1.1 主从架构............................................222
12.1.2 P2P 架构.....................................................223
12.1.3 Samza 架构..........................................224
12.2 DAG 拓扑结构..........................................224
12.2.1 计算节点.....................................................225
12.2.2 数据流..............................................226
12.2.3 拓扑结构..................................226
12.3 送达保证(Delivery Guarantees)..............................229
12.3.1 Storm 的送达保证机制.................................230
12.3.2 MillWheel 的“恰好送达一次”机制...........................233
12.4 状态持久化...........................................234
12.4.1 容错的三种模式....................................234
12.4.2 Storm 的状态持久化.......................................236
12.4.3 MillWheel 和Samza 的状态持久化......................237
参考文献............................................238
第13 章 交互式数据分析...................................240
13.1 Hive 系数据仓库.................................242
13.1.1 Hive .....................................242
13.1.2 StingerInitiative ................................250
13.2 Shark 系数据仓库..................................251
13.2.1 Shark 架构.........................................252
13.2.2 部分DAG 执行引擎(PDE) ........................253
13.2.3 数据共同分片.........................................254
13.3 Dremel 系数据仓库...................................254
13.3.1 Dremel...........................255
13.3.2 PowerDrill ..........................258
13.3.3 Impala.................................261
13.3.4 Presto...............................264
13.4 混合系数据仓库......................................265
参考文献.................................269
第14 章 图数据库:架构与算法................................271
14.1 在线查询类图数据库...........................272
14.1.1 三层结构.........................272
14.1.2 TAO 图数据库.................................273
14.2 常见图挖掘问题..........................................277
14.2.1 PageRank 计算.......................................278
14.2.2 单源最短路径(Single Source Shortest Path) ..................278
14.2.3 二部图最大匹配.............................279
14.3 离线挖掘数据分片..............................................279
14.3.1 切边法(Edge-Cut)......................................280
14.3.2 切点法(Vertex-Cut)...............................282
14.4 离线挖掘计算模型...................................284
14.4.1 以节点为中心的编程模型..........................284
14.4.2 GAS 编程模型...........................................285
14.4.3 同步执行模型.....................................286
14.4.4 异步执行模型...................................290
14.5 离线挖掘图数据库.................................292
14.5.1 Pregel..........................292
14.5.2 Giraph...............................299
14.5.3 GraphChi ............................301
14.5.4 PowerGraph.......................307
参考文献.......................................311
第15 章 机器学习:范型与架构.........................................313
15.1 分布式机器学习...........................................314
15.1.1 机器学习简介.............................................314
15.1.2 数据并行VS.模型并行.....................................316
15.2 分布式机器学习范型.....................317
15.2.1 三种范型...................................318
15.2.2 MapReduce 迭代计算模型........................319
15.2.3 BSP 计算模型...................................321
15.2.4 SSP 模型............................323
15.3 分布式机器学习架构...................................324
15.3.1 MapReduce 系列..................................325
15.3.2 Spark 及MLBase ..........................................327
15.3.3 参数服务器(Parameter Server).............332
参考文献................................................335
第16 章 机器学习:分布式算法...............................337
16.1 计算广告:逻辑回归.......................................338
16.1.1 逻辑回归(Logistic Regression,LR).............................338
16.1.2 并行随机梯度下降(Parallel Stochastic Gradient Descent)............341
16.1.3 批学习并行逻辑回归..................................341
16.2 推荐系统:矩阵分解................................................344
16.2.1 矩阵分解方法.......................................344
16.2.2 ALS-WR 算法............................................346
16.2.3 并行版ALS-WR 算法..............................347
16.3 搜索引擎:机器学习排序................................347
16.3.1 机器学习排序简介.................................348
16.3.2 LambdaMART.................................349
16.3.3 分布式LambdaMART........................................351
16.4 自然语言处理:文档相似性计算.......................................352
16.5 社交挖掘:谱聚类.................................355
16.5.1 社交挖掘实例...............................355
16.5.2 谱聚类....................................356
16.5.3 并行版谱聚类..........................................358
16.6 深度学习:DistBelief .............................................358
16.6.1 深度学习简介........................................359
16.6.2 DistBelief.....................360
参考文献.........................................364
第17 章 增量计算..........................................366
17.1 增量计算模式...........................367
17.1.1 两种计算模式...............................367
17.1.2 Hadoop 平台下增量计算的一般模式.............................368
17.2 Percolator................................370
17.2.1 事务支持..........................................371
17.2.2 “观察/通知”体系结构...........................373
17.3 Kineograph ............................374
17.3.1 整体架构.........................................375
17.3.2 增量计算机制....................................375
17.4 DryadInc ....................................376
参考文献..............................................................377
附录A 硬件体系结构及常用性能指标......................................378
附录B 大数据必读文献....................................380
· · · · · · (收起)
读后感
一、什么是大数据? “大数据”成为社会流行词汇,已经有两三年了,2015年9月国家发布《促进大数据发展行动纲要》,2017年12月,中共中央政治局再次就实施国家大数据战略进行集体学习。那么究竟什么是大数据?数据大到什么程度才算大数据呢? 正本清源,“大数据”词汇最早出现...
从覆盖面上看,这本书还是涉及到很广的知识点。但从编排和讲解角度看,除了很多清单图谱也都是直接抓现成的。当然也不能全怪作者,毕竟讲逻辑的东西如果要画图细说那这本书估计再写个几年也完不成。 现在世面上十分流行这种笔记型的技术书。作者们把自己多年掌...
一、什么是大数据? “大数据”成为社会流行词汇,已经有两三年了,2015年9月国家发布《促进大数据发展行动纲要》,2017年12月,中共中央政治局再次就实施国家大数据战略进行集体学习。那么究竟什么是大数据?数据大到什么程度才算大数据呢? 正本清源,“大数据”词汇最早出现...
从覆盖面上看,这本书还是涉及到很广的知识点。但从编排和讲解角度看,除了很多清单图谱也都是直接抓现成的。当然也不能全怪作者,毕竟讲逻辑的东西如果要画图细说那这本书估计再写个几年也完不成。 现在世面上十分流行这种笔记型的技术书。作者们把自己多年掌...
因为做这方面的工作,所以之前买过几本大数据方面的书,有《大数据时代》这种概念普及书,也有几本技术书,比较下来技术书还是推荐这本,内容比较全,大部分章节也比较深入,个别章节写得有些简略,感觉没展开,可能跟篇幅有关系,要是都展开讲估计得再多好几百页了,好在关键...
用户评价
我最近入手了一本让我颇感惊喜的《大数据日知录》,这本书的风格非常独特,它不是那种死板的技术教科书,而是更像一本深入浅出的思想启蒙读物。我一直认为大数据是一个非常热门但又相对抽象的概念,很难找到一个既权威又易于理解的切入点。这本书恰好填补了我的这个需求。它并没有直接深入到复杂的算法和模型,而是从大数据产生的历史背景、核心价值、以及它对社会各方面带来的深远影响入手,为我构建了一个完整而清晰的认知框架。书中对“大数据”的定义和理解,非常接地气,让我在阅读过程中,能够不断地与自己的生活经验产生连接。例如,它在探讨如何从海量数据中提取价值时,用到了很多生动的比喻,比如将大数据比作一座未被开发的金矿,将数据科学家比作寻宝的探险家,这些都让原本枯燥的概念变得鲜活起来。我尤其欣赏书中关于大数据在创新应用方面的阐述,它让我看到了大数据不仅仅是一种技术,更是一种驱动社会进步和产业变革的强大引擎。读完这本书,我感觉自己对大数据的理解不再是停留在表面,而是有了一种更深刻的洞察力,也对未来大数据的发展趋势有了更清晰的预判。
哇,这本《大数据日知录》简直太对我胃口了!我一直以来都对那些表面看起来很复杂的技术领域充满好奇,但又常常因为缺乏入门的指引而望而却步。这本书,真的就像是为我量身定做的!它的文字风格非常有力量,但又不失细腻。作者就像一个经验丰富的向导,带领我在浩瀚的大数据世界里探险。我特别喜欢它在介绍一些核心概念的时候,会引用很多真实世界的案例,而且分析得非常到位。比如,书中讲到如何通过用户行为数据来优化产品推荐,让我这个平时就喜欢网购的人,一下子就明白了背后隐藏的“魔力”。还有它讲到在智慧城市建设中,大数据是如何发挥作用的,那种宏大的视角,真的让我感觉科技改变生活的力量是如此真实而强大。更让我惊喜的是,这本书并没有一味地灌输理论知识,而是更注重培养读者的“数据思维”。它教会我如何从数据的角度去审视问题,如何用数据来支持我的观点,甚至是如何去发现那些隐藏在数据背后的规律。这种能力,我觉得在任何领域都至关重要。我读的时候,经常会停下来,思考书中的内容,并且还会和身边的朋友讨论。这本书带来的启发,远远超出了我对“大数据”这个词本身的认知,它让我看到了一种新的思考和解决问题的方式。
不得不说,这本《大数据日知录》的书,真的让我眼前一亮!我平时就喜欢阅读一些能够拓展视野、提升思维的书籍,而这本书,无疑就是其中翘楚。它的语言风格非常具有启发性,像是在点醒我,让我看到了一个我从未真正领略过的世界。我之前总觉得,大数据就是一堆冷冰冰的数字,离我的生活很遥远。但这本书,通过它精妙的叙述,让我意识到大数据其实无处不在,它影响着我们日常的方方面面,从我们刷手机的每一个点赞,到我们购物的每一次选择,都可能被大数据所记录和分析。书中关于“数据素养”的阐述,更是让我印象深刻。它不仅仅是告诉你怎么用数据,更是教你如何去理解数据,如何去辨别信息的真伪,以及如何运用数据来做出更明智的决策。我特别喜欢它在讨论大数据对社会变革的影响时,那种既肯定其积极作用,又不回避其潜在风险的态度,非常客观和理性。读完之后,我感觉自己的思维方式发生了一些潜移默化的改变,开始更加关注数据背后的故事,也更加愿意去学习如何更好地利用数据来赋能自己。这本书,不仅仅是一本关于大数据的书,更是一本关于如何在这个信息时代更好地生存和发展的书。
说实话,我收到《大数据日知录》这本书的时候,心里其实是有点忐忑的,毕竟“大数据”这三个字听起来就让人觉得是IT界高精尖的玩意儿,我这种文科出身的人,估计是很难啃得动。但抱着试一试的心态翻开,惊喜就这么悄悄地来了。这本书的语言风格非常朴实,没有那些华丽的辞藻,也没有故弄玄虚的架势,读起来就像是和一位经验丰富的朋友在聊天,他娓娓道来,一点一点地把我引进去。我之前总觉得,大数据就是收集一堆数据,然后用电脑分析分析,结果可能就是个数字图表。但《大数据日知录》彻底颠覆了我的认知。它让我明白,大数据不仅仅是数据本身,更重要的是如何去理解数据背后的含义,如何从海量的数据中挖掘出有价值的信息,如何利用这些信息来解决实际问题。书中讲到的一些思维方式,比如如何构建数据驱动的决策流程,如何运用数据分析来优化运营,都让我大开眼界。特别是其中关于数据伦理和隐私保护的部分,讲得非常透彻,让我意识到在享受大数据带来的便利的同时,也需要关注其潜在的风险。我感觉这本书不是那种纯粹的技术指南,更多的是在传递一种关于如何运用大数据思维去思考问题、解决问题的方法论。读完一部分,我脑子里会不断地回味,并且开始尝试将书中的一些理念应用到我日常的工作和生活中,虽然只是很小的方面,但确实感受到了不同。
天呐,我最近终于入手了《大数据日知录》这本书,我等了好久了!一直都对大数据这个概念感到好奇,但又觉得它非常高深莫测,不知道从何下手。这本书的封面设计就很有吸引力,有一种厚重又现代的感觉,让人一看就想翻开。我最开始是被它“日知录”这个名字吸引的,感觉像是每天都能学到一点新知识,循序渐进,不会一下子被海量的信息压垮。拿到书后,迫不及待地翻开了第一页,文字很流畅,没有那些枯燥的技术术语,看得我非常轻松。我之前看过一些讲大数据的文章,总是充斥着各种算法、模型,看得我云里雾里,而这本书则从更宏观的视角切入,先是讲了大数据产生的背景、它的意义,让我对这个领域有了初步的认知,就像打通了任督二脉一样,一下子就明白了为什么大数据这么重要。而且,书中还穿插了一些实际应用的案例,比如在商业、医疗、科研等方面的应用,读起来非常生动有趣,让我感受到大数据离我们的生活并不遥远,甚至可以说它已经渗透到了我们生活的方方面面。我尤其喜欢作者在讲述一些概念时,会用一些非常形象的比喻,就像在给我讲故事一样,让原本抽象的知识变得具体易懂。这本书的结构也很清晰,章节划分得很好,每一章都在围绕着一个主题展开,读起来不会感到迷失。我非常期待继续深入阅读,希望能从这本书中获得更深层次的理解,甚至能激发我进一步学习大数据技术的兴趣。
书名和内容其实不太一致,其实不是在讲大数据,整体来说,作为分布式系统和分布式机器学习的一个survey还是很好的,能够结合现实的开源软件来落地讲解,这点不错。不过毛病是老爱搞太多的文绉绉的数学推导,没做到用容易理解的语言来重新描述,而且所讲内容不够深入。
没读完,更像是一本笔记。。。
数据结构部分讲得很细很全面,作者在分布式计算上有很多实践经验,后面图形算法和机器学习上比较概略。书在整体上偏重技术,如果后面能加二三个应用案例或许会更好。
在知识广度方面无出其右了。这么多概念自己整理要费极大功夫。有人帮你系统梳理如此庞大的知识体系是件很爽的事情,堪比大保健。
内容很丰富,不过最后几章的算法还是看不懂