如何win7 32位手动安装版PCCAD2015版THBASE

&figure&&img src=&/e7002cb68fdbc588eeb58_b.jpg& data-rawwidth=&400& data-rawheight=&280& class=&content_image& width=&400&&&/figure&精心为你打造的Spring MVC的实战训练,在闯关升级中锻炼出真正的实战能力,赶紧来试一试吧。&br&&br&&a href=&/?target=https%3A///spring-mvc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spring MVC实战入门训练&i class=&icon-external&&&/i&&/a&&br&&br&第1课 &a href=&/?target=https%3A///spring-mvc/lesson/start& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&创建Spring Boot项目&i class=&icon-external&&&/i&&/a&&br&第2课 &a href=&/?target=https%3A///spring-mvc/lesson/router& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&URL路由:@Controller和@RequestMapping&i class=&icon-external&&&/i&&/a&&br&第3课 &a href=&/?target=https%3A///spring-mvc/lesson/path-variable& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&@PathVariable&i class=&icon-external&&&/i&&/a&&br&第4课 &a href=&/?target=https%3A///spring-mvc/lesson/request-param& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&@RequestParam&i class=&icon-external&&&/i&&/a&&br&第5课 &a href=&/?target=https%3A///spring-mvc/lesson/template& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&模板渲染&i class=&icon-external&&&/i&&/a&&br&第6课 &a href=&/?target=https%3A///spring-mvc/lesson/paging& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&分页处理&i class=&icon-external&&&/i&&/a&&br&第7课 &a href=&/?target=https%3A///spring-mvc/lesson/form& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&表单提交&i class=&icon-external&&&/i&&/a&&br&第8课 &a href=&/?target=https%3A///spring-mvc/lesson/validation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&表单验证&i class=&icon-external&&&/i&&/a&&br&第9课 &a href=&/?target=https%3A///spring-mvc/lesson/flash& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flash Attribute&i class=&icon-external&&&/i&&/a&&br&第10课 &a href=&/?target=https%3A///spring-mvc/lesson/interceptor& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&拦截器Interceptor&i class=&icon-external&&&/i&&/a&&br&第11课 &a href=&/?target=https%3A///spring-mvc/lesson/http-method& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&处理PUT和DELETE请求&i class=&icon-external&&&/i&&/a&&br&第12课 &a href=&/?target=https%3A///spring-mvc/lesson/file& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&文件上传&i class=&icon-external&&&/i&&/a&&br&第13课 &a href=&/?target=https%3A///spring-mvc/lesson/exception& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&异常处理&i class=&icon-external&&&/i&&/a&&br&第14课 &a href=&/?target=https%3A///spring-mvc/lesson/rest& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&@ResponseBody与@RequestBody&i class=&icon-external&&&/i&&/a&&br&&br&&p&其他推荐:&/p&&p&&a href=&/?target=https%3A///java-snake& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java贪吃蛇的设计与实现&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&/?target=https%3A///music-163-crawler& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一起来写网易云音乐Java爬虫&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&/?target=https%3A///spring-data-jpa& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spring Data JPA实战入门训练&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///full-stack-java-web-development& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java Web实战训练&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///node& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Node.js全栈开发&i class=&icon-external&&&/i&&/a&&br&&/p&&p&更多精彩内容请访问&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&天码营网站&i class=&icon-external&&&/i&&/a&&/p&&p&欢迎关注天码营微信公众号: TMY-EDU&/p&&figure&&img src=&/958acbb2a210d4aa4a1aa8a_b.png& data-rawwidth=&911& data-rawheight=&354& class=&origin_image zh-lightbox-thumb& width=&911& data-original=&/958acbb2a210d4aa4a1aa8a_r.png&&&/figure&
精心为你打造的Spring MVC的实战训练,在闯关升级中锻炼出真正的实战能力,赶紧来试一试吧。
&figure&&img src=&/v2-bae97c477b0d1dd059b3e4_b.jpg& data-rawwidth=&840& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&840& data-original=&/v2-bae97c477b0d1dd059b3e4_r.jpg&&&/figure&&p&今天在网上闲逛,无意间发现了这一篇好文,原文作者是PayPal高级工程总监Anil Madan,文章对当前大数据领域用到的一些技术、框架等都做了一遍梳理。通过阅读本文,可以对当前大数据领域有一个很好的认识,如果需要深入了解某项技术,可以阅读文章中所给的文章或论文的相关链接,都是不可多得的好资源。&/p&&p&开源(Open Source)用之于大数据技术,其作用有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用。另一方面,开源也给大数据技术构建了一个异常复杂的生态系统。每一天,都有一大堆“新”框架、“新”类库或“新”工具,犹如雨后春笋般涌出,乱花渐欲“迷”人眼。为了掌控住这些“新玩意”,数据分析的达人们不得不“殚精竭虑”地“学而时习之”。&/p&&p&无论你是一个大数据的布道者,还是一个日臻成熟的技术派,亦或你还在大数据这条路上“小河才露尖尖角”,多花点时间,深入理解一下大数据系统的技术体系演进,对你都会有莫大益处。全方位地理解大数据体系结构中的各个组件,并掌握它们之间的微妙差别,可在处理自己身边的大数据案例时,助你张弛有度,“恢恢乎,其于游刃必有余地矣!”&/p&&p&在过去的几年里,我阅读了很多不错的大数据文献,这些文献陪我成长,助我成功,使我成为一个具备良好教育背景的大数据专业人士。在这里,撰写此文的目的,不限于仅仅和大家分享这些很不错的文献,更重要的是,借此机会,想和大家一起,集众人之智慧,破解大数据开源系统之迷宫。&/p&&p&需要提醒的是,下文提及到的 100 篇参考文献(这些文献中大多都是一些开创性的研究论文),将会为你提供结构性的深度剖析,绝非泛泛而谈。我相信,这可从根本上帮助你深度理解大数据体系组件间的细微差别。但如果你打算“走马观花”般地快速过一遍,了解大数据为何物,对不起,这里可能会让你失望。&/p&&p&那么,准备好了吗?让我们走起!&/p&&p&在介绍这 100 篇文献之前,首先让我们看一下大数据处理的关键架构层(如图 1 所示):&/p&&p&&b&关键架构层&/b&&/p&&figure&&img src=&/v2-48dcb1e8e12d259ee596ffa077eb3e02_b.jpg& data-rawwidth=&820& data-rawheight=&649& class=&origin_image zh-lightbox-thumb& width=&820& data-original=&/v2-48dcb1e8e12d259ee596ffa077eb3e02_r.jpg&&&/figure&&p&&br&&/p&&p&图1:大数据处理的关键架构层&/p&&ul&&li&文件系统层:在这一层里,分布式文件系统需具备存储管理、容错处理、高可扩展性、高可靠性和高可用性等特性。&/li&&li&数据存储层:由于目前采集到的数据,十之有七八为非结构化和半结构化数据,数据的表现形式各异,有文本的、图像的、音频的、视频的等,因此常见的数据存储也要对应有多种形式,有基于键值(Key-Value)的,有基于文档(Document),还有基于列(Column)和图表(Graph)的。如果采用单一的数据库引擎,“一刀切式”的满足所有类型的数据存储需求,通常会严重降低数据库管理的性能。因此,我们需要“兵来将挡,水来土掩”式的、多元的(&a href=&/?target=http%3A//bigbe.su/lectures/.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Polyglot&i class=&icon-external&&&/i&&/a&)【1】数据库解决方案(这就好比,如果“兵来了”和“水来了”,都要“将”去挡,遇到“兵”时,“将”可以“酣畅淋漓”,而遇到“水”时,还用“将”去挡,那这个“将”估计就要“舍生取义”了。文献【1】是一本有关 NoSQL 数据处理的图书)&/li&&li&资源管理层:这一层是为了提高资源的高利用率和吞吐量,以到达高效的资源管理与调度目的。&/li&&li&资源协调层: 在本层的系统,需要完成对资源的状态、分布式协调、一致性和资源锁实施管理。&/li&&li&计算框架层:在本层的计算框架非常庞杂,有很多高度专用的框架包含其内,有流式的,交互式的,实时的,批处理和迭代图的(Batch and Iterative Graph,BSP)等。为这些计算框架提供支撑的是运行时引擎,如 &a href=&/?target=http%3A//datasys.cs.iit.edu/events/CCGrid2014/CCGrid-May25-Stoica.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BDAS&i class=&icon-external&&&/i&&/a&【2】(Spark) 和 Flink 等(注:这里的 BDAS 是指“Berkeley Data Analytics Stack”,即伯克利数据分析栈。文献【2】为 Spark 核心作者 Ion Stoica 的讲座幻灯片文档)。&/li&&li&数据分析层:在这一层里,主要包括数据分析(消费)工具和一些数据处理函数库。这些工具和函数库,可提供描述性的、预测性的或统计性的数据分析功能及机器学习模块。&/li&&li&数据集成层:在这一层里,不仅包括管理数据分析工作流中用到的各种适用工具,除此之外,还包括对元数据(Metadata)管理的工具。&/li&&li&操作框架层:这一层提供可扩展的性能监测管理和基准测试框架。&/li&&/ul&&p&&b&架构的演进&/b&&/p&&p&减少数据生产者和消费者之间的处理延迟,一直是现代计算构架不断演进的主要动力。由此,诞生了实时和低延迟处理的计算构架,如 Lambda 和 Kappa 等,这类混合架构取长补短,架起传统的批处理层和交互式层之间连接的桥梁。&/p&&ul&&li&&a href=&/?target=http%3A///post//the-lambda-architecture-principles-for& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lambda&i class=&icon-external&&&/i&&/a&【3】 -该架构是经典的大数据处理范式,是由南森?马兹(Nathan Marz)提出的一个实时大数据处理框架。更多有关 Lamda 的信息,请读者访问 &a href=&/?target=http%3A//lambda-architecture.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lambda 官方网站&i class=&icon-external&&&/i&&/a&。(注:文献【3】是由 James Kinley 在轻博客网站 Tumblr 发表的一篇博文:Lambda 架构:构架实时大数据系统的原则)。&/li&&li&&a href=&/?target=http%3A///2014/07/questioning-the-lambda-architecture.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kappa&i class=&icon-external&&&/i&&/a&【4】-该计算构架可视为 Lambda 的一个强有力替代者,Kappa 将数据处理的上游移至流式层(注:文献【4】是一篇博客文章,作者是 Jay Kreps 是 Linkedln 的一名在线数据架构技术高管。Kreps 认为,虽然 Lambda 构架的理念很有价值,但终究还是一个临时解决方案。他设计了一个替代架构 Kappa,是基于他在 Linkedin 构建 Kafka 和 Samza 的经验设计而成)。&/li&&li&&a href=&/?target=http%3A//www.vldb.org/pvldb/vol7/p1441-boykin.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SummingBird&i class=&icon-external&&&/i&&/a&【5】-这是一个参考模型,用来桥接在线处理模式和传统处理模式。Summingbird 是由 Twitter(推特)公司用 Scala 语言开发的、并开源的大规模数据处理框架,支持开发者以批处理模式(基于 Hadoop)或流处理模式(基于 Storm),或混合模式(即前两种模式的组合)以统一的方式执行代码。(注:文献【5】是 Summingbird 的主要设计者 Oscar Boykin、Sam Ritchie 等人于 2014 年发表于知名期刊 PVLDB 中论文,其中论文的二作 Sam Ritchie 大有来头,他是计算机科学界的传奇人物、C语言和 Unix 的设计者 Dennis Ritchie 的侄子)。&/li&&/ul&&p&在你尚未深入了解下面的各个具体的框架层次之前,建议你认真阅读一下下面的几篇非常有价值的文献,它们帮为你“恶补”一下诸如 NoSQL(非结构化)数据存储、数据仓库大规模计算及分布式系统等相关领域的背景知识:&/p&&ul&&li&&a href=&/?target=http%3A///doi/pdf/10.ED2V01Y201306CAC024& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&计算中心即计算机&i class=&icon-external&&&/i&&/a&【6】(Data center as a computer)-文献【6】是威斯康星大学-麦迪逊分校 Mark D. Hill 教授主编的一个论文集式的图书,在这本图书中,收集了很多有关数据仓库大规模计算的论文(注:将数据中心视为一台计算机,与传统的高性能计算机有很大不同。计算中心的实例将以虚拟机或者容器的形式存在,计算资源的配置对于用户而言是透明的,这样就大幅降低系统部署的复杂度、并提高资源使用的灵活性)。&/li&&li&&a href=&/?target=http%3A//www.cattell.net/datastores/Datastores.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&非结构化(NOSQL)数据存储&i class=&icon-external&&&/i&&/a&【7】- 文献是由 Rick Cattell 撰写的论文,论文讨论了可扩展的结构化数据的、非结构化的(包括基于键值对的、基于文档的和面向列的)数据存储方案(注:NOSQL 是支撑大数据应用的关键所在。事实上,将 NOSQL 翻译为“非结构化”不甚准确,因为 NOSQL 更为常见的解释是:Not Only SQL(不仅仅是结构化),换句话说,NOSQL 并不是站在结构化 SQL 的对立面,而是既可包括结构化数据,也可包括非结构化数据)。&/li&&li&&a href=&/?target=http%3A//www.christof-strauch.de/nosqldbs.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NoSQL 学位论文&i class=&icon-external&&&/i&&/a&【8】-该文献是德国斯图加特传媒大学 Christof Strauch 撰写的学位论文,该论文对分布式系统和第一代非结构化系统提供了非常系统的背景知识介绍。&/li&&li&&a href=&/?target=http%3A//webdocs.cs.ualberta.ca/%7Elengdong/papers/JCST14.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&大规模数据管理&i class=&icon-external&&&/i&&/a&【9】-文献是加拿大阿尔伯塔大学的研究人员撰写的一篇综述,讨论了大数据应用程序的大规模数据管理系统,传统的数据库供应商与新兴的互联网企业,它们对大数据管理需求是不同的。文章的讨论范围涵盖很广,数据模型、系统结构及一致性模型,皆有涉及。&/li&&li&&a href=&/?target=http%3A//grail.csuohio.edu/%7Esschung/cis612/hadoopjoin_sigmod2010.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最终一致性(Eventual Consistency)&i class=&icon-external&&&/i&&/a&【10】:论文讨论了分布式系统中的各种不同的一致性模型。(注:原文给出的链接可能有误,因为根据所提供的链接下载而来的论文是关于“MapReduce 中日志处理的 Join 算法”的综述文章,与“最终一致性”的讨论议题无关。这里推荐 2 篇新的相关论文:(1)综述文章:&a href=&/?target=http%3A///publications/OJDB-v1i1n03_Elbushra.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据库最终一致性:最新的进展&i class=&icon-external&&&/i&&/a&【10】new1;(2)微软研究人员 2013 年发表于 SIGMOD 的文章:&a href=&/?target=http%3A///pubs/192621/sigtt611-bernstein.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&“最终一致性的反思(Rethinking Eventual Consistency)&i class=&icon-external&&&/i&&/a&【10】new2”。)&/li&&li&&a href=&/?target=http%3A//www.cs.berkeley.edu/%7Erxin/db-papers/CAP.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CAP 理论&i class=&icon-external&&&/i&&/a&【11】-文献以“CAP 理论十二年回顾:&规则&已经变了”为题,探讨了 CAP 理论及其演化,是篇非常不错的介绍 CAP 理论的基础性论文(注:论文作者 Eric Brewer 是加州大学伯克利分校的知名计算机科学学者。该文首发于《Computer》杂志,随后又被 InfoQ 和 IEEE 再次发表。CAP 理论断言,任何基于网络的数据共享系统,最多只能满足数据一致性(Consistency,C)、可用性(Availability ,A)、分区(Partition,P)容忍性这三要素中的两个要素。但通过显式处理分区,系统设计师可做到优化数据的一致性和可用性,进而取得三者之间的妥协与平衡)。&/li&&/ul&&p&在过去,在大规模数据处理上,传统的并行数据库管理系统(DBMS)和基于 Map Reduce(映射-规约,以下简称 MR)的批处理范式之间,曾发生激烈辩论,各持己见。并行数据库管理系统的&a href=&/?target=http%3A//database.cs.brown.edu/sigmod09/benchmarks-sigmod09.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&支持者&i class=&icon-external&&&/i&&/a&【12】(注:由耶鲁大学、微软和麻省理工学院的研究人员于 2009 年发表在 SIGMOD 的一篇文章)和另外&a href=&/?target=http%3A//database.cs.brown.edu/papers/stonebraker-cacm2010.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一篇文献&i class=&icon-external&&&/i&&/a&【13】(注:2010 年发表于《美国计算机学会通讯》上的论文:“MapReduce 和并行数据库管理系统,是朋友还是敌人?”),被 &a href=&/?target=http%3A//www.cs.princeton.edu/courses/archive/spr11/cos448/web/docs/week10_reading2.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MR 的拥趸者&i class=&icon-external&&&/i&&/a&【14】(注:发表于美国计算机学会通讯的论文:MapReduce:一个弹性的数据处理工具)狠狠地给批驳了一番。&/p&&p&然而,令人讽刺的是,从那时起,Hadoop 社区开始引入无共享的(Shared-Nothing)的 MPP(大规模并行处理)风格的大数据处理模式,文献“&a href=&/?target=http%3A//www.vldb.org/pvldb/vol7/p1295-floratou.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hadoop 上的 SQL&i class=&icon-external&&&/i&&/a&【15】”,便是例证。要知道,MPP 是并行数据库管理系统(DBMS)的灵魂,这样,Map Reduce 绕了一大圈,又似回到它当初离开的地方。&/p&&p&&b&文件系统层&/b&&/p&&p&由于文件系统层关注的焦点,开始向“低延时处理”方向转移,所以传统基于磁盘存储的文件系统,也开始向基于内存计算的文件系统转变 —— 这样做,会大大降低 I / O 操作和磁盘序列化带来的访问开销。Tachyon 和 Spark &a href=&/?target=https%3A//www.cs.berkeley.edu/%7Ematei/papers/2012/nsdi_spark.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RDD&i class=&icon-external&&&/i&&/a&【16】就是朝这个方向演化的范例(注:这里 RDD 指的是弹性分布式数据集(Resilient Distributed Datasets),它是一种高度受限的共享内存模型,文献【16】由伯克利大学加州分校的 Matei Zaharia 等撰写的,他们提出了一种面向内存集群运算的容错抽象模型)。&/p&&ul&&li&&a href=&/?target=http%3A///media//en/us/archive/gfs-sosp2003.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google 文件系统(GFS)&i class=&icon-external&&&/i&&/a&【17】-该文献是分布式文件系统的奠基之作,著名的 Hadoop 分布式文件系统(HDFS),亦脱胎于 GFS,基本上可视为 GFS 的一个简化实现版(注:文献【17】提出了一个可扩展的分布式文件系统 GFS,可用于大型分布式数据密集型应用。文献认为,组件故障是常态而不是异常。其所提出的 GFS,着眼在几个重要的目标,比如性能、可伸缩性、可靠性和可用性。GFS 的新颖之处,并不在于它采用了多么令人惊艳的技术,而在于它能利用所提出的方案,采用廉价的商用机器,来构建高效的分布式文件系统。有用的创新,才是真的创新,GFS 做到了!)。&/li&&li&&a href=&/?target=http%3A//zoo.cs.yale.edu/classes/cs422/2014fa/readings/papers/shvachko10hdfs.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hadoop 文件系统&i class=&icon-external&&&/i&&/a&【18】-该文献由雅虎公司的计算机科学家 Konstantin Shvachko 等人联合撰写的,论文给出了 HDFS 的进化历史背景及其架构的设计内涵,是了解 Hadoop 技术的经典之作。&/li&&li&&a href=&/?target=http%3A///papers/weil-ceph-osdi06.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ceph 文件系统&i class=&icon-external&&&/i&&/a&【19】-Ceph 是 HDFS 有力的&a href=&/?target=https%3A//www.usenix.org/legacy/publications/login/2010-08/openpdfs/maltzahn.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&替代者&i class=&icon-external&&&/i&&/a&【20】(注:Ceph 文件系统是加州大学圣克鲁兹分校(USSC)博士生 Sage Weil 博士期间的一项有关存储系统的研究项目。初出茅庐,略有小成。之后,在开源社区的推动下,Ceph 逐渐羽翼渐丰,风云叱咤,功成名就,逐渐发展成为一个 Linux 系统下 PB 级分布式文件系统。文献【19】是 Weil 本人在 2006 年顶级会议 OSDI 发表的有关 Ceph 的开山论文。文献【20】则是 Weil 率领他的一帮小伙伴们再次发文强调,Ceph 是 HDFS &a href=&/?target=https%3A//www.usenix.org/legacy/publications/login/2010-08/openpdfs/maltzahn.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&强有力的替代者&i class=&icon-external&&&/i&&/a&)。&/li&&li&&a href=&/?target=http%3A//www.cs.berkeley.edu/%7Ehaoyuan/papers/2014_socc_tachyon.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tachyon&i class=&icon-external&&&/i&&/a&【21】–是一个高容错的分布式内存文件系统,其设计的核心内涵是,要满足当下“低延迟”的数据处理要求(注:Tachyon 是在内存中处理缓存文件,允许文件以访问内存的速度在集群框架中进行可靠的共享,类似于 Spark。Tachyon 的吞吐量比 HDFS 高出 100 倍。Spark 框架虽然也提供了强大的内存计算能力,但其没有提供内存文件的存储管理能力,而 Tachyon 则弥补了 Spark 的不足之处。文献【21】是伯克利大学加州分校和麻省理工学院的研究者联合撰写的,发表在 2014 年的 SoCC 国际会议上,论文一作 UC Berkeley AMP 实验室博士生李浩源,他亦是 Spark 核心开发人员之一)。&/li&&/ul&&p&文件系统的演化历程,其实也见证了文件格式和压缩技术的发展历程。下面的参考文献,可以让你了解到,“面向行”或“面向列”存储格式各自的优缺点,并且还可让你了然文件存储技术发展的新趋势——嵌套式的面向列的存储格式,这种存储格式可极大提高大数据的处理效率。&/p&&p&当前,在文件系统阶段,数据管理的最大挑战之一就是,如何处理大数据中的数据冗余。纠删码(Erasure code)是很有创意的冗余保护机制,它可以减少三倍的冗余副本,还不会影响数据的可恢复性与可用性。&/p&&ul&&li&&a href=&/?target=http%3A//db.csail.mit.edu/projects/cstore/abadi-sigmod08.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&面向列存储 vs. 面向列存储&i class=&icon-external&&&/i&&/a&【22】—该文献是是 2008 年发表于 SIGMOD 的一篇论文,该文对数据的布局、压缩及物化(materialization)策略都做了很不错的综述。&/li&&li&&a href=&/?target=http%3A//web.cse.ohio-state.edu/hpcs/WWW/HTML/publications/papers/TR-11-4.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RCFile&i class=&icon-external&&&/i&&/a&【23】-这是由 Facebook 数据基础设施小组和俄亥俄州立大学的华人学者共同提出的文件存储格式,他们走了一个“中庸之道”,充分吸取面向列和面向行存储模式的优点,扬长避短,提出了一种混合的数据存储结构 PAX(注:目前这种以行/列混合存储技术已成功应用于 Facebook 等国内外大型互联网企业的生产性运行体系)。&/li&&li&&a href=&/?target=https%3A///Parquet/parquet-mr/wiki/The-striping-and-assembly-algorithms-from-the-Dremel-paper& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Parquet&i class=&icon-external&&&/i&&/a&【24】- 这是一种面向行的存储格式,其设计理念源于谷歌 Dremel 论文(注:Parquet 主要用于 Hadoop 的生态系统中。文献【24】是 Julien Dem 在 Github 发表的一篇博客文章)。&/li&&li&&a href=&/?target=http%3A//web.cse.ohio-state.edu/hpcs/WWW/HTML/publications/papers/TR-14-2.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ORCFile&i class=&icon-external&&&/i&&/a&【25】–这是一种被 Hive(一种基于 Hadoop 的数据仓库工具)采用的、面向列存储的改进版存储格式(注:文献【25】是 2014 年发表于顶会 SIGMOD 的一篇学术论文)。&/li&&li&&a href=&/?target=http%3A//www.ijritcc.org/IJRITCC%2520Vol_2%2520Issue_3/A%2520Survey%2520on%2520Compression%2520Algorithms%in%2520Hadoop.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&压缩技术&i class=&icon-external&&&/i&&/a&【26】-这是是一篇阐述在 Hadoop 生态系统下的常见压缩算法的综述性文章,文章对常见的压缩算法和其适用场景以及它们的优缺点,做了非常不错的归纳总结。&/li&&li&&a href=&/?target=http%3A//web.eecs.utk.edu/%7Eplank/plank/papers/Login-2013.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&纠删码技术(Erasure code)&i class=&icon-external&&&/i&&/a&【27】-这是一篇是田纳西大学 EECS 系教授 James Plank 撰写的、有关存储系统纠删码技术的入门级的文献。有关纠删码改进技术的阐述,读者可参阅来自南加州大学和 Facebook 的 7 名作者共同完成的论文《&a href=&/?target=http%3A//anrg.usc.edu/%7Emaheswaran/Xorbas.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&XORing Elephants: 面向大数据的新型纠删码技术&i class=&icon-external&&&/i&&/a&【28】》(注:文献【28】的作者开发了纠删码家族的新成员——基于 XOR 的本地副本存储 LRC,该技术是面向 Hadoop 生态系统的,可显著减少修复数据时的I/O操作和存储开销)。&/li&&/ul&&p&&b&数据存储层&/b&&/p&&p&宽泛地讲,据对一致性(consistency)要求的强弱不同,分布式数据存储策略,可分为 ACID 和 BASE 两大阵营。ACID 是指数据库事务具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。ACID 中的一致性要求比较强,事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。而 BASE 对一致性要求较弱,它的三个特征分别是:基本可用(Basically Available), 软状态/柔性事务(Soft-state,即状态可以有一段时间的不同步), 最终一致性(Eventual consistency)。BASE 还进一步细分基于键值的,基于文档的和基于列和图形的 – 细分的依据取决于底层架构和所支持的数据结构(注:BASE 完全不同于 ACID 模型,它以牺牲强一致性,获得基本可用性和柔性可靠性,并要求达到最终一致性)。&/p&&p&在数据存储层,还有很多类似的系统和某些系统的变种,这里,我仅仅列出较为出名的几个。如漏掉某些重要系统,还请谅解。&/p&&p&&b&BASE&/b&&/p&&p&&b&键值存储(Key Value Stores)&/b&&/p&&p&&a href=&/?target=http%3A//www.cs.ucsb.edu/%7Eagrawal/fall2009/dynamo.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dynamo&i class=&icon-external&&&/i&&/a&【29】– 这是由亚马逊工程师们设计的基于键值的高可用的分布式存储系统(注:Dynamo 放弃了数据建模的能力,所有的数据对象采用最简单的 Key-value 模型存储,可简单地将 Dynamo 理解为一个巨大的 Map。Dynamo 是牺牲了部分一致性,来换取整个系统的高可用性)。&/p&&p&&a href=&/?target=https%3A//www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cassandra&i class=&icon-external&&&/i&&/a&【30】 – 这是由 Facebook 工程师设计的一个离散的分布式结构化存储系统,受亚马逊的 Dynamo 启发,Cassandra 采用的是面向多维的键值或面向列的数据存储格式(注:Cassandra 可用来管理分布在大量廉价服务器上的巨量结构化数据,并同时提供没有单点故障的高可用服务)。&/p&&p&&a href=&/?target=http%3A//static.usenix.org/events/fast/tech/full_papers/Sumbaly.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Voldemort&i class=&icon-external&&&/i&&/a&【31】 –这又是一个受亚马逊的 Dynamo 启发的分布式存储作品,由全球最大的职业社交网站 LinkedIn 的工程师们开发而成(注:Voldemort,这个在《哈利·波特》中常被译作“伏地魔”的开源数据库,支撑起了 LinkedIn 的多种数据分析平台)。&/p&&p&&b&面向列的存储(Column Oriented Stores)&/b&&/p&&p&&a href=&/?target=http%3A///media//en/us/archive/bigtable-osdi06.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BigTable&i class=&icon-external&&&/i&&/a&【32】 –这是一篇非常经典的学术论文,阐述了面向列的分布式的数据存储方案,由谷歌荣誉出品。(注:Bigtable 是一个基于 Google 文件系统的分布式数据存储系统,是为谷歌打拼天下的“三驾马车”之一,另外两驾马车分别是分布式锁服务系统 Chubby 和下文将提到的 MapReduce)。&/p&&p&&a href=&/?target=http%3A//citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.303.752%26rep%3Drep1%26type%3Dpdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HBase&i class=&icon-external&&&/i&&/a&【33】 –目前还没有有关 Hbase 的定义性论文,这里的文献提供了一个有关 HBase 技术的概述性文档(注:Hbase 是一个分布式的、面向列的开源数据库。其设计理念源自谷歌的 BigTable,用 Java 语言编写而成。文献【33】是一个有关 Hbase 的幻灯片文档)。&/p&&p&&a href=&/?target=http%3A///collateral/whitepaper-hypertable-architecture.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hypertable&i class=&icon-external&&&/i&&/a&【34】-文献是一个有关“Hypertable”的技术白皮书,对该数据存储结构做了较为详细的介绍(注:Hypertable 也是一个开源、高性能、可伸缩的数据库,它采用与 Google 的 Bigtable 类似的模型)。&/p&&p&&b&面向文档的存储(Document Oriented Stores)&/b&&/p&&p&&a href=&/?target=https%3A//media.readthedocs.org/pdf/couchdb/latest/couchdb.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CouchDB&i class=&icon-external&&&/i&&/a&【35】– 这是一款面向文档的、开源数据存储管理系统(注:文献【35】是一本 Apache CouchDB 的 400 多页的官方文档)。&/p&&p&&a href=&/?target=http%3A///info-mongodb-com/MongoDB_Architecture_Guide.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MongoDB&i class=&icon-external&&&/i&&/a&【36】 –是目前非常流行的一种非关系型(NoSQL)数据库(注:文献【36】是一个有关 MongoDB 的白皮书,对 MongoDB 结构做了很不错的介绍)。&/p&&p&&b&面向图(Graph)的存储&/b&&/p&&p&&a href=&/?target=http%3A///rs/neotechnology/images/GraphDatabases.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neo4j&i class=&icon-external&&&/i&&/a&【37】 –文献是 Ian Robinson 等撰写的图书《Graph Databases(图数据库)》(注:Neo4j 是一款目前最为流行的高性能 NoSQL 图数据库,它使用图来描述数据模型,把数据保存为图中的节点以及节点之间的关系。这是最流行的图数据库)。&/p&&p&&a href=&/?target=http%3A///docs/titan/0.9.0-M2/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Titan&i class=&icon-external&&&/i&&/a&【38】 –文献是有关 Titan 的在线文档(Titan 是一款 Apache 许可证框架下的分布式的开源图数据库,特别为存储和处理大规模图而做了大量优化)。&/p&&p&&b&ACID&/b&&/p&&p&我注意到,现在很多开源社区正在悄悄发生变化,它们开始“亦步亦趋”地跟随谷歌的脚步。这也难怪,谷歌太牛,跟牛人混,近牛者牛 —— 下面 4 篇文献,有 3 篇来自于谷歌的“神来之笔”,他们解决了全球分布一致的数据存储问题。&/p&&p&&a href=&/?target=http%3A//www.cidrdb.org/cidr2011/Papers/CIDR11_Paper32.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Megastore&i class=&icon-external&&&/i&&/a&【39】 –这是一个构建于 BigTable 之上的、高可用的分布式存储系统,文献为有关 Megastore 的技术白皮书(注:Megastore 在被谷歌使用了数年之后,相关技术信息才在 2001 年公布。CSDN 网站亦有文献【39】的中文解读:&a href=&/?target=http%3A//www.csdn.net/article//291968& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google Megastore 分布式存储技术全揭秘&i class=&icon-external&&&/i&&/a&)。&/p&&p&&a href=&/?target=http%3A///media//en/us/archive/spanner-osdi2012.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spanner&i class=&icon-external&&&/i&&/a&【40】–这是由谷歌研发的、可扩展的、全球分布式的、同步复制数据库,支持 SQL 查询访问。(注:Spanner 的“老爹”是 Big Table,可以说,没有“大表”这个爹,就不可能有这个强有力的“扳手” 儿子。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务)。&/p&&p&&a href=&/?target=http%3A//www.vldb.org/pvldb/vol7/p1259-gupta.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MESA&i class=&icon-external&&&/i&&/a&【41】–亦是由谷歌研发的、跨地域复制(geo-replicated)、高可用的、可容错的、可扩展的近实时数据仓库系统(注:在 2014 年的 VLDB 大会上,谷歌公布了他们的分析型数据仓库系统 MESA,该系统主要用于存储 Google 互联网广告业务相关的关键衡量数据。文献【41】是 VLDB 的会议论文)。&/p&&p&&a href=&/?target=https%3A///cockroachdb/cockroach/blob/master/docs/design.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CockroachDB&i class=&icon-external&&&/i&&/a&【42】–该系统是由 Google 前工程师 Spencer Kimball 领导开发的 Spanner 的开源版本(注:这个项目的绰号是“螳螂(Cockroach)”,其寓意是“活得长久”,因为蟑螂是地球上生命力最强的生物之一,即使被砍下头颅,依然还能存活好几天!文献【42】是代码托管网站 GitHub 上对 Cockroach 的说明性文档)。&/p&&p&&b&资源管理器层(Resource Managers)&/b&&/p&&p&第一代 Hadoop 的生态系统,其资源管理是以整体单一的调度器起家的,其代表作品为 YARN。而当前的调度器则是朝着分层调度的方向演进(Mesos 则是这个方向的代表作),这种分层的调度方式,可以管理不同类型的计算工作负载,从而可获取更高的资源利用率和调度效率。&/p&&p&&a href=&/?target=https%3A//54e57bc8-a-62cb3a1a-s-/site/2013socc/home/program/a5-vavilapalli.pdf%3Fattachauth%3DANoY7co94J9PVjpjD5GD4z-S8e1O7YrLsqHssH7aeFReTJaoOBLbvLhq9HeDNb-PQz2jQvPUeQbDjJa2bctooZz5_zHCKWXAKZrYqAy_mVCLIQqU0Cc-sNQBHOJNsUTyVPfEdpHQ5yoIGVdIzoCnQwsFjbSX2ztS9b0OBNI2SjDCdvLE7Hsi5ktJINChoFa7w0ELgFvir4sEAJaL-G1qgmUglhOjVjHgwXYsqHH7FOPXrTVC-csZelo%253D%26attredirects%3D0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YARN&i class=&icon-external&&&/i&&/a&【43】– 这是新一代的 MapReduce 计算框架,简称 MRv2,它是在第一代 MapReduce 的基础上演变而来的(注:MRv2 的设计初衷是,为了解决第一代 Hadoop 系统扩展性差、不支持多计算框架等问题。对国内用户而言,原文献下载链接可能会产生 404 错误,这里提供一个新文献:由 2011 年剥离自雅虎的 Hadoop 初创公司 Hortonworks 给出的&a href=&/?target=http%3A///wp-content/uploads/2013/12/Apache.Hadoop.YARN_.Sample.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&官方文献&i class=&icon-external&&&/i&&/a&【43】new,阅读该文献也可对 YARN 有较为深入的理解。CSDN 亦有对 YARN 详细解读的文章:&a href=&file:///D:/iwork/CSDN-%E6%96%87%E7%AB%A0/04-big%20data/%E6%9B%B4%E5%BF%AB%E3%80%81%E6%9B%B4%E5%BC%BA%E2%80%94%E2%80%94%E8%A7%A3%E6%9E%90Hadoop%E6%96%B0%E4%B8%80%E4%BB%A3MapReduce%E6%A1%86%E6%9E%B6Yarn&&更快、更强——解析 Hadoop 新一代 MapReduce 框架 Yarn&/a&)。&/p&&p&&a href=&/?target=http%3A//people.csail.mit.edu/matei/papers/2011/nsdi_mesos.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mesos&i class=&icon-external&&&/i&&/a&【44】–这是一个开源的计算框架,可对多集群中的资源做弹性管理(注:Mesos 诞生于 UC Berkeley 的一个研究项目,现为 Apache 旗下的一个开源项目,它是一个全局资源调度器。目前 Twitter、 Apple 等国外大公司正在使用 Mesos 管理集群资源,国内用户有豆瓣等。文献【44】是加州大学伯克利分校的研究人员发表于著名会议 NSDI 上的学术论文)。&/p&&p&这些计算框架和调度器之间是松散耦合的,调度器的主要功能就是基于一定的调度策略和调度配置,完成作业调度,以达到工作负载均衡,使有限的资源有较高的利用率。&/p&&p&&b&调度器(Schedulers)&/b&&/p&&p&作业调度器,通常以插件的方式加载于计算框架之上,常见的作业调度器有 4 种:&/p&&p&&a href=&/?target=https%3A//hadoop.apache.org/docs/stable1/capacity_scheduler.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&计算能力调度器&i class=&icon-external&&&/i&&/a&【45】(Capacity Scheduler)-该文献是一个关于计算能力调度器的指南式文档,介绍了计算能力调度器的不同特性。&/p&&p&&a href=&/?target=http%3A//www.valleytalk.org/wp-content/uploads/2013/03/fair_scheduler_design_doc.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&公平调度器&i class=&icon-external&&&/i&&/a&【46】(FairShare Scheduler) -该文献是 Hadoop 的公平调度器设计文档,介绍了公平调度的各项特征(注:公平调度是一种赋予作业资源的方法,它提供了一个基于任务数的负载均衡机制,其目的是让所有的作业随着时间的推移,都能平均的获取等同的共享资源)。&/p&&p&&a href=&/?target=http%3A//www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-55.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&延迟调度&i class=&icon-external&&&/i&&/a&【47】(Delayed Scheduling) –该文献是加州大学伯克利分校的一份技术报告,报告介绍了公平调度器的延迟调度策略。&/p&&p&&a href=&/?target=http%3A//arxiv.org/ftp/arxiv/papers/80.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&公平与能力调度器&i class=&icon-external&&&/i&&/a&【48】(Fair & Capacity schedulers )–该文献是一篇关于云环境下的 Hadoop 调度器的综述性论文。&/p&&p&&b&协调器(Coordination)&/b&&/p&&p&在分布式数据系统中,协调器主要用于协调服务和进行状态管理。&/p&&p&&a href=&/?target=http%3A///en-us/um/people/lamport/pubs/paxos-simple.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Paxos&i class=&icon-external&&&/i&&/a&【49】 –文献【49】是经典论文“&a href=&/?target=http%3A///en-us/um/people/lamport/pubs/lamport-paxos.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Part-Time Parliament(兼职的议会)&i class=&icon-external&&&/i&&/a&【50】” 的简化版。&/p&&p&注:两篇文献的作者均是莱斯利·兰伯特(Leslie Lamport),此君是个传奇人物,科技论文写作常用编辑器 LaTex,其中“La”就是来自其姓“Lamport”的前两个字母。Lamport 目前是微软研究院首席研究员,2013 年,因其在分布式计算理论领域做出的杰出贡献,荣获计算机领域最高奖——图灵奖。&/p&&p&牛人的故事特别多,Lamport 亦是这样。就这两篇文献而言,Lamport 的奇闻轶事都值得说道说道。光看其经典论文题目“&a href=&/?target=http%3A///en-us/um/people/lamport/pubs/lamport-paxos.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Part-Time Parliament(兼职的议会)&i class=&icon-external&&&/i&&/a&【50】”,或许就让读者“一头雾水”,这是一篇计算机科学领域的论文吗?和读者一样感觉的可能还有期刊编辑。其实,早在 1990 年时,Lamport 就提出 Paxos 算法,他虚构了一个希腊城邦 Paxos 及其议会,以此来形象比喻说明该算法的流程。论文投出后,期刊编辑建议 Lamport,将论文用更加严谨的数学语言重新进行描述一下。可 Lamport 则认为,我的幽默,你不懂!拒绝修改。时隔八年之后的 1998 年,Paxos 算法才被伯乐期刊《ACM Transactions on Computer Systems》发表。由于 Paxos 算法本身过于复杂,且同行不理解自己的“幽默”, 于是,2001 年 Lamport 就用简易语言撰写这篇文章,重新发表了该论文的&a href=&/?target=http%3A///en-us/um/people/lamport/pubs/paxos-simple.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&简化版&i class=&icon-external&&&/i&&/a&【49】,即“Paxos made simple(Paxos 变得简单)”。简化版的摘要更简单,就一句话:“Paxos 算法,用简易英语说明之,很简单”,如果去掉中间的那个无故紧要的定语从句,就是“Paxos 算法,很简单”。弄得你都来不及做深思状,摘要就完了。这…,这…,完全颠覆了我们常用的“三段论式(提问题、解问题、给结论)”的论文摘要写法啊。&/p&&p&后来,随着分布式系统的不断发展壮大,Paxos 算法开始大显神威。Google 的 Chubby 和 Apache 的 Zookeeper,都是用 Paxos 作为其理论基础实现的。就这样, Paxos 终于登上大雅之堂,它也为 Lamport 在 2013 年获得图灵奖,立下汗马功劳。从 Lamport 发表 Paxos 算法的小案例,我们可以看出:彪悍的人生,不需要解释。牛逼的论文,就可以任性!&/p&&p&&a href=&/?target=http%3A///media//en/us/archive/chubby-osdi06.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chubby&i class=&icon-external&&&/i&&/a&【51】– 该文献的作者是谷歌工程师 Mike Burrows。Chubby 系统本质上就是前文提到的 Paxos 的一个实现版本,主要用于谷歌分布式锁服务。(注:原文链接会出现 404 错误,CSDN 网站有 &a href=&/?target=http%3A//download.csdn.net/download/caohonxian/4602983& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chubby 论文的下载链接&i class=&icon-external&&&/i&&/a&)。&/p&&p&&a href=&/?target=https%3A//www.usenix.org/legacy/event/usenix10/tech/full_papers/Hunt.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Zookeeper&i class=&icon-external&&&/i&&/a&【52】 –这是 Apache Hadoop 框架下的 Chubby 开源版本。它不仅仅提供简单地上锁服务,而事实上,它还是一个通用的分布式协调器,其设计灵感来自谷歌的 Chubby(注:众所周知,分布式协调服务开发困难很大,分布式系统中的多进程间很容易发生条件竞争和死锁。ZooKeeper 的开发动力就是减轻分布式应用开发的困难,使用户不必从零开始构建协调服务)。&/p&&p&&b&计算框架(Computational Frameworks)&/b&&/p&&p&运行时计算框架,可为不同种类的计算,提供运行时(runtime)环境。最常用的是运行时计算框架是 Spark 和 Flink。&/p&&p&&a href=&/?target=https%3A//www.usenix.org/system/files/login/articles/zaharia.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spark&i class=&icon-external&&&/i&&/a&【53】 –因 Spark 日益普及,加之其具备良好的多计算环境的适用性,它已对传统的 Hadoop 生态环境,形成了严峻的挑战(注:Spark 是一个基于内存计算的开源的集群计算系统,其目的在于,让数据分析更加快速。Spark 是由加州大学伯克利分校的 AMP 实验室采用 Scala 语言开发而成。Spark 的内存计算框架,适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,现已逐渐获得很多企业的支持,如阿里巴巴、百度、网易、英特尔等公司均是其用户)。&/p&&p&&a href=&/?target=http%3A//events.linuxfoundation.org/sites/events/files/slides/flink_apachecon_small.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flink&i class=&icon-external&&&/i&&/a&【54】 –这是一个非常类似于 Spark 的计算框架,但在迭代式数据处理上,比 Spark 更给力(注:目前大数据分析引擎 Flink,已升级成为 Apache 顶级项目)。&/p&&p&Spark 和 Flink 都属于基础性的大数据处理引擎。具体的计算框架,大体上,可根据采用的模型及延迟的处理不同,来进行分门别类。&/p&&p&&b&批处理(Batch)&/b&&/p&&p&&a href=&/?target=http%3A///media//en/us/archive/mapreduce-osdi04.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MapReduce&i class=&icon-external&&&/i&&/a&【55】– 这是谷歌有关 MapReduce 的最早的学术论文(注:对于国内用户,点击原文献链接可能会产生 404 错误,CSDN 网站有 MapReduce 论文的&a href=&/?target=http%3A//download.csdn.net/download/jalimay/8128815& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&下载链接&i class=&icon-external&&&/i&&/a&)。&/p&&p&&a href=&/?target=http%3A//www.cs.arizona.edu/%7Ebkmoon/papers/sigmodrec11.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MapReduce 综述&i class=&icon-external&&&/i&&/a&【56】 –这是一篇过时、但依然值得一读的、有关 MapReduce 计算框架的综述性文章。&/p&&p&&b&迭代式(BSP)&/b&&/p&&p&&a href=&/?target=http%3A//kowshik.github.io/JPregel/pregel_paper.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pregel&i class=&icon-external&&&/i&&/a&【57】–这又是一篇谷歌出品的大手笔论文,主要描述了大规模图处理方法(注:Pregel 是一种面向图算法的分布式编程框架,其采用的是迭代式的计算模型。它被称之为 Google 后 Hadoop 时代的新“三驾马车”之一。另外两驾马车分别是:“交互式”大数据分析系统 Dremel 和网络搜索引擎 Caffeine)。&/p&&p&&a href=&/?target=http%3A///researcher/files/us-heq/Large%2520Scale%2520Graph%2520Processing%2520with%2520Apache%2520Giraph.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Giraph&i class=&icon-external&&&/i&&/a&【58】 – 该系统建模于谷歌的 Pregel,可视为 Pregel 的开源版本,它是一个基于 Hadoop 架构的、可扩展的分布式迭代图处理系统。&/p&&p&&a href=&/?target=https%3A//amplab.cs.berkeley.edu/wp-content/uploads/2014/02/graphx.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GraphX&i class=&icon-external&&&/i&&/a&【59】 –这是一个同时采用图并行计算和数据并行的计算框架(注:GraphX 最先是加州大学伯克利分校 AMPLab 实验室的一个分布式图计算框架项目,后来整合到 Spark 中,成为其中的一个核心组件。GraphX 最大的贡献在于,在 Spark 之上提供一栈式数据解决方案,可方便高效地完成图计算的一整套流水作业)。&/p&&p&&a href=&/?target=http%3A//csl.skku.edu/papers/CS-TR-.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hama&i class=&icon-external&&&/i&&/a&【60】– 是一个构建 Hadoop 之上的基于 BSP 模型的分布式计算引擎(注:&/p&&p&Hama 的运行环境需要关联 Zookeeper、HBase、HDFS 组件。Hama 中最关键的技术,就是采用了 BSP 模型(Bulk Synchronous Parallel,即整体同步并行计算模型,又名大同步模型)。BSP 模型是哈佛大学的计算机科学家 Viliant 和牛津大学的 BillMcColl 在 1990 年联合提出的,他们希望能像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。&/p&&p&&a href=&/?target=http%3A//www.vldb.org/pvldb/vol7/p1047-han.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开源图处理&i class=&icon-external&&&/i&&/a&系统【61】(Open source graph processing )-这是滑铁卢大学的研究人员撰写的综述性文献,文献【61】对类 Pregel(Pregel-like)的、基于 BSP 模型的图处理系统进行了实验性的比较。&/p&&p&&b&流式(Streaming)&/b&&/p&&p&&a href=&/?target=https%3A//www.ucviden.dk/portal/files//Survey_of_real_time_processing_systems_for_big_data_Draft_.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&流式处理&i class=&icon-external&&&/i&&/a&【62】(Stream Processing)- 这是一篇非常棒的、有关面向大数据实时处理系统的综述性文章。&/p&&p&&a href=&/?target=https%3A//cs.brown.edu/courses/cs227/papers/ss-storm.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Storm&i class=&icon-external&&&/i&&/a&【63】 – 这是一个大数据实时处理系统(注:Storm 有时也被人们称为实时处理领域的 Hadoop,它大大简化了面向庞大规模数据流的处理机制,从而在实时处理领域扮演着重要角色。文献【63】是 Twitter 工程师们在 2014 年发表于 SIGMOD 上的学术论文)。&/p&&p&&a href=&/?target=http%3A//www.jfokus.se/jfokus15/preso/ApacheSamza.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Samza&i class=&icon-external&&&/i&&/a&【64】 -这是一款由 Linkedin 公司开发的分布式的流式数据处理框架(注:所谓流式数据,是指要在处理单位内得到的数据,这种方式更注重于实时性,流式数据有时也称为快数据)。&/p&&p&&a href=&/?target=http%3A//people.csail.mit.edu/matei/papers/2013/sosp_spark_streaming.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Spark 流&i class=&icon-external&&&/i&&/a&【65】(Spark Streaming) -该文献是加州大学伯克利分校的研究人员于 2013 年在著名操作系统会议 SOSP 上发表的学术论文,论文题目是《离散流:容错大规模流式计算》(注:这里的离散流是指一种微批处理构架,其桥接了传统的批处理和交互式处理。Spark Streaming 是 Spark 核心 API 的一个扩展,它并不会像 Storm 那样逐个处理数据流,而是在处理前,按时间间隔预先将其切分为很多小段的批处理作业)。&/p&&p&&b&交互式(Interactive)&/b&&/p&&p&&a href=&/?target=http%3A//www.vldb.org/pvldb/vldb2010/papers/R29.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dremel&i class=&icon-external&&&/i&&/a&【66】–这又是一篇由谷歌出品的经典论文,论文描述了如何处理“交互式”大数据的工作负载。该论文是多个基于 Hadoop 的开源 SQL 系统的理论基础(注:文献【66】写于 2006 年,“捂”藏 4 年之后,于 2010 年公布于众。文章针对 MR 交互式查询能力不足,提出了 Dremel,阐述了 Dremel 的设计原理,并提供了部分测试报告)。&/p&&p&&a href=&/?target=http%3A//www.cidrdb.org/cidr2015/Papers/CIDR15_Paper28.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Impala&i class=&icon-external&&&/i&&/a&【67】 –这是一个大规模并行处理(MPP)式 SQL 大数据分析引擎(注:&/p&&p&Impala 像 Dremel 一样,其借鉴了 MPP(Massively Parallel Processing,大规模并行处理)并行数据库的思想,抛弃了 MapReduce 这个不太适合做 SQL 查询的范式,从而让 Hadoop 支持处理交互式的工作负载。本文作者阿尼尔?马丹在 LinkedIn 上的博客原文,在此处的“MPI”系“MPP”笔误,读者可参阅文献【67】发现此问题)。&/p&&p&&a href=&/?target=http%3A//wiki.apache.org/incubator/DrillProposal%3Faction%3DAttachFile%26do%3Dget%26target%3DDrill%2Bslides.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Drill&i class=&icon-external&&&/i&&/a&【68】–这是谷歌 Dremel 的开源版本(注:Drill 是一个低延迟的、能对海量数据(包括结构化、半结构化及嵌套数据)实施交互式查询的分布式数据引擎)。&/p&&p&&a href=&/?target=http%3A//www.cs.berkeley.edu/%7Ematei/papers/2012/sigmod_shark_demo.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Shark&i class=&icon-external&&&/i&&/a&【69】 –该文献是 2012 年发表于 SIGMOD 的一篇学术论文,论文对 Spark 生态系统上的数据分析能力,给出了很深入的介绍(注:Shark 是由加州伯克利大学 AMPLab 开发的大数据分析系统。Shark 即“Hive on Spark”的含义,本质上是通过 Hive 的 HQL 解析,把 HQL 翻译成 Spark 上的 RDD 操作。然后通过 Hive 的元数据获,取数据库里的表信息。HDFS 上的数据和文件,最后会由 Shark 获取,并放到 Spark 上运算。Shark 基于 Scala 语言的算子推导,可实现良好的容错机制,对执行失败的长/短任务,均能从上一个“快照点(Snapshot)”进行快速恢复)。&/p&&p&&a href=&/?target=http%3A//people.csail.mit.edu/matei/papers/2013/sigmod_shark.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Shark&i class=&icon-external&&&/i&&/a&【70】–这是另外一篇很棒的于 2013 年发表在 SIGMOD 的学术论文,其深度解读在 Apache Hive 之上 SQL 访问机制(注:这篇文献描述了如何构建在 Spark 上构建 SQL 引擎——Shark。更重要的是,文章还讨论了之前在 Hadoop/MapReduce 上实施 SQL 查询如此之慢的原因)。&/p&&p&&a href=&/?target=http%3A//www.news.cs.nyu.edu/%7Ejinyang/sp07/papers/dryad.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dryad&i class=&icon-external&&&/i&&/a&【71】– 文献讨论了使用有向无环图(Directed Acycline Graph,DAG)来配置和执行并行数据流水线的方法(注:Dryad 是一个通用的粗颗粒度的分布式计算和资源调度引擎,其核心特性之一,就是允许用户自己构建 DAG 调度拓扑图。文献【71】是微软于 2007 年在 EuroSys 国际会议上发布的学术论文)。&/p&&p&&a href=&/?target=http%3A///mediac/ApacheTezPrimer.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tez&i class=&icon-external&&&/i&&/a&【72】 –其核心思想来源于 Dryad,可视为利用 Yarn (即 MRv2) 对 Dryad 的开源实现(注:Apache Tez 是基于 Hadoop Yarn 之上的 DAG 计算框架。由 Hadoop 的二东家 Hortonworks 开发并提供主要技术支持。文献【72】是一个关于 Tez 的简要介绍文档)。&/p&&p&&a href=&/?target=https%3A//www.cs.berkeley.edu/%7Esameerag/blinkdb_eurosys13.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BlinkDB&i class=&icon-external&&&/i&&/a&【73】–可在抽样数据上实现交互式查询,其呈现出的查询结果,附带有误差标识。&/p&&p&(注:BlinkDB 是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎。BlinkDB 允许用户通过适当降低数据精度,对数据进行先采样后计算,其通过其独特的优化技术,实现了比 Hive 快百倍的交互式查询速度,而查询进度误差仅降低2~10%。&/p&&p&BlinkDB 采用的策略,与大数据布道师,维克托·迈尔-舍恩伯格在其著作《大数据时代》中提到的观点,“要全体,不要抽样”,恰恰相反。&/p&&p&基于常识,我们知道:多了,你就快不了。好了,你就省不了。对大数据处理而言,也是这样。英特尔中国研究院院长吴甘沙认为,大体量、精确性和速度快,三者不可兼得,顶多取其二。如果要实现在大体量数据上的 “快”,就得想办法减少数据,而减少数据,势必要适度地降低分析精确性。&/p&&p&事实上,大数据并不见得越“大”越好,有时候一味的追求“大”是没有必要的。例如,在医疗健康领域,如果来监控某个病人的体温,可穿戴设备可以一秒钟采集一次数据,也可以一分钟采集一次数据,前者采集的数据总量比后者“大”60 倍,但就监控病人身体状况而言,意义并不是太大。虽然后者的数据忽略了人体在一分钟内的变化,监控的精度有所下降,但对于完成监控病人健康状态这一目的而言,是可以接受的。)&/p&&p&&b&实时系统(RealTime)&/b&&/p&&p&&a href=&/?target=http%3A//static.druid.io/docs/druid.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Druid&i class=&icon-external&&&/i&&/a&【74】 –这是一个开源的分布式实时数据分析和存储系统,旨在快速处理大规模的数据,并能做到快速查询和分析(注:文献【74】是 2014 年 Druid 创始人 Eric Tschetter 和中国工程师杨仿今等人在 SIGMOD 上发表的一篇论文)。&/p&&p&&a href=&/?target=https%3A///linkedin/pinot/wiki/Architecture& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pinot&i class=&icon-external&&&/i&&/a&【75】 –这是由 LinkedIn 公司出品的一个开源的、实时分布式的 OLAP 数据分析存储系统,非常类似于前面提到的 Druid,LinkedIn 使用它实现低延迟可伸缩的实时分析。(注:文献【75】是在 GitHub 上的有关 Pinot 的说明性文档)。&/p&&p&数据分析层(Data Analysis)&/p&&p&数据分析层中的工具,涵盖范围很广,从诸如 SQL 的声明式编程语言,到诸如 Pig 的过程化编程语言,均有涉及。另一方面,数据分析层中的库也很丰富,可支持常见的数据挖掘和机器学习算法,这些类库可拿来即用,甚是方便。&/p&&p&&b&工具(Tools)&/b&&/p&&p&&a href=&/?target=http%3A//infolab.stanford.edu/%7Eolston/publications/sigmod08.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pig&i class=&icon-external&&&/i&&/a&【76】 –这是一篇有关 Pig Latin 非常不错的综述文章(注:Pig Latin 原是一种儿童黑话,属于是一种英语语言游戏,形式是在英语上加上一点规则使发音改变,让大人们听不懂,从而完成孩子们独懂的交流。文献【76】是雅虎的工程师们于 2008 年发表在 SIGMOD 的一篇论文,论文的题目是“Pig Latin:并不是太老外的一种数据语言”,言外之意,他们发明了一种数据处理的“黑话”——Pig Latin,一开始你可能不懂,等你熟悉了,就会发现这种数据查询语言的乐趣所在)。&/p&&p&&a href=&/?target=http%3A//paperhub./a7b584c04b61fabb8d20.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pig&i class=&icon-external&&&/i&&/a&【77】 – 这是另外一篇由雅虎工程师们撰写的有关使用 Pig 经验的论文,文章介绍了如果利用 Pig 在 Map-Reduce 上构建一个高水准的数据流分析系统。&/p&&p&&a href=&/?target=http%3A//infolab.stanford.edu/%7Eragho/hive-icde2010.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hive&i class=&icon-external&&&/i&&/a&【78】 –该文献是 Facebook 数据基础设施研究小组撰写的一篇学术论文,介绍了 Hive 的来龙去脉(注:Hive 是一个建立于 Hadoop 上的数据仓库基础构架。它用来进行数据的提取、转化和加载(即 Extract-Transform-Load ,ETL),它是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制)。&/p&&p&&a href=&/?target=http%3A//www.vldb.org/pvldb/2/vldb09-938.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hive&i class=&icon-external&&&/i&&/a&【79】–该文献是另外一篇有关 Hive 的值得一读的好论文。论文作者来自 Facebook 数据基础设施研究小组,在这篇论文里,可以帮助读者理解 Hive 的设计理念。&/p&&p&&a href=&/?target=http%3A//phoenix.apache.org/presentations/OC-HUG-x3.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Phoenix&i class=&icon-external&&&/i&&/a&【80】 –它是 HBase 的 SQL 驱动(注:Phoenix 可将 SQL 查询转成 HBase 的扫描及相应的动作。文献【80】是关于在 Hbase 上部署 SQL 的幻灯片文档)。&/p&&p&&a href=&/?target=http%3A//www.ispras.ru/proceedings/docs/2012/23/isp_23_.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Map Reduce 上的连接(join)算法&i class=&icon-external&&&/i&&/a&【81】–该文献介绍了在 Hadoop 环境下的各种并行连接算法,并对它们的性能作出系统性评测。&/p&&p&&a href=&/?target=http%3A//grail.csuohio.edu/%7Esschung/cis612/hadoopjoin_sigmod2010.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Map Reduce 上的连接算法&i class=&icon-external&&&/i&&/a&【82】 –这是威斯康星大学和 IBM 研究团队撰写的综述性文章,文章对在 Map Reduce 模型下的各种连接算法进行了综合比较。&/p&&p&&b&库(Libraires)&/b&&/p&&p&&a href=&/?target=http%3A//stanford.edu/%7Erezab/sparkworkshop/slides/xiangrui.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MLlib&i class=&icon-external&&&/i&&/a&【83】–这是在 Spark 计算框架中对常用的机器学习算法的实现库,该库还包括相关的测试和数据生成器(注:文献【83】是 MLlib 的一个幻灯片说明文档)。&/p&&p&&a href=&/?target=http%3A///3138542/SparkR-meetup.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SparkR&i class=&icon-external&&&/i&&/a&【84】–这是 AMPLab 发布的一个R开发包,为 Apache Spark 提供轻量级的前端(注:R是一种广泛应用于统计分析、绘图的语言及操作环境。文献【84】是有关 SparkR 的幻灯片文档)。&/p&&p&&a href=&/?target=http%3A///u/cms/www/44944cqmu.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mahout&i class=&icon-external&&&/i&&/a&【85】 –这是一个功能强大的数据挖掘工具,是一个基于传统 Map Reduce 的分布式机器学习框架(注:Mahout 的中文含义就是“驭象之人”,而 Hadoop 的 Logo 正是一头小黄象。很明显,这个库是帮助用户用好 Hadoop 这头难用的大象。文献【85】是有关 Mahout 的图书)。&/p&&p&&b&数据集成层(Data Integration)&/b&&/p&&p&数据集成框架提供了良好的机制,以协助高效地摄取和输出大数据系统之间的数据。从业务流程线到元数据框架,数据集成层皆有涵盖,从而提供全方位的数据在整个生命周期的管理和治理。&/p&&p&&b&摄入/消息传递(Ingest/Messaging)&/b&&/p&&p&&a href=&/?target=https%3A//blogs.apache.org/flume/entry/flume_ng_architecture& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flume&i class=&icon-external&&&/i&&/a&【86】 –这是 Apache 旗下的一个分布式的、高可靠的、高可用的服务框架,可协助从分散式或集中式数据源采集、聚合和传输海量日志(注:文献【86】是 Apache 网站上有关 Flume 的一篇博客文章)。&/p&&p&&a href=&/?target=https%3A//cwiki.apache.org/confluence/download/attachments//Cecho_Ting_SqoopBigDataTechCon.pdf%3Fversion%3D1%26modificationDate%3D0%26api%3Dv2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sqoop&i class=&icon-external&&&/i&&/a&【87】–该系统主要用来在 Hadoop 和关系数据库中传递数据(注:Sqoop 目前已成为 Apache 的顶级项目之一。通过 Sqoop,可以方便地将数据从关系数据库导入到 HDFS,或反之亦可。文献【87】是有关 Sqoop 的幻灯片说明文档)。&/p&&p&&a href=&/?target=http%3A///Kafka.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kafka&i class=&icon-external&&&/i&&/a&【88】 –这是由 LinkedIn 开发的一个分布式消息系统(注:由 Scala 编写而成的 Kafka,由于可水平扩展、吞吐率高等特性,得到广泛应用。文献【88】是 LindedIn 的工程师们在 2011 年发表于 NetDB 的会议论文)。&/p&&p&&b&ETL/工作流&/b&&/p&&p&ETL 是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程,是构建数据仓库的重要一环。&/p&&p&&a href=&/?target=http%3A//events.linuxfoundation.org/sites/events/files/slides/Simplifying%2520Big%2520Data%2520with%2520Apache%2520Crunch.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Crunch&i class=&icon-external&&&/i&&/a&【89】–这是 Apache 旗下的一套 Java API 函数库,它能够大大简化编写、测试、运行 MapReduce 处理工作流的程序(注:文献【89】是有关 Crunch 的幻灯片解释文档)。&/p&&p&&a href=&/?target=http%3A//public-repo-/HDP-LABS/Projects/Falcon/2.0.6.0-76/FalconHortonworksTechnicalPreview.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Falcon&i class=&icon-external&&&/i&&/a&【90】– 这是 Apache 旗下的 Falcon 大数据管理框架,可以帮助用户自动迁移和处理大数据集合(注:文献【90】是一份关于 Falcon 技术预览报告)。&/p&&p&&a href=&/?target=http%3A///files/cascading_notes/cascading.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cascading&i class=&icon-external&&&/i&&/a&【91】 –这是一个架构在 Hadoop 上的 API 函数库,用来创建复杂的可容错的数据处理工作流(注:文献【91】是关于 Hadoop 上的 Cascading 的概论和技术随笔)。&/p&&p&&a href=&/?target=http%3A//oozie.apache.org/docs/4.2.0/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Oozie&i class=&icon-external&&&/i&&/a&【92】–是一个工作流引擎,用来协助 Hadoop 作业管理(注:Oozie 字面含义是驯象之人,其寓意和 Mahout 一样,帮助用户更好地搞定 Hadoop 这头大象。文献【92】是 Apache 网站上有关 Oozie 的官方文档)。&/p&&p&&b&元数据(Metadata)&/b&&/p&&p&&a href=&/?target=https%3A//cwiki.apache.org/confluence/display/Hive/HCatalog%2BUsingHCat& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HCatalog&i class=&icon-external&&&/i&&/a&【93】– 它提供了面向 Apache Hadoop 的数据表和存储管理服务(注:Apache HCatalog 提供一个共享的模式和数据类型的机制,它抽象出表,使用户不必关心数据怎么存储,并提供了可操作的跨数据处理工具。文献【93】是 Apache 网站有关 Hcatalog 的官方说明文档)。&/p&&p&&b&序列化(Serialization)&/b&&/p&&p&&a href=&/?target=http%3A//homepages.lasige.di.fc.ul.pt/%7Evielmo/notes/_smalltalk_protocol_buffers.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Protocol Buffers&i class=&icon-external&&&/i&&/a&【94】 –由 Google 推广的一种与语言无关的、对结构化数据进行序列化和反序列化的机制(注:Protocol Buffers 可用于通讯协议、数据存储等领域的语言及平台无关、可扩展的序列化结构数据格式。文献【94】是有关 Protocol Buffers 幻灯片文档)。&/p&&p&&a href=&/?target=http%3A//mil-oss.org/resources/mil-oss-wg3_an-introduction-to-apache-avro_douglas-creager.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Avro&i class=&icon-external&&&/i&&/a&【95】 –这是一个建模于 Protocol Buffers 之上的、Hadoop 生态系统中的子项目(注:Avro 本身既是一个序列化框架,同时也实现了 RPC 的功能)。&/p&&p&&b&操作框架(Operational Frameworks)&/b&&/p&&p&最后,我们还需要一个操作性框架,来构建一套衡量标准和测试基准,从而来评价各种计算框架的性能优劣。在这个操作性框架中,还需要包括性能优化工具,借助它来平衡工作负载。&/p&&p&&b&监测管理框架(Monitoring Frameworks)&/b&&/p&&p&&a href=&/?target=http%3A//opentsdb.net/overview.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&OpenTSDB&i class=&icon-external&&&/i&&/a&【96】 –这是构建于 HBase 之上的实时性能评测系统(注:文献【96】提供了 OpenTSDB 的简要概述,介绍了 OpenTSDB 的工作机理)。&/p&&p&&a href=&/?target=https%3A//issues.apache.org/jira/secure/attachment//Ambari_Architecture.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ambari&i class=&icon-external&&&/i&&/a&【97】– 这是一款基于 Web 的系统,支持 Apache Hadoop 集群的供应、管理和监控(注:文献【97】阐述了 Ambari 架构的设计准则)。&/p&&p&&b&基准测试(Benchmarking)&/b&&/p&&p&&a href=&/?target=http%3A//research.ijais.org/volume7/number8/ijais14-451229.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YCSB&i class=&icon-external&&&/i&&/a&【98】 –该文献是一篇使用 YCSB 对 NoSQL 系统进行性能评估的期刊论文(注:YCSB 是雅虎云服务基准测试(Yahoo! Cloud Serving Benchmark)的简写。见名知意,它是由雅虎出品的一款通用云服务性能测试工具)。&/p&&p&&a href=&/?target=https%3A//hadoop.apache.org/docs/stable1/gridmix.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GridMix&i class=&icon-external&&&/i&&/a&【99】 –该系统通过运行大量合成的作业,对 Hadoop 系统进行基准测试,从而获得性能评价指标(注:文献是 Apache 网站有关 GridMix 的官方说明文档)。&/p&&p&最后一篇文献是有关大数据基准测试的&a href=&/?target=http%3A//arxiv.org/ftp/arxiv/papers/94.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&综述文章&i class=&icon-external&&&/i&&/a&【100】,文章讨论了基准测试的最新技术进展以及所面临的几个主要挑战。&/p&&p&&b&译者寄语:&/b&&/p&&p&在你迈步于大数据的旅途中,真心希望这些文献能助你一臂之力。但要知道,有关大数据的文献,何止千万,由于个人精力、能力有限,有些领域也不甚熟稔,故难免会挂一漏万。如有疏忽,漏掉你的大作,还请你海涵。最后,希望这些文献能给你带来“学而时习之,不亦乐乎”的快感!&/p&&p&译者介绍:张玉宏,博士。2012 年毕业于电子科技大学,现执教于河南工业大学。中国计算机协会(CCF)会员,ACM/IEEE 会员。主要研究方向为高性能计算、生物信息学,主编有《Java 从入门到精通》一书。&/p&&p&英文原文:&a href=&/?target=https%3A///pulse/100-open-source-big-data-architecture-papers-anil-madan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&linkedin&i class=&icon-external&&&/i&&/a&&/p&
今天在网上闲逛,无意间发现了这一篇好文,原文作者是PayPal高级工程总监Anil Madan,文章对当前大数据领域用到的一些技术、框架等都做了一遍梳理。通过阅读本文,可以对当前大数据领域有一个很好的认识,如果需要深入了解某项技术,可以阅读文章中所给的文…
恭喜你已经有了一个A类别的idea和相应的实现以及数据,那么接下来就是写文章的问题了。计算机论文写作还是有一定的规律可以遵循的。&br&&br&首先,你需要判断自己的文章是投往哪个A类期刊或者会议,是IEEE的还是ACM的。通常IEEE会议的格式和ACM会议的文章格式要求有所不同,我建议你在投论文之前先把该会议的Call For Papers好好研读一番,弄清楚文章长度,需要使用的Latex或者Word模板以及匿名方式等一系列非技术性问题,然后再开始写作。&br&&br&在写作之前,先问问自己如果这篇文章写好以后给整个领域(community)的贡献是什么,这实际上是整个文章的灵魂,也就是你解决某个问题(problem)的方案(idea)。想清楚以后把它(们)按照重要性顺序写下来,这些就是你在Introduction里面告诉读者包括审稿人的contributions。贡献可能是新算法,新架构,新实现或者是前人没有的insights。你在写contributions的时候面向的读者很有可能是自己,所以可能忽略了problem背景和定义,这些就可以慢慢在Introduction里面填充。&br&&br&这样Introduction就写好了,比如说:某某问题是实际中存在的一个问题,这个问题重要性是blah,blah,blah。之前发表的论文针对这个问题提出了三个有代表性的解决方案(此处引用可能至少三篇论文)。第一个解决方案甲大概做了一二三,但是没做四;第二个解决方案乙做了一四,但是没做二三;第三个解决方案丙做了一二三四,但是性能比较差。在这篇文章中,我们提出一个性能比较好并且同时做一二三四的解决方案。接下来写我们这个解决方案是如何实现同时支持一二三四的情况下提升性能的。比如说用了新算法,新架构或者新的实现,都可以。讲完基本技术创新点以后就是contributions,把之前想好的贴上去就可以了。最后在Intro里面加上后续内容组织,比如说第二章是相关工作,第三章是综述,。。。&br&&br&一般来说Intro写完以后会写一章相关工作(Related Work)。从最Related的论文开始写起,比如说以上提到的三篇。这里需要着重讲的是,Related Work不是记流水账(e.g.,甲用了idea A,乙用了idea B,丙用了idea C),而是要比较这些论文,阐述她们各自的优缺点。&br&&br&Related Work写完后,你需要写一个Overview来总括你的问题和解决方案。我的经验是最好想一个最最简单的例子(Running Example),然后使用这个例子引出你要解决的问题。接着再把之前在Intro中提到的现有解决方案挨个说一遍,并且用那个案例表明三个解决方案的不足(这里最好用实际数据)。最后把你的解决方案介绍一下,重点是与前人做的相比较。如果你用了一种新的算法,你可以大概提一下这个算法的思路以及实验数据;如果是新架构,最好放一张架构图上去,然后阐述一下新架构的优势(以及劣势)。在这一章介绍自己的idea的时候,你只需要概略描述即可,凡是涉及到技术细节的东西均可以引用后面的章节来节省页面空间。&br&&br&后面这一章就完全是技术细节了。如果是自己做的的话,这一章是最好写的,因为你只需要把code/算法/架构在纸上还原出来即可。注意由于页面限制,一般来说这一章不可能包括所有细节,按重要性取舍吧。注意有些corner cases,如果很重要的话,千万别省略。&br&&br&技术细节讲完了,如果页面允许,你还可以大致讲一讲你的实现情况。比如说新的系统是在Linux上实现的,新加了20000行C代码,1500行Python以及300行Bash script。C代码主要干什么,Python主要干什么以及Bash script干什么,最好能与技术细节里面所讲的呼应。&br&&br&自然地,技术细节和实现讲完了就该讲你是如何用实验验证你的解决方案支持你的contributions啦。根据上面的例子,你需要写的是如何从实验数据中展示你的解决方案支持一二三四并且性能不错。支持一二三四这种是或否的问题比较容易说,但是性能不错就需要和前人作品做大量比较了。柱状图,折线图,表格等等数据展示手段,只要能说明问题都可以采用。这里需要注意的是,只要你写在论文里面的文字或者是图表,你都要想清楚背后的原因,最好能在论文里做充分的解释。比方说,你采用了新的算法,性能见表1,原因是复杂度降低了;你采用了新架构,性能提升见图3,原因是新架构节省了内存拷贝。通常来说,新算法或者架构会总体上提升性能,但也可能会有异常情况,即新方案比不过老方案的地方。这时需要格外注意,因为这是你的weaknesses,你需要用令人信服的说法向读者展示这些异常情况存在的可能性较低,或者可以通过某种简单方式避免。&br&&br&如果写到这里你还有充足页面可用,你可以试图写一个discussion章节来讨论你的方案的缺点,以及未来有可能的改进情况。不要怕展示缺点,你越诚恳审稿人对你印象越好。如果你是故意遗漏新方法的一个很显然的缺点,这会给审稿人非常不好的印象。你也可以提一些你的方案的其他应用等等。&br&&br&最后就是结论啦,用一两个段落概括一下解决的问题,解决思路以及贡献就可以了,比较好写。&br&&br&如果你需要写一些附录,比如说文章里有几个定理没有给出证明,那可以在后面的Appendix章节中加入。通常Appendix审稿人不太会读。&br&&br&我还有一些小建议,希望能对你有所帮助:&br&&br&1. 找到会议程序委员会(Program Committee,也就是审稿人)的页面,然后看看哪些审稿人做得和你做的相关。如果有的话你应该在Related Work中引用他们的作品,因为大家都希望自己的论文被别人引用。不要怕有礼貌得指出他们的论文缺点,如果你说得对,审稿人看到会很高兴的。&br&&br&2. 论文提交前用你能找到的任何有效的书写检查软件检查一下拼写错误或者简单的语法错误,我知道有些审稿人会对这种小问题过敏,如果一篇论文中此类错误过多可能会导致直接悲剧。有条件的话,找一个英语为母语的人帮你最后把把关。这里我推荐你如果可能的话找一个美国教授合作写论文,可以节省很多时间。&br&&br&3. 如果你之前没中过2-tier或者3-tier的期刊或者会议,那么可以先从这些着手,慢慢锻炼。&br&&br&祝你好运!&br&&br&利益相关:计算机博士刚毕业,期间3篇CCS一作,1篇PLDI一作。
恭喜你已经有了一个A类别的idea和相应的实现以及数据,那么接下来就是写文章的问题了。计算机论文写作还是有一定的规律可以遵循的。 首先,你需要判断自己的文章是投往哪个A类期刊或者会议,是IEEE的还是ACM的。通常IEEE会议的格式和ACM会议的文章格式要求…
&p&机器学习是计算机科学的一个子领域,在人工智能领域,机器学习逐渐发展成模式识别和计算科学理论的研究。从2016年起,机器学习到达了不合理的火热巅峰。但是,有效的机器学习是困难的,因为机器学习本身就是一个交叉学科,没有科学的方法及一定的积累很难入门。&/p&&p&本文通过系统的分析上百篇翻译博客,制成了机器学习必备手册,本手册一定会帮助你走向你自己的“人生巅峰”。手册包含如何入门机器学习,机器学习流行算法,机器学习实战等等。&/p&&p&&b&一.机器学习入门篇:&/b&&/p&&p&&a href=&///?target=http%3A///m/33114/& class=& wr

我要回帖

更多关于 win8.1手动安装版 的文章

 

随机推荐