Nathan Marz的书还是要看一看的,毕竟那个墙外的网站经受住了美国大选结果出炉的考验
为什么要讨论大数据设计
- 电子数据已成为每天生活的一部分,不论是网络上,还是科学实验的记录上
- 数据的增长影响到业务的开展,引发了传统关系型数据库的性能瓶颈,传统的设计管理方式很难扩展到大数据上
- 为解决大数据带来的问题,不同的软件开发领域以NoSQL的名义引入了很多新的技术,这些新技术可以在某种程度上支撑数据的扩展,但是没有一个一致的设计方式,即需要根据具体的业务和技术架构灵活处理
- 这些技术的领导者包括:Google,Amazon和开源社区。技术包括:分布式文件系统,分布式计算框架,分布式锁框架,Key-Value数据库,分布式队列等
- 所以大数据包含两个层面:复杂性和伸缩性。这和传统的数据库设计有很大不同,举例:一个最简单的关系数据库需求都可能很难在大数据上实现。因此大数据的设计需要作为一个独立的范式进行讨论
传统数据库设计的变迁和问题
- 一个统计用户访问数量的程序,有字段user_id, page_views, url.
压力大后无法向数据库写入数据
- 解决办法:引入队列,当队列满时批量写入数据库而不是每次有点击就写入数据库
- 数据继续增长,加入更多队列,缓存更多数据,减小数据库负载。数据继续增长,数据库服务器成为瓶颈
- 这是要对数据库进行水平分区/数据分片(Sharding),这时要对旧的数据进行迁移和重新切割,并且需要找到合适的切割键,而且当负载进一步加大时,需要重新进行更加细致的切割。这时迁移脚本需要多线程运行,以达到最大效率。同时应用程序也要进行相应的调整。
- 最终因为分片过多,当某台硬件设备故障时,这时需要中间件队列缓冲数据,同时数据库服务器也要有主备机制
- 另一方面,当程序引入bug时,海量的数据导致难以做到故障恢复。总之,大量时间将花在后台程序的设计和维护上
大数据的优势
- 自动具备切片和复制功能,对于切片的访问是透明的。伸缩性体现在只需要增加机器就可以,水平切割数据会自动重新平衡到新的负载
- 另一个特点是维护不变数据,这个是大数据的一个优势。因为存储是廉价的,我们不需要对数据进行聚合,只保存原始数据。这样坏的数据不会影响到历史上好的数据。传统数据库的快速数据增长是噩梦,但是对于大数据不是这样。
大数据概念和特性
- 过去几年在NoSQL的名义下涌现出一些新的技术,这些技术充满了技术上的取舍。比如MapReduce在获得分布式大数据分析的好处时,是高延时的。NoSQL数据库提供了伸缩性,但是增加了复杂性。这些工具需要小心地叠加使用才能达到最理想的效果,这种叠加被称为Lambda架构
- Terms:非衍生的数据在大数据范式中称为数据,管理这些数据的程序,称为数据系统,采用的是分析方法,针对的是数据集 query = function(all data)
- 大数据系统的目标是应用分析方法对数据进行分析
- 大数据系统应该具备的特性:健壮/容错;低延迟读写;伸缩性;通用性;可扩展性;支持数据查询和挖掘;易于维护;可调试;
Lambda架构
- 层次划分:批处理层;服务层;加速层
- 理想的数据分析是实时查询,但在大数据面前,只能通过预计算查询方法(类似Oracle物化视图)。即对大数据从不同维度的预分析,由批处理层负责。这种方式具备一定延迟。
- 批处理层:批处理层做两件事:保存一份完整的不变数据集并运行预计算查询方法
- Hadoop就是批处理层的典型,定时的不断刷新计算查询方法,批处理层以单线程的代码方式运行多线程的程序完成
- 服务层:批处理层的产出是可以被查询的视图,这些视图保存在服务层里,因为批处理层的产出常常是普通的文本文件,服务层以方便查询的方式将这些聚合结果加载,并根据批处理层的更新频率定期重新加载。
- 服务层支持批量更新和随机读,但是不需要支持随机写
- 除去低延迟性,其他特性都被批处理层和服务层满足,比如满足了健壮性:批处理层失败后自动重新构建,服务层用内置的复制机制保证无故障运行,当程序出现bug时,更改算法,重新运行计算即可。又如满足了伸缩性:两者都可以任意增添机器。
- 加速层:加速层解决了高延迟的问题。加速层是对数据集分析的另一种取舍,加速层在新数据到来时更新视图,加速层并不重新构建视图,而是在现有视图集合中进行增量更新而不是重计算更新。另一个特点是加速层只关注最近的数据,而非全部数据。
- 加速层因为要进行增量更新,需要数据库支持随机读写。
- 当服务层收到批处理层的新数据后,加速层的数据就不再需要了,因此加速层只是一个临时的结果层,由临时结果管理复杂性,这很好地控制了复杂性
- 所有新数据被送往两个地方:批处理层的数据集和加速层的增量视图 ,在新的批处理视图重新构建之前,需要对实时视图和批处理视图的结果进行合并返回
分享到:
相关推荐
### Lucene-in-Action-2nd-Edition---Manning 关键知识点解析 #### 一、书籍概述 《Lucene in Action 第二版》是一本深入介绍 Apache Lucene 的书籍,由 Manning Publications 出版。本书面向希望利用 Lucene 构建...
授课老师是大名鼎鼎的Christopher Manning教授,他是两本书的第一作者:一本是《统计自然语言处理基础》(Foundations of Statistical Natural Language Processing),另一本是《信息检索导论》(Introduction to ...
授课老师是大名鼎鼎的Christopher Manning教授,他是两本书的第一作者:一本是《统计自然语言处理基础》(Foundations of Statistical Natural Language Processing),另一本是《信息检索导论》(Introduction to ...
《微服务架构设计模式》是由Chris Richardson所著的一本关于微服务架构的书籍,它深入探讨了在Java环境中应用微服务架构时遇到的各种设计模式,以及如何实现它们。本书不仅涵盖了微服务架构的基本理念,还提供了丰富...
NAACL 2013会议上,斯坦福大学的Richard Socher与Christopher Manning共同呈现的报告中,深入探讨了深度学习在自然语言处理中的应用和重要性,报告名为“NAACL2013-Socher-Manning-DeepLearning”,这个报告被视为...
Rainsberger撰写,并得到了Scott Stirling的贡献,由Manning出版社于2005年出版。本书专注于JUnit框架的深入探讨,为Java开发者提供了丰富的测试策略和技术。下面将根据书籍的标题、描述以及部分内容,提炼出关键的...
Manning LiveProject-使用JenkinsX的CI / CD 为了开始进行这个项目,我们需要: 码头工人 码头工人组成 您需要通过执行以下操作将此存储库克隆到您的计算机上: git clone git@github....
雅思听力典型陷阱-manning.ppt
Testing Vue.js Applications-Manning(2019).epub
根据提供的文件信息,我们可以从《Java - Manning - WebWork in Action (2006)》这本书中提炼出多个关于WebWork框架的知识点。下面将详细展开这些知识点。 ### WebWork框架简介 #### 1. WebWork框架概述 - **定义*...
在 `node-markdown-to-manning-master` 压缩包文件中,可能包含以下内容: - `package.json`:定义了项目的依赖和配置信息,包括 Node.js 模块的版本和脚本命令。 - `index.js` 或其他 `.js` 文件:包含主要的转换...
- **出版社**:Manning Publications Co. - **作者**: - David Gallardo - Ed Burnette - Robert McGovern - Steven Haines(对附录有所贡献) - **出版日期**:2003年 - **ISBN**:1-930110-96-0 - **页数**:...
《Deep Learning with Python-Manning(2017)》这本书是关于深度学习和Python编程语言的一本专业书籍。作者François Chollet是著名的深度学习库Keras的创建者,本书由Manning Publications出版。深度学习是机器学习...
Spring Microservices in Action-Manning(2017)【E文】 SpringCloud必知必会的一本书
After working at Red Hat for a few years, in late 2014 I was assigned to a newly- established team called Cloud Enablement. Our task was to bring the company’s range of middleware products to the ...
本书《Windows Forms编程与C#》由Erik Brown撰写,由Manning出版社出版。该书详细介绍了如何使用C#语言进行Windows Forms应用程序开发,并覆盖了从基础到高级的各种主题。Windows Forms是一种用于构建桌面应用程序的...