订阅业界RSS CSDN首页> 业界

PayPal高级工程总监:读完这100篇论文 就能成大数据高手

发表于2015-07-07 09:25| 次阅读| 来源LinkeDin| 0 条评论| 作者Anil Madan

摘要:PayPal高级工程总监Anil Madan写了篇大数据的文章,近日CSDN对此进行了翻译。一共有100篇大数据的论文,涵盖大数据技术栈,全部读懂你将会是大数据的顶级高手。

流式(Streaming)

流式处理62】Stream Processing)- 这是一篇非常棒的、有关面向大数据实时处理系统的综述性文章。

Storm63】 – 这是一个大数据实时处理系统(注:Storm有时也被人们称为实时处理领域的Hadoop,它大大简化了面向庞大规模数据流的处理机制,从而在实时处理领域扮演着重要角色。文献【63】是Twitter工程师们在2014年发表于SIGMOD上的学术论文)。

Samza64】 -这是一款由Linkedin公司开发的分布式的流式数据处理框架(注:所谓流式数据,是指要在处理单位内得到的数据,这种方式更注重于实时性,流式数据有时也称为快数据)。

Spark65】Spark Streaming) -该文献是加州大学伯克利分校的研究人员于2013年在著名操作系统会议SOSP上发表的学术论文,论文题目是《离散流:容错大规模流式计算》(注:这里的离散流是指一种微批处理构架,其桥接了传统的批处理和交互式处理。Spark Streaming是Spark 核心API的一个扩展,它并不会像Storm那样逐个处理数据流,而是在处理前,按时间间隔预先将其切分为很多小段的批处理作业)。

交互式(Interactive)

Dremel66】–这又是一篇由谷歌出品的经典论文,论文描述了如何处理“交互式”大数据的工作负载。该论文是多个基于Hadoop的开源SQL系统的理论基础(注:文献【66】写于2006年,“捂”藏4年之后,于2010年公布于众。文章针对MR交互式查询能力不足,提出了Dremel,阐述了Dremel的设计原理,并提供了部分测试报告)。

Impala67】 –这是一个大规模并行处理(MPP)式 SQL 大数据分析引擎(注:

Impala像Dremel一样,其借鉴了MPP(Massively Parallel Processing,大规模并行处理)并行数据库的思想,抛弃了MapReduce这个不太适合做SQL查询的范式,从而让Hadoop支持处理交互式的工作负载。本文作者阿尼尔•马丹在LinkedIn上的博客原文,在此处的“MPI”系“MPP”笔误,读者可参阅文献【67】发现此问题)。

Drill68】–这是谷歌 Dremel的开源版本(注:Drill是一个低延迟的、能对海量数据(包括结构化、半结构化及嵌套数据)实施交互式查询的分布式数据引擎)。

Shark69】 –该文献是2012年发表于SIGMOD的一篇学术论文,论文对Spark生态系统上的数据分析能力,给出了很深入的介绍(注:Shark是由加州伯克利大学AMPLab开发的大数据分析系统。Shark即“Hive on Spark”的含义,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作。然后通过Hive的元数据获,取数据库里的表信息。HDFS上的数据和文件,最后会由Shark获取,并放到Spark上运算。Shark基于 Scala语言的算子推导,可实现良好的容错机制,对执行失败的长/短任务,均能从上一个“快照点(Snapshot)”进行快速恢复)。

Shark70】–这是另外一篇很棒的于2013年发表在SIGMOD的学术论文,其深度解读在Apache Hive之上SQL访问机制(注:这篇文献描述了如何构建在Spark上构建SQL引擎——Shark。更重要的是,文章还讨论了之前在 Hadoop/MapReduce上实施SQL查询如此之慢的原因)。

Dryad71】– 文献讨论了使用有向无环图(Directed Acycline Graph,DAG)来配置和执行并行数据流水线的方法(注:Dryad是一个通用的粗颗粒度的分布式计算和资源调度引擎,其核心特性之一,就是允许用户自己构建DAG调度拓扑图。文献【71】是微软于2007年在EuroSys国际会议上发布的学术论文)。

Tez72】 –其核心思想来源于Dryad,可视为利用Yarn(即MRv2)对Dryad的开源实现(注:Apache Tez是基于Hadoop Yarn之上的DAG计算框架。由Hadoop的二东家Hortonworks开发并提供主要技术支持。文献【72】是一个关于Tez的简要介绍文档)。

BlinkDB73】–可在抽样数据上实现交互式查询,其呈现出的查询结果,附带有误差标识。

