大数据沙龙活动武汉站年03月12日(周六)14:00-17:00火爆开讲!当天有大牛出没,活动全程免费参加!倒计时3天,让我们一起期待!
原作者:AnilMadan
来自:csdn
开源(OpenSource)用之于大数据技术,其作用有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用。另一方面,开源也给大数据技术构建了一个异常复杂的生态系统。每一天,都有一大堆“新”框架、“新”类库或“新”工具,犹如雨后春笋般涌出,乱花渐欲“迷”人眼。为了掌控住这些“新玩意”,数据分析的达人们不得不“殚精竭虑”地“学而时习之”。
无论你是一个大数据的布道者,还是一个日臻成熟的技术派,亦或你还在大数据这条路上“小河才露尖尖角”,多花点时间,深入理解一下大数据系统的技术体系演进,对你都会有莫大益处。全方位地理解大数据体系结构中的各个组件,并掌握它们之间的微妙差别,可在处理自己身边的大数据案例时,助你张弛有度,“恢恢乎,其于游刃必有余地矣!”
在过去的几年里,我阅读了很多不错的大数据文献,这些文献陪我成长,助我成功,使我成为一个具备良好教育背景的大数据专业人士。在这里,撰写此文的目的,不限于仅仅和大家分享这些很不错的文献,更重要的是,借此机会,想和大家一起,集众人之智慧,破解大数据开源系统之迷宫。
需要提醒的是,下文提及到的篇参考文献(这些文献中大多都是一些开创性的研究论文),将会为你提供结构性的深度剖析,绝非泛泛而谈。我相信,这可从根本上帮助你深度理解大数据体系组件间的细微差别。但如果你打算“走马观花”般地快速过一遍,了解大数据为何物,对不起,这里可能会让你失望。
那么,准备好了吗?让我们走起!
在介绍这篇文献之前,首先让我们看一下大数据处理的关键架构层(如图1所示):
关键架构层
图1:大数据处理的关键架构层
文件系统层:在这一层里,分布式文件系统需具备存储管理、容错处理、高可扩展性、高可靠性和高可用性等特性。
数据存储层:由于目前采集到的数据,十之有七八为非结构化和半结构化数据,数据的表现形式各异,有文本的、图像的、音频的、视频的等,因此常见的数据存储也要对应有多种形式,有基于键值(Key-Value)的,有基于文档(Document),还有基于列(Column)和图表(Graph)的。如果采用单一的数据库引擎,“一刀切式”的满足所有类型的数据存储需求,通常会严重降低数据库管理的性能。因此,我们需要“兵来将挡,水来土掩”式的、多元的(Polyglot)数据库解决方案(这就好比,如果“兵来了”和“水来了”,都要“将”去挡,遇到“兵”时,“将”可以“酣畅淋漓”,而遇到“水”时,还用“将”去挡,那这个“将”估计就要“舍生取义”了。文献是一本有关NoSQL数据处理的图书)
资源管理层:这一层是为了提高资源的高利用率和吞吐量,以到达高效的资源管理与调度目的。
资源协调层:在本层的系统,需要完成对资源的状态、分布式协调、一致性和资源锁实施管理。
计算框架层:在本层的计算框架非常庞杂,有很多高度专用的框架包含其内,有流式的,交互式的,实时的,批处理和迭代图的(BatchandIterativeGraph,BSP)等。为这些计算框架提供支撑的是运行时引擎,如BDAS(Spark)和Flink等(注:这里的BDAS是指“BerkeleyDataAnalyticsStack”,即伯克利数据分析栈。文献为Spark核心作者IonStoica的讲座幻灯片文档)。
数据分析层:在这一层里,主要包括数据分析(消费)工具和一些数据处理函数库。这些工具和函数库,可提供描述性的、预测性的或统计性的数据分析功能及机器学习模块。
数据集成层:在这一层里,不仅包括管理数据分析工作流中用到的各种适用工具,除此之外,还包括对元数据(Metadata)管理的工具。
操作框架层:这一层提供可扩展的性能监测管理和基准测试框架。
架构的演进
减少数据生产者和消费者之间的处理延迟,一直是现代计算构架不断演进的主要动力。由此,诞生了实时和低延迟处理的计算构架,如Lambda和Kappa等,这类混合架构取长补短,架起传统的批处理层和交互式层之间连接的桥梁。
Lambda-该架构是经典的大数据处理范式,是由南森?马兹(NathanMarz)提出的一个实时大数据处理框架。更多有关Lamda的信息,请读者访问Lambda官方网站。(注:文献是由JamesKinley在轻博客网站Tumblr发表的一篇博文:Lambda架构:构架实时大数据系统的原则)。
Kappa-该计算构架可视为Lambda的一个强有力替代者,Kappa将数据处理的上游移至流式层(注:文献是一篇博客文章,作者是JayKreps是Linkedln的一名在线数据架构技术高管。Kreps认为,虽然Lambda构架的理念很有价值,但终究还是一个临时解决方案。他设计了一个替代架构Kappa,是基于他在Linkedin构建Kafka和Samza的经验设计而成)。
SummingBird-这是一个参考模型,用来桥接在线处理模式和传统处理模式。Summingbird是由Twitter(推特)公司用Scala语言开发的、并开源的大规模数据处理框架,支持开发者以批处理模式(基于Hadoop)或流处理模式(基于Storm),或混合模式(即前两种模式的组合)以统一的方式执行代码。(注:文献是Summingbird的主要设计者OscarBoykin、SamRitchie等人于年发表于知名期刊PVLDB中论文,其中论文的二作SamRitchie大有来头,他是计算机科学界的传奇人物、C语言和Unix的设计者DennisRitchie的侄子)。
在你尚未深入了解下面的各个具体的框架层次之前,建议你认真阅读一下下面的几篇非常有价值的文献,它们帮为你“恶补”一下诸如NoSQL(非结构化)数据存储、数据仓库大规模计算及分布式系统等相关领域的背景知识:
计算中心即计算机(Datacenterasa