新書推薦:
《
虚弱的反攻:开禧北伐
》
售價:NT$
429.0
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:NT$
380.0
《
花外集斠箋
》
售價:NT$
704.0
《
有兽焉.8
》
售價:NT$
305.0
《
大学问·明清经济史讲稿
》
售價:NT$
330.0
《
中国国际法年刊(2023)
》
售價:NT$
539.0
《
早点知道会幸福的那些事
》
售價:NT$
295.0
《
迈尔斯普通心理学
》
售價:NT$
760.0
|
內容簡介: |
本书将教你充分利用集群硬件优势的架构,以及专门设计用来捕获和分析网络规模数据的新工具,来创建这些系统。其中描述了一个可扩展的、易于理解大数据系统的方法,可以由小团队构建并运行;并利用一个实际示例,基于大数据系统的理论在实践中实现它们来指导读者。本书共18章。第1章介绍了数据系统的原理,并对Lambda架构进行了概述;第2章到第9章集中阐述了Lambda架构的批处理层;第10章和第11章讲述服务层的内容;第12章到17章讲述速度层的内容;第18章再次巩固Lambda架构的相关知识,并进行查漏补缺。
|
目錄:
|
译者序前言关于本书致谢第1章大数据的新范式 1.1本书是如何组织的 1.2扩展传统数据库 1.2.1用队列扩展 1.2.2通过数据库分片进行扩展 1.2.3开始处理容错问题 1.2.4损坏问题 1.2.5到底是哪里出错了 1.2.6大数据技术是如何起到帮助作用的 1.3 NoSQL不是万能的 1.4基本原理 1.5大数据系统应有的属性 1.5.1鲁棒性和容错性 1.5.2低延迟读取和更新 1.5.3可扩展性 1.5.4通用性 1.5.5延展性 1.5.6即席查询 1.5.7最少维护 1.5.8可调试性 1.6全增量架构的问题 1.6.1操作复杂性 1.6.2实现最终一致性的极端复杂性 1.6.3缺乏容忍人为错误 1.6.4全增量架构解决方案与Lambda架构解决方案 1.7 Lambda架构 1.7.1批处理层 1.7.2服务层 1.7.3批处理层和服务层满足几乎所有属性 1.7.4速度层 1.8技术上的最新趋势 1.8.1CPU并不是越来越快 1.8.2弹性云 1.8.3大数据充满活力的开源生态系统 1.9示例应用:SuperWebAnalytics.com 1.10总结 第一部分批处理层第2章大数据的数据模型 2.1数据的属性 2.1.1数据是原始的 2.1.2数据是不可变的 2.1.3数据是永远真实的 2.2基于事实的数据表示模型 2.2.1事实的示例及属性 2.2.2基于事实的模型的优势2.3图模式 2.3.1图模式的元素 2.3.2可实施模式的必要性 2.4 SuperWebAnalytics.com的完整数据模型 2.5总结 第3章大数据的数据模型:示例 3.1为什么使用序列化框架 3.2ApaChe ThriR 3.2.1节点3.2.2边 3.2.3属性3.2.4把一切组合成数据对象 3.2.5模式演变 3.3序列化框架的局限性 3.4总结 第4章批处理层的数据存储 4.1主数据集的存储需求 4.2为批处理层选择存储方案 4.2.1使用键/值存储主数据集 4.2.2分布式文件系统 4.3分布式文件系统是如何工作的 4.4使用分布式文件系统存储主数据集4.5垂直分区 4.6分布式文件系统的底层性质 4.7在分布式文件系统上存储SuperWebAnalytics.com的主数据集 4.8总结 第5章批处理层的数据存储:示例 5.1使用HDFS 5.1.1小文件问题 5.1.2转向更高层次的抽象 5.2使用Pail在批处理层存储数据 5.2.1Pail基本操作 5.2.2序列化对象到Pail中 5.2.3使用Pail进行批处理操作 5.2.4使用Pail进行垂直分区 5.2.5 Pail文件格式与压缩 5.2.6 Pail优点的总结 5.3存储SuperWebAnalytics.com的主数据集 5.3.1Thrift对象的结构化Pail 5.3.2 SuperWebAnalytics.com的基础Pail 5.3.3用于垂直分区数据集的分片Pail 5.4总结 第二部分服务层
|
內容試閱:
|
当第一次进入大数据的世界时,我仿佛置身于软件开发的美国西部荒原。许多人放弃了关系型数据库,转而选择带有高度受限模型的NoSQL数据库,主要是因为其使用体验良好、熟悉度较高且这种数据库可以扩展到成千上万台机器上。NoSQL数据库的数量巨大,堪称铺天盖地,这些数据库中很多都只有细微的差别。一个名为Hadoop的新项目开始崭露头角,它宣称具备基于海量数据进行数据深度分析的能力。但弄清楚如何使用这些新工具很令人困惑。当时,我正试图处理所在公司面临的扩展性问题。系统架构非常复杂该Web系统包含共享关系型数据库、队列、工作节点、主节点和从节点。数据损坏渗透至数据库,为了处理这些损坏,我们使用了应用程序中的特殊代码,但从节点的操作总是落后于其他节点。我决定探索其他大数据技术,看看是否有比我们的数据架构更好的设计。早期的软件工程职业生涯的经历,深刻影响了我对系统该如何架构的观点。我的一位同事花了几个星期将来自互联网的数据收集到一个共享文件系统。他在等待收集足够的数据,以便能在其上进行数据分析。有一天,在做一些日常维护时,我不小心删除了他的所有数据,导致他的项目延期了好几周。我知道自己犯了一个大错,但作为一个软件工程师新手,我并不知道这会导致什么样的后果。我会不会因为粗心被解雇呢?我发了一封电子邮件向团队诚挚地道歉让我惊喜的是,大家对此都表示非常同情。我永远不会忘记那个时刻一个同事来到我的办公桌旁,拍着我的背说:恭喜你!你现在是一个专业的软件工程师了!他玩笑式的表述道出了软件开发中不言而喻的真理我们不知道如何创造完美的软件。软件可能有bug而且会被部署到生产中。如果应用程序可以写入数据库中,那么bug也可能写入数据库中。当着手重新设计我们的数据架构时,这样的经历深深地影响了我。我知道,新架构不但必须是可扩展的、对机器故障是可容错的,并且要易于推断故障原因但对人为错误也可容错。重构那套系统的经验,促使我走上了一条在数据库和数据管理方面怀疑一切我认为是正确的道路。我想出了一个基于不可变数据和批量计算的架构,令我很惊讶的是,与仅仅基于增量计算的系统相比,新系统要简单得多。一切都变得更容易,包括操作、不断发展的系统以支持新的功能、从人为错误中恢复和性能优化等方面。该方法很通用,似乎可以用于任何数据系统。但有些事情困扰着我。当观察其他行业时,我发现几乎没有人使用类似的技术。相反,在使用基于增量更新数据库的庞大集群架构中,令人生畏的复杂性是为人所接受的。这些架构的许多复杂性已经通过我所开发的方法完全避免或大大缓减了。在接下来的几年中,我扩展了该方法,并使之正式成为我戏称的Lambda架构。在初创公司BackType工作时,我们的5人团队构建了一个社会化媒体分析产品,该产品支持在超过100TB的数据上进行多样化实时分析。我们的小团队还负责拥有数百台机器的集群的管理部署、运营和系统监控。当我们向别人展示自己的产品时,他们对这个团队只有5个人感到非常惊讶。他们经常会问这么几个人做了这么多事情?怎么可能!?我的回答很简单:不是我们在做什么,而是我们没有做什么。通过使用Lambda架构,我们避免了困扰传统架构的复杂性。通过避免这些复杂性,我们大大提高了工作效率。大数据运动只是放大了已经存在了几十年的数据架构的复杂性。主要基于增量更新的大型数据库架构将遭受这些复杂性的折磨,从而导致错误、繁重的操作,并阻碍了生产力。尽管SQL和NoSQL数据库通常被描述成对立或相互对偶的关系,但从最基本的方面来说,它们实际上是一样的。它们都鼓励使用这种相同的架构该架构具有不可避免的复杂性。复杂性是一个邪恶的野兽,无论你承认与否,它都会咬你。为了传播Lambda架构以及它如何避免传统架构的复杂性等知识,我写了本书。它是我开始从事大数据工作时就希望有的。我希望你把这本书作为一个旅程挑战你以为自己已经知道的关于数据系统的知识,并发现从事大数据工作也可以优雅、简单和有趣。Nathan Marz
|
|