(注:BlinkDB 是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎。BlinkDB允许用户通过适当降低数据精度,对数据进行先采样后计算,其通过其独特的优化技术,实现了比Hive快百倍的交互式查询速度,而查询进度误差仅降低2~10%。

BlinkDB采用的策略,与大数据布道师,维克托·迈尔-舍恩伯格在其著作《大数据时代》中提到的观点,“要全体,不要抽样”,恰恰相反。

基于常识,我们知道:多了,你就快不了。好了,你就省不了。对大数据处理而言,也是这样。英特尔中国研究院院长吴甘沙认为,大体量、精确性和速度快,三者不可兼得,顶多取其二。如果要实现在大体量数据上的 “快”,就得想办法减少数据,而减少数据,势必要适度地降低分析精确性。

事实上,大数据并不见得越“大”越好,有时候一味的追求“大”是没有必要的。例如,在医疗健康领域,如果来监控某个病人的体温,可穿戴设备可以一秒钟采集一次数据,也可以一分钟采集一次数据,前者采集的数据总量比后者“大”60倍,但就监控病人身体状况而言,意义并不是太大。虽然后者的数据忽略了人体在一分钟内的变化,监控的精度有所下降,但对于完成监控病人健康状态这一目的而言,是可以接受的。)

实时系统(RealTime)

Druid74】 –这是一个开源的分布式实时数据分析和存储系统,旨在快速处理大规模的数据,并能做到快速查询和分析(注:文献【74】是2014年Druid创始人Eric Tschetter和中国工程师杨仿今等人在SIGMOD上发表的一篇论文)。

Pinot75】 –这是由LinkedIn公司出品的一个开源的、实时分布式的 OLAP数据分析存储系统,非常类似于前面提到的Druid,LinkedIn 使用它实现低延迟可伸缩的实时分析。(注:文献【75】是在GitHub上的有关Pinot的说明性文档)。

数据分析层(Data Analysis)

数据分析层中的工具,涵盖范围很广,从诸如SQL的声明式编程语言,到诸如Pig的过程化编程语言,均有涉及。另一方面,数据分析层中的库也很丰富,可支持常见的数据挖掘和机器学习算法,这些类库可拿来即用,甚是方便。

工具(Tools)

Pig76】 –这是一篇有关Pig Latin非常不错的综述文章(注:Pig Latin原是一种儿童黑话,属于是一种英语语言游戏,形式是在英语上加上一点规则使发音改变,让大人们听不懂,从而完成孩子们独懂的交流。文献【76】是雅虎的工程师们于2008年发表在SIGMOD的一篇论文,论文的题目是“Pig Latin:并不是太老外的一种数据语言”,言外之意,他们发明了一种数据处理的“黑话”——Pig Latin,一开始你可能不懂,等你熟悉了,就会发现这种数据查询语言的乐趣所在)。

Pig77】 – 这是另外一篇由雅虎工程师们撰写的有关使用Pig经验的论文,文章介绍了如果利用Pig在Map-Reduce上构建一个高水准的数据流分析系统。

Hive78】 –该文献是Facebook数据基础设施研究小组撰写的一篇学术论文,介绍了Hive的来龙去脉(注:Hive是一个建立于 Hadoop 上的数据仓库基础构架。它用来进行数据的提取、转化和加载(即Extract-Transform-Load ,ETL),它是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制)。

Hive79】–该文献是另外一篇有关Hive的值得一读的好论文。论文作者来自Facebook数据基础设施研究小组,在这篇论文里,可以帮助读者理解Hive的设计理念。

Phoenix80】 –它是 HBase 的 SQL 驱动(注:Phoenix可将 SQL 查询转成 HBase 的扫描及相应的动作。文献【80】是关于在Hbase上部署SQL的幻灯片文档)。

