20年清华扫地僧,整理的Storm、Spark学习笔记,面试官:拿来看看

写在前面

大数据并不是一个突如其来的时兴科技词语,而是在厚积薄发中不断演变,时机到来时一下变得广为人知。传统数据库和数据仓库的统治地位本来看上去牢不可破,随着Hadoop等大数据技术的日趋成熟,这种情况到了终结的时候。

作为当前最受关注的实时大数据开源平台项目,Storm和Spark都能为广大潜在用户提供良好的实时大数据处理功能。除在功能方面的部分交集外,Storm、 Spark 还各自拥有独特的特性与市场定位。

 

企业过去曾执迷于数据仓库的开发。通过这些数据仓库,企业努力从每个可能的数据源获取数据并存储下来,再利用各种商业智能工具对数据仓库中存储的数据进行分析。但是开发数据仓库是一个复杂、耗时和大开销的过程,需要相当程度的资金和时间投入。Hadoop及其生态系统的涌现无疑为海量大数据问题的处理提供了一种新的方法或架构,通过这种低成本、可伸缩的解决方案,过去需要数天时间处理的成TB数据将在几小时内被处理完毕。

 

为应对这些企业实时数据分析的应用场景,出现了一些高性能、易于使用的开源平台。Apache Storm和Apache Spark是其中最为引人注目的代表性平台,能够为广大相关用户提供实时数据处理和分析功能。这两个项目都归属于Apache 软件基金会。尽管有部分功能重叠,这两个工具平台仍保持着各自的特色和不同功能。

 

相信看到这里,大家应该对Hadoop、Storm和Spark的学习内容及路线有了一定认识,那现在是不是就差一篇学习Storm和Spark的宝典了呢?

主要结构

本篇结合真实的大数据用例,为读者提供了快速设计、实施和部署实时分析所需的技巧,主要涉及以下内容:

  • 探讨大数据技术和框架。
  • 比照实时分析与批量分析的应用情景,应对大数据实践所面临的挑战。
  • 采用Apache Storm的编程范式开发处理、分析实时数据的现实应用。
  • 接受处理实时事务性数据。
  • 针对不同任务和产品部署情况,优化Apache Storm实现。
  • 使用Amazon Kinesis和Elastic MapReduce进行数据的处理和流传递。
  • 使用Spark SQL进行交互式、探索式的数据分析。
  • 应用Spark Streaming进行实时分析。
  • 为实时和批量分析开发通用型的企业架构和应用。

整体预览

本篇根据业务应用需求选用恰当的技术平台,既涵盖了不同实时数据处理框架和技术的基础知识,又论述了大数据批量及实时处理的差异化细节,还深入探讨了使用Storm、Spark 进行大数据处理的技术和程序设计概念。

以丰富的应用场景及范例说明如何利用Storm 进行实时大数据分析,既涉及了Storm的组件及关键概念内部实现的基础,又整合了Kafka来处理实时事务性数据,还探讨了Storm微小批处理抽象延伸的Trident框架和性能优化。此外,包括了使用Kinesis服务在亚马逊云上处理流数据的内容。本篇后半部分着重介绍了如何利用Spark为实时和批量分析开发通用型的企业架构和应用,既可通过RDD编程轻松实现数据转换和保存操作,亦介绍了Spark SQL访问数据库的实践案例,还扩展了Spark Streaming 来分析流数据,最后利用Spark Streaming和Spark批处理等实现了实时批处理兼顾的Lambda架构。

第1章:大数据技术前景及分析平台

 

本章探讨了大数据技术领域的各个方面。已经讨论过大数据环境中所使用的主要术语、定义、缩略语、组件和基础设施,还描述了大数据分析平台的架构。此外,还从顺序处理到批处理,到分布式,再到实时处理探讨了大数据的各种进深计算方法。在本章结尾,相信大家者现在已经熟悉了大数据及其特点。


第2章:熟悉Storm

 

