当前位置:首页 » 大数据电子书 » 正文

大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)

1193 人参与  2018年12月31日 21:04  分类 : 大数据电子书  评论

大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)-杨传辉

            在线阅读                   百度网盘下载(89hy)


image.png

书名:大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)

作者:杨传辉

格式:EPUB, HTMLZ, PDF

路径:点击打开

出版:机械工业出版社

排序作者:杨传辉

排序书名:大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书)

日期:08 12月 2018

uuid:2f4d5cac-00de-46ad-a0f7-60607d0fef86

id:489

出版日期:9月 2013

修改日期:08 12月 2018

大小:6.52MB

语言:中文


前言

随着社交网络、移动互联网、电子商务等技术的不断发展,互联网的使用者贡献了越来越多的内容。为了处理这些内容,每个互联网公司在后端都有一套成熟的分布式系统用于数据的存储、计算以及价值提取。Google是全球最大的互联网公司,也是在分布式技术上相对成熟的公司,其公布的Google分布式文件系统GFS、分布式计算系统MapReduce、分布式表格系统Bigtable都成为业界竞相模仿的对象,最近公布的全球数据库Spanner更是能够支持分布在世界各地上百个数据中心的上百万台服务器。Google的核心技术正是后端这些处理海量数据的分布式系统。和Google类似,国外的亚马逊、微软以及国内互联网三巨头阿里巴巴、百度和腾讯的核心技术也是其后端的海量数据处理系统。

本书的内容是介绍互联网公司的大规模分布式存储系统。与传统的高端服务器、高端存储器和高端处理器不同的是,互联网公司的分布式存储系统由数量众多的、低成本和高性价比的普通PC服务器通过网络连接而成。互联网的业务发展很快,而且注重成本,这就使得存储系统不能依靠传统的纵向扩展的方式,即先买小型机,不够时再买中型机,甚至大型机。互联网后端的分布式系统要求支持横向扩展,即通过增加普通PC服务器来提高系统的整体处理能力。普通PC服务器性价比高,故障率也高,需要在软件层面实现自动容错,保证数据的一致性。另外,随着服务器的不断加入,需要能够在软件层面实现自动负载均衡,使得系统的处理能力得到线性扩展。

分布式存储和当今同样备受关注的云存储和大数据又是什么关系呢?分布式存储是基础,云存储和大数据是构建在分布式存储之上的应用。移动终端的计算能力和存储空间有限,而且有在多个设备之间共享资源的强烈的需求,这

就使得网盘、相册等云存储应用很快流行起来。然而,万变不离其宗,云存储的核心还是后端的大规模分布式存储系统。大数据则更近一步,不仅需要存储海量数据,还需要通过合适的计算框架或者工具对这些数据进行分析,抽取其中有价值的部分。如果没有分布式存储,便谈不上对大数据进行分析。仔细分析还会发现,分布式存储技术是互联网后端架构的“九阳神功”,掌握了这项技能,以后理解其他技术的本质会变得非常容易。