Map Reduce上的连接(join算法81】–该文献介绍了在Hadoop环境下的各种并行连接算法,并对它们的性能作出系统性评测。

Map Reduce上的连接算法82】 –这是威斯康星大学和IBM研究团队撰写的综述性文章,文章对在Map Reduce模型下的各种连接算法进行了综合比较。

库(Libraires)

MLlib83】–这是在Spark计算框架中对常用的机器学习算法的实现库,该库还包括相关的测试和数据生成器(注:文献【83】是MLlib的一个幻灯片说明文档)。

SparkR84】–这是AMPLab发布的一个R开发包,为Apache Spark提供轻量级的前端(注:R是一种广泛应用于统计分析、绘图的语言及操作环境。文献【84】是有关SparkR的幻灯片文档)。

Mahout85】 –这是一个功能强大的数据挖掘工具,是一个基于传统Map Reduce的分布式机器学习框架(注:Mahout的中文含义就是“驭象之人”,而Hadoop的Logo正是一头小黄象。很明显,这个库是帮助用户用好Hadoop这头难用的大象。文献【85】是有关Mahout的图书)。

数据集成层(Data Integration)

数据集成框架提供了良好的机制,以协助高效地摄取和输出大数据系统之间的数据。从业务流程线到元数据框架,数据集成层皆有涵盖,从而提供全方位的数据在整个生命周期的管理和治理。

摄入/消息传递(Ingest/Messaging)

Flume86】 –这是Apache旗下的一个分布式的、高可靠的、高可用的服务框架,可协助从分散式或集中式数据源采集、聚合和传输海量日志(注:文献【86】是Apache网站上有关Flume的一篇博客文章)。

Sqoop87】–该系统主要用来在Hadoop和关系数据库中传递数据(注:Sqoop目前已成为Apache的顶级项目之一。通过Sqoop,可以方便地将数据从关系数据库导入到HDFS,或反之亦可。文献【87】是有关Sqoop的幻灯片说明文档)。

Kafka88】 –这是由LinkedIn开发的一个分布式消息系统(注:由Scala编写而成的Kafka,由于可水平扩展、吞吐率高等特性,得到广泛应用。文献【88】是LindedIn的工程师们在2011年发表于NetDB的会议论文)。

ETL/工作流

ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程,是构建数据仓库的重要一环。

Crunch89】–这是Apache旗下的一套Java API函数库,它能够大大简化编写、测试、运行MapReduce 处理工作流的程序(注:文献【89】是有关Crunch的幻灯片解释文档)。

Falcon90】– 这是Apache旗下的Falcon大数据管理框架,可以帮助用户自动迁移和处理大数据集合(注:文献【90】是一份关于Falcon技术预览报告)。

Cascading91】 –这是一个架构在Hadoop上的API函数库,用来创建复杂的可容错的数据处理工作流(注:文献【91】是关于Hadoop上的Cascading的概论和技术随笔)。

Oozie92】–是一个工作流引擎,用来协助Hadoop作业管理(注:Oozie字面含义是驯象之人,其寓意和Mahout一样,帮助用户更好地搞定Hadoop这头大象。文献【92】是Apache网站上有关Oozie的官方文档)。

元数据(Metadata)

HCatalog93】– 它提供了面向Apache Hadoop的数据表和存储管理服务(注:Apache HCatalog提供一个共享的模式和数据类型的机制,它抽象出表,使用户不必关心数据怎么存储,并提供了可操作的跨数据处理工具。文献【93】是Apache网站有关Hcatalog的官方说明文档)。

序列化(Serialization)

Protocol Buffers94】 –由Google推广的一种与语言无关的、对结构化数据进行序列化和反序列化的机制(注:Protocol Buffers可用于通讯协议、数据存储等领域的语言及平台无关、可扩展的序列化结构数据格式。文献【94】是有关Protocol Buffers幻灯片文档)。

Avro95】 –这是一个建模于Protocol Buffers之上的、Hadoop生态系统中的子项目(注:Avro本身既是一个序列化框架,同时也实现了RPC的功能)。

操作框架(Operational Frameworks)

最后,我们还需要一个操作性框架,来构建一套衡量标准和测试基准,从而来评价各种计算框架的性能优劣。在这个操作性框架中,还需要包括性能优化工具,借助它来平衡工作负载。

监测管理框架(Monitoring Frameworks)

OpenTSDB96】 –这是构建于HBase之上的实时性能评测系统(注:文献【96】提供了OpenTSDB的简要概述,介绍了OpenTSDB的工作机理)。

Ambari97】– 这是一款基于Web的系统,支持Apache Hadoop集群的供应、管理和监控(注:文献【97】阐述了Ambari架构的设计准则)。

基准测试(Benchmarking)

YCSB98】 –该文献是一篇使用YCSB对NoSQL系统进行性能评估的期刊论文(注:YCSB是雅虎云服务基准测试(Yahoo! Cloud Serving Benchmark)的简写。见名知意,它是由雅虎出品的一款通用云服务性能测试工具)。

GridMix99】 –该系统通过运行大量合成的作业,对Hadoop系统进行基准测试,从而获得性能评价指标(注:文献是Apache网站有关GridMix的官方说明文档)。

最后一篇文献是有关大数据基准测试的综述文章100】,文章讨论了基准测试的最新技术进展以及所面临的几个主要挑战。

译者寄语:

在你迈步于大数据的旅途中,真心希望这些文献能助你一臂之力。但要知道,有关大数据的文献,何止千万,由于个人精力、能力有限,有些领域也不甚熟稔,故难免会挂一漏万。如有疏忽,漏掉你的大作,还请你海涵。最后,希望这些文献能给你带来“学而时习之,不亦乐乎”的快感!

译者介绍:张玉宏,博士。2012年毕业于电子科技大学,现执教于河南工业大学。中国计算机协会(CCF)会员,ACM/IEEE会员。主要研究方向为高性能计算、生物信息学,主编有《Java从入门到精通》一书。

原文来自:LinkeDin