百度、新浪、CSDN三位大牛力荐学习的大数据日知录:架构与算法
全面梳理大数据相关技术,从数据、算法、策略、应用和系统架构等多个维度进行剖析,既包罗万象,又深入浅出。
大数据是当前最为流行的热点概念之一,其已由技术名词衍生到对很多行业产生颠覆性影响的社会现象,作为最明确的技术发展趋势之一,基于大数据的各种新型产品必将会对每个人的日常生活产生日益重要的影响。
本篇从架构与算法角度全面梳理了大数据存储与处理的相关技术。大数据技术具有涉及的知识点异常众多且正处于快速演进发展过程中等特点,其技术点包括底层的硬件体系结构、相关的基础理论、大规模数据存储系统、分布式架构设计、各种不同应用场景下的差异化系统设计思路、机器学习与数据挖掘并行算法以及层出不穷的新架构、新系统等。
本篇对众多纷繁芜杂的相关技术文献和系统进行了择优汰劣并系统性地对相关知识分门别类地进行整理和介绍,将大数据相关技术分为大数据基础理论、大数据系统体系结构、大数据存储,以及包含批处理、流式计算、交互式数据分析、图数据库、并行机器学习的架构与算法以及增量计算等技术分支在内的大数据处理等几个大的方向。
通过这种体系化的知识梳理与讲解,相信对于读者整体和系统地了解、吸收和掌握相关的优秀技术有极大的帮助与促进作用。
本篇分为四部分,共17章的内容,由于细节内容太多了,所以小编把部分知识点截图出来粗略的介绍,每个小节里面都有更加细化的内容。
第1章,数据分片与路由
数据复制虽然带来上文所提及的多种好处,但也带来了相应的问题,由于每份数据存在多个副本,在并发对数据进行更新时如何保证数据的一致性就成为关键问题。对于数据复制与一致性的诸多问题及解决方案会在本书第2章进行讲解,本章集中讲解数据分片与路由的相关技术。常见的数据分片方法包括哈希分片与范围分片,后文先从各种实际系统中抽象出一个数据分片与路由的通用模型,然后分述这两种分片方式的具体实现机制。
第2章,数据复制与一致性
本章主要介绍数据复制及由此带来的数据一致性相关问题及解决方案。 首先介绍CAP、ACID、BASE等基础理论模型,之后会对数据一致性模型进行分类并简述各自含义,接下来会介绍几种典型的副本数据更新策略,最后会介绍包含Paxos/Raft等在内的一 系列常用的数据一致性协议。
第3章,大数据常用的算法与数据结构
对于大数据或者大规模分布式系统来说,如何能够高效快速地进行海量数据处理非常关键,而采用合适的数据结构与算法对于达到此目的至关重要。本章从各种大规模分布式系统中归纳出常用的数据结构与算法,并对其基本原理和典型应用场景进行讲述。
第4章,集群资源管理与调度
对于大型互联网公司来说,为了完成各种对外服务以及对内挖掘等各项任务,需要的硬件资源是以万计数的,具有较高成本,所以如何充分挖掘硬件资源潜力以及增加其利用率就成为节省成本的至关重要问题。
第5章,分布式协调系统
大规模分布式系统中需要解决各种类型的协调需求,以动态配置管理为例,当系统中新加入一个进程或者物理机,如何能够自动获得配置参数?当配置项被某个进程或者物理机改变时,如何实时通知被影响的其他进程或机器?其他类型的协调工作还有很多。
第6章,分布式通信
分布式通信研究分布式系统中不同构件(子系统或者进程)之间的信息交换机制。这里我们并非讲解传统“计算机网络”课程中常讲的七层网络协议,而是讲解在应用层之上的大数据系统中不同构件之间的常见信息交换机制。我们从各种大数据系统中抽象归纳出3种常见的通信机制:序列化与远程过程调用、消息队列和多播通信。其中,序列化与远程过程调用的重点是网络中位于不同机器上进程之间的交互;消息队列的重点是子系统之间的消息可靠传递;多播通信是以Gossip协议为主,讲解P2P网络环境下如何实现信息的高效多播传输。这三者都是黏合子系统的有效工具,同时,它们对于减少大数据系统中构件之间的耦合,增强各自的独立演进有很大的帮助作用。在大数据系统设计中使用合适的通信机制有助于增强整个系统的灵活性和可扩展性。
第7章,数据通道
对于大型分布式系统来说,每个组成部分都可能产生数据或者参与数据的转发,所以分析数据在其中的流动路径及其形成的数据通道是非常有意义的。本章即讨论几种形成一-定传播模式的数据通道,其中既包含如何收集汇总分散在各处的原始数据(由分散到集中),也包含如何将数据源的数据变化及时通知对此数据有消费需求的各个子系统(由集中到分散) ;另外,还会简单介绍不同类型存储系统之间的数据迁移。
第8章,分布式文件系统
本章首先介绍Google提出的GFS系统基本原理,之后介绍其开源实现HDFS并重点介绍其HA机制和NameNode联盟。接下来以Facebook的HayStack 为例讲解如何设计一一个建立在文件系统基础上的典型“对象存储系统”,之后会以RCFile、Parquet 以及Dremel 中的列式存储等为例子来介绍文件中的行式、列式及混合式存储布局,最后-节讲解以Reed-Solomon 和LRC为例的纠删码算法原理。
第9章,内存KV数据库
本章以RAMCloud、Redis 和Membase这3个典型的内存KV数据库作为例子来讲解,从高可用性角度,RAMCloud 采取了第2种策略,Redis 和Membase采取了第1种策略。应该讲这两种策略都不能算是理想的技术方案,但如何设计出既能够降低内存使用成本同时又保证系统高可用性的方案目前看还是个开放问题,值得学术界和工业界进一步 探索。
第10章,列式数据库
本章主要以Google的BigTable、MegaStore、Spanner 为主介绍列式数据库的特点、设计思路及其技术发展脉络,Yahoo的PNUTS也是很有特色的列式数据库,所以本章也兼述了其基本设计思路。
第11章,大规模批处理系统
本章首先介绍MapReduce的计算模型及整体架构,之后对常见的MapReduce应用的计算模式进行了归纳整理,总结了最常见的计算模式并分析其各自特点。最后一部分主要以微软的Dryad系统为例,来介绍DAG的计算机制和整体框架设计。这里需要说明的是: Spark 本质上也是DAG批处理系统,鉴于其最能发挥特长的领域是迭代式机器学习,所以将其放入机器学习相关章节中进行介绍。
第12章,流式计算
流式计算( Stream Processing )是越来越受到重视的一个计算领域。在很多应用场所,对大数据处理的计算时效性要求很高,要求计算能够在非常短的时延( Low Latency )内完成,这样能够更好地发挥流式计算系统的威力,比如,搜索引擎根据用户输入查询匹配相关的广告、搜索风向标和趋势的实时计算、微博和社交网站消息流的实时处理、入侵检测、作弊( Spam)识别与过滤等很多场景都是如此。
第13章,交互式数据分析
支持对大数据进行交互式数据分析的数据仓库最近两年成为日益受关注的领域,从最早期的Pig、Hive,到Dremel、PowerDrill、 Tajo、 Stinger、Drill 、Shark、 Impala 乃至Presto,可谓异彩纷呈,乱花迷眼。
第14章,图数据库:架构和算法
图计算是一类在实际应用中非常常见的计算类别,当数据规模大到一定程度时,如何对其进行高效计算即成为迫切需要解决的问题。最常见的大规模图数据的例子就是互联网网页数据,网页之间通过链接指向形成规模超过500亿节点的巨型网页图。再如,Facebook 社交网络也是规模巨大的图,仅好友关系已经形成超过10 亿节点、千亿边的巨型图,考虑到Facebook正在将所有的实体数据节点都构建成网状结构,其最终形成的巨型网络数据规模可以想见其规模。要处理如此规模的图数据,传统的单机处理方式显然已经无能为力,必须采用由大规模机器集群构成的并行图数据库。
第15章,机器学习:范型与架构
很多机器学习算法都有迭代运算的特点,这主要是在损失函数最小化的训练过程中,需要在巨大的参数空间中通过迭代方式寻找最优解,比如主题模型、回归、矩阵分解、SVM以及深度学习等都是如此,本篇所介绍的内容主要针对此类型的机器学习任务。
第16章,机器学习:分布式算法
随着大数据技术的快速发展,如何从海量数据中挖掘有价值的知识与观点会成为最核心的问题,而机器学习无疑会是解决此类问题最重要的技术手段。第15章从大规模机器学习的计算范型与架构角度进行了分析、归类和讲解,本章的着眼点放在大规模的机器学习算法本身。
本章介绍的机器学习算法集中在智能信息处理领域,具体而言,包括计算广告学、推荐系统、搜索引擎、自然语言处理、社交挖掘以及深度学习这些领域。针对这些领域,选择了其中最常用的机器学习算法,重点讲解解决这些领域典型问题所需机器学习算法的分布式版本。虽然介绍的领域仅限于智能信息处理,但是其涉及的并行算法基本思路放到其他领域也是类似的,从这个角度讲,其具有一定程度的普适性和通用性。
第17章,增量计算
本章主要介绍增量计算相关的技术,首先对现有增量计算方式进行归纳,按照其整体计算思路的不同,将现有增量计算技术划分为“变化传播”与“结果缓存复用”两种模式,并说明这两种模式各自的特点,接下来对基于Hadoop平台开发的增量计算系统面临的主要问题和整体计算框架进行说明,然后分别选择几个满足这两种增量计算模式的典型系统实例来介绍。
因文章篇幅限制,小编在这里就不做过多的介绍了。需要本【大数据日知录:架构与算法】技术文档的小伙伴,就可以转发此文关注小编,私信小编“学习”来得到获取方式吧。
本篇的读者对象包括对NoSQL系统及大数据处理感兴趣的所有技术人员,以及有志于投身到大数据处
理方向从事架构师、算法工程师、数据科学家等相关职业的在校本科生及研究生。