本章涉及不少Storm及其历史沿革等方面内容,介绍了Storm的组件以及Storm某些关键概念的内部实现。其中浏览分析了实际的代码,现在希望大家可以搭建Storm(本地版和集群版)并运行Storm,编程部分基本范例。


第3章:用Storm处理数据

 

本章重点在于让读者熟悉Kafka及其基础知识。此外,还整合了Kafka和Storm,探索了Storm的文件和套接字等其他数据源,然后介绍了可靠性和锚定等概念,还对Storm的联结和批处理模式建立了理解。最后,通过Storm与数据库的集成,了解并实现了Storm中的持久性。本章介绍了一些动手练习示例,建议大家自行尝试实现。


第4章:Trident概述和Storm性能优化

 

本章重点在于让大家熟悉Trident框架,以其作为Storm微小批处理抽象的延伸。我们已经看到了Trident 的各种关键概念和操作,然后还探索了Storm 内部与LMAX、ZeroMQ和Netty的联系。最后总结了Storm 性能优化方面的内容。


第5章:熟悉Kinesis

 

在本章中,讨论了Kinesis用于处理实时数据馈送的架构。使用AWSAPI探索了Kinesis流生产者和消费者的开发。最后,还提到诸如KPL和KCL此类更高级的API以及它们的示例,来作为创建Kinesis生产者和消费者的推荐机制。


第6章:熟悉Spark

 

 

在本章中,讨论了Spark及其各种组件的架构,还谈到了Spark框架的一些核心组件,如RDD。此外,讨论了Spark 及其各种核心API的包装结构,还配置了Spark 集群,并用Scala和Java编写并执行了第一个Spark作业。


第7章:使用RDD编程

 

在本章中,讨论了SparkRDDAPI提供的各种转换及操作,还讨论了各种现实问题,并通过使用Spark转换及操作来解决它们。最后,还讨论了Spark提供的用于性能优化的持久性/高速缓存。


第8章:Spark的SQL查询引擎一Spark SQL

 

 

本章涵盖了Spark SQL架构和各种组件在内的多个方面,还讨论了在Scala中编写Spark SQL作业的完整过程,同时讨论了将Spark RDD转换为DataFrame的各种方法。在本章的中间部分,执行了Spark SQL的各种示例,包括使用如Hive/Parquet这些不同数据格式以及如模式演化和模式合并等重要方面,最后讨论了Spark SQL代码/查询的性能调优的各个方面。


第9章:用Spark Streaming分析流数据

 

在本章中,讨论了Spark Streaming的各个方面。讨论了Spark Streaming的架构、组件和封装结构,还编码和执行了第一个Spark Streaming应用程序,也使用Spark Streaming和SparkSQL对芝加哥犯罪数据进行了实时分析。


第10章:介绍Lambda架构

 

在本章中讨论了Lambda架构的各个方面。讨论了Lambda架构的各个层/组件所执行的角色,还利用Spark和Cassandra来设计、开发和执行了Lambda架构的所有层。


适用读者

本篇的读者最好拥有Java或Scala语言的编程经验,对Apache Hadoop等代表性分布式计算平台的基础知识亦有一定了解。

本篇主要面向应用开源技术进行实时分析应用和框架开发的大数据架构师、开发者及程序员群体。这些有实力的开发者阅读本篇时可以运用Java或Scala语言的功底来进行高效的核心要素和应用编程实现。

本篇会帮助读者直面不少大数据方面的难点及挑战。不但包括应用于实时/准实时流数据及高频采集数据处理分析的大量工具和技术,而且涵盖了Apache Storm、ApacheSpark、Kinesis 等各种工具和技术的内存分布式计算范式。

后记

任何技术都不是孤立发展的,大数据更是如此。在如今的大数据时代,任何项目的实现,基本上都需要应用大数据,而在此大潮中,我们又能把握住多少机会呢?

有对文中提到的PDF文档有兴趣的朋友,请转发文章并关注小编,私信回复【学习】即可哦~~~

喜欢小编请多多点赞评论分享,予人玫瑰,手有余香,让更多的的人看到获益。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章