分布式存储技术如此重要,市面上也有很多分布式系统相关的书籍。然而,这些书籍往往注重理论不重实践,且所述理论也不太适合互联网公司的大规模存储系统。这是因为,虽然分布式系统研究了很多年,但是大规模分布式存储系统是在近几年才流行起来,而且起源于以Google为首的企业界而非学术界。笔者2007年年底加入百度公司,师从阳振坤老师,从事大规模分布式存储的研究和实践工作,曾经开发过类似GFS、MapReduce和Bigtable的分布式系统,后来转战阿里巴巴继续开发分布式数据库OceanBase,维护分布式技术博客NosqlNotes(http://www.nosqlnotes.net)。笔者在业余时间阅读并理解了绝大部分分布式系统原理和各大互联网公司的系统范型相关论文,深知分布式存储系统的复杂性,也能够体会到广大读者渴望弄清楚分布式存储技术本质和实现细节的迫切心情,因而集中精力编写了这本书,希望对从事分布式存储应用的技术人员有所裨益。

本书的目标是介绍互联网公司的大规模分布式存储系统,共分为四篇:

●基础篇。基础知识包含两个部分:单机存储系统以及分布式系统。其中,单机存储系统的理论基础是数据库技术,包括数据模型、事务与并发控制、故障恢复、存储引擎、数据压缩等;分布式系统涉及数据分布、复制、一致性、容错、可扩展性等分布式技术。另外,分布式存储系统工程师还需要一项基础训练,即性能预估,因此,基础篇也会顺带介绍硬件基础知识以及性能预估方法。

●范型篇。这部分内容将介绍Google、亚马逊、微软、阿里巴巴等各大互联网公司的大规模分布式存储系统,分为四章:分布式文件系统、分布式键值系统、分布式表格系统以及分布式数据库。


●实践篇。这部分内容将以笔者在阿里巴巴开发的分布式数据库OceanBase为例详细介绍分布式数据库内部实现以及实践过程中的经验总结。


●专题篇。云存储和大数据是近年来兴起的两大热门领域,其底层都依赖分布式存储技术,这部分将简单介绍这两方面的基础知识。

本书适合互联网行业或者其他从事分布式系统实践的工程人员,也适合大学高年级本科生和研究生作为分布式系统或者云计算相关课程的参考书籍。阅读本书之前,建议首先理解分布式系统和数据库相关基础理论,接着阅读第一篇。如果对各个互联网公司的系统架构感兴趣,可以选择阅读第二篇的某些章节;如果对阿里巴巴OceanBase的架构设计和实现感兴趣,可以顺序阅读第三篇。最后,如果对云存储或者大数据感兴趣,可以选择阅读第四篇的某个章节。

感谢阳振坤老师多年以来对我在云计算和分布式数据库这两个领域的研究实践工作的指导和鼓励。感谢在百度以及阿里巴巴与我共事多年的兄弟姐妹,我们患难与共,一起实现共同的梦想。感谢机械工业出版社的吴怡编辑、新浪微博的杨卫华先生、百度的侯震宇先生以及支付宝的童家旺先生在本书撰写过程中提出的宝贵意见。

由于分布式存储技术涉及一些公司的商业机密,加上笔者水平有限、时间较紧,所以书中难免存在谬误,很多技术点涉及的细节描述得还不够详尽,恳请读者批评指正。

随着云时代的来临,大数据(Big Data)也吸引了越来越多的关注。2012年7月,阿里巴巴数据公司成立并设立了一个全新的岗位:首席数据官(Chief Data Officer,CDO),由此可见数据在未来的价值。这也意味着与“大数据存储、计算和价值提取”相关的技术岗位将会得更加重要。

为了从大数据中提取有价值的信息,首先需要将大数据存储并沉淀下来,除此之外,还需要使用合适的大数据计算框架和大数据处理算法来理解数据的价值。提到大数据,首先想到的就是MapReduce,很多人甚至将大数据与MapReduce画等号。然而,MapReduce并不是大数据的全部。虽然MapReduce解决了海量数据离线分析问题,但是,随着应用对数据的实时性要求越来越高,流式计算系统和实时分析系统得到越来越广泛的应用。

本章首先介绍大数据的概念以及大数据计算平台,接着介绍MapReduce离线处理系统,最后,介绍流式计算系统和实时分析系统。

以往大数据通常用来形容一个公司创造的大量非结构化和半结构化数据,而现在提及“大数据”,通常是指解决问题的一种方法,即通过收集、整理生活中方方面面的数据,并对其进行分析挖掘,进而从中获得有价值信息,最终衍化出一种新的商业模式。简而言之,从各种各样类型的数据,包括非结构化数据、半结构化数据以及结构化数据中,快速获取有价值信息的能力,就是大数据技术。

虽然大数据目前在国内还处于初级阶段,但是商业价值已经显现出来。首先,手中握有数据的公司站在金矿上,基于数据交易即可产生很好的效益;其次,基于数据挖掘会有很多商业模式诞生。比如侧重数据分析,帮企业做内部数据挖掘;或者侧重优化,帮企业更精准找到用户,降低营销成本。未来,数据可能成为最大的交易商品。但数据量大并不能算是大数据,大数据的特征是数据量大、数据种类多、非标准化数据的价值最大化。因此,大数据的价值是通过数据共享、交叉复用后获取最大的数据价值。

大数据技术应用在互联网营销将产生直接的商业价值。大数据技术告诉广告商什么是正确的时间,谁是正确的用户,什么是应该发表的正确内容等,这正好切合了广告商的需求。另外,社交网络与移动互联网的兴起将大数据带入新的征程,社交网络产生了海量用户以及实时和完整的数据,移动互联网带来了地理位置以及更多个性化信息。互联网营销将在行为分析的基础上向个性化时代过渡,通过大数据技术深入挖掘每个用户,然后将这些分析后的数据推送给需要的品牌商家。

大数据技术还能应用在搜索引擎、推荐系统等用户类产品以改进用户体验。互联网技术归根结底就是云计算和大数据技术,云计算提供海量数据的存储和计算能力,并最大程度地降低分布式处理的成本,大数据技术进一步从海量数据中抽取数据的价值,从而诞生Google搜索引擎、Amazon商品推荐系统这样的杀手级应用,形成一条大数据采集、处理、反馈的数据处理闭环。MapReduce任务执行流程如下:

1)首先从用户提交的程序fork出主控进程,主控进程启动后将切分任务并根据输入文件所在的位置和集群信息选择机器fork出Map或者Reduce进程;用户提交的程序可以根据不同的命令行参数执行不同的行为。

2)主控进程将切分好的任务分配给Map进程和Reduce进程执行,任务切分和任务分配可以并行执行。

3)Map进程执行Map任务:读取相应的输入文件,根据指定的输入格式不断地读取<key,value>对并对每一个<key,value>对执行用户自定义的Map函数。

4)Map进程执行用户定义的Map函数:不断地往本地内存缓冲区输出中间<key,value>对结果,等到缓冲区超过一定大小时写入到本地磁盘中。Map进程根据分割(partition)函数将中间结果组织成R份,便于后续Reduce进程获取。

5)Map任务执行完成时,Map进程通过心跳向主控进程汇报,主控进程进一步将该信息通知Reduce进程。Reduce进程向Map进程请求传输生成的中间结果数据。这个过程称为Shuffle。当Reduce进程获取完所有的Map任务生成的中间结果时,需要进行排序操作。

6)Reduce进程执行Reduce任务:对中间结果的每一个相同的key及value集合,执行用户自定义的Reduce函数。



来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1144

大数据电子书  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!