十年大数据专家用10小时就讲完了Spark,共2.2G,附Spark技术文档

前言

SPARK是一种安全的、经正式定义的编程语言。

Spark围绕的核心概念,是弹性分布式数据集(RDD),一个有容错机制,可以被并行操作的集合。目前有两种类型的RDD: 并行集合(Parrallelized Collections),接收一个已经存在的Scala集合,在它上面运行各种并发计算; Hadoop数据集(Hadoop DataSets),在一个文件的每条记录上,运行各种函数。只要文件系统是Hdfs,或者hadoop支持的任意存储系统。这两种RDD都可以通过相同的方式进行操作。

Spark特性

Spark通过在数据处理过程中成本更低的洗牌(Shuffle)方式,将MapReduce提升到一个更高的层次。利用内存数据存储和接近实时的处理能力,Spark比其他的大数据处理技术的性能要快很多倍。

Spark还支持大数据查询的延迟计算,这可以帮助优化大数据处理流程中的处理步骤。Spark还提供高级的API以提升开发者的生产力,除此之外还为大数据解决方案提供一致的体系架构模型。

Spark将中间结果保存在内存中而不是将其写入磁盘,当需要多次处理同一数据集时,这一点特别实用。Spark的设计初衷就是既可以在内存中又可以在磁盘上工作的执行引擎。当内存中的数据不适用时,Spark操作符就会执行外部操作。Spark可以用于处理大于集群内存容量总和的数据集。

Spark会尝试在内存中存储尽可能多的数据然后将其写入磁盘。它可以将某个数据集的一部分存入内存而剩余部分存入磁盘。开发者需要根据数据和用例评估对内存的需求。Spark的性能优势得益于这种内存中的数据存储。

Spark的其他特性包括:

支持比Map和Reduce更多的函数。优化任意操作算子图(operator graphs)。可以帮助优化整体数据处理流程的大数据查询的延迟计算。提供简明、一致的Scala,Java和Python API。提供交互式Scala和Python Shell。目前暂不支持Java。

Spark是用Scala程序设计语言编写而成,运行于Java虚拟机(JVM)环境之上。目前支持如下程序设计语言编写Spark应用:

ScalaJavaPythonClojureR

Spark生态系统

除了Spark核心API之外,Spark生态系统中还包括其他附加库,可以在大数据分析和机器学习领域提供更多的能力。

这些库包括:

Spark Streaming:Spark Streaming基于微批量方式的计算和处理,可以用于处理实时的流数据。它使用DStream,简单来说就是一个弹性分布式数据集(RDD)系列,处理实时数据。Spark SQL:Spark SQL可以通过JDBC API将Spark数据集暴露出去,而且还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。用户还可以用Spark SQL对不同格式的数据(如JSON,Parquet以及数据库等)执行ETL,将其转化,然后暴露给特定的查询。Spark MLlib:MLlib是一个可扩展的Spark机器学习库,由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语。Spark GraphX:GraphX是用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多重图,扩展了Spark RDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的Pregel API变体。此外,GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。

除了这些库以外,还有一些其他的库,如BlinkDB和Tachyon。

BlinkDB是一个近似查询引擎,用于在海量数据上执行交互式SQL查询。BlinkDB可以通过牺牲数据精度来提升查询响应时间。通过在数据样本上执行查询并展示包含有意义的错误线注解的结果,操作大数据集合。

Tachyon是一个以内存为中心的分布式文件系统,能够提供内存级别速度的跨集群框架(如Spark和MapReduce)的可信文件共享。它将工作集文件缓存在内存中,从而避免到磁盘中加载需要经常读取的数据集。通过这一机制,不同的作业/查询和框架可以以内存级的速度访问缓存的文件。此外,还有一些用于与其他产品集成的适配器,如Cassandra(Spark Cassandra 连接器)和R(SparkR)。Cassandra Connector可用于访问存储在Cassandra数据库中的数据并在这些数据上执行数据分析。

下图展示了在Spark生态系统中,这些不同的库之间的相互关联。

Spark的体系架构

Spark体系架构包括如下三个主要组件:

数据存储API管理框架

接下来让我们详细了解一下这些组件。

数据存储:

Spark用HDFS文件系统存储数据。它可用于存储任何兼容于Hadoop的数据源,包括HDFS,HBase,Cassandra等。

API:

利用API,应用开发者可以用标准的API接口创建基于Spark的应用。Spark提供Scala,Java和Python三种程序设计语言的API。

Spark学习路线

spark-core、复习hadoop生态、梳理术语、hadoopRDD 源码分析

spark-core、wordcount案例源码分析、图解

spark-core、集合操作API、pvuv分析、RDD源码分析

spark-core、聚合计算API、combineByKey、分区调优

spark-core、二次排序、分组取TopN、算子综合应用

spark-core、集群框架图解、角色功能介绍、官网学习 、搭建

spark-core、history服务、standaloneHA、资源调度参数

spark-core、基于yarn的集群搭建、配置、资源调度参数、优化jars

spark-core-源码、RpcEnv、standaloneMaster启动分析

spark-core-源码、Worker启动、sparksubmit提交、Driver启动

spark-core-源码、Application注册、Executor资源申请

spark-core-源码、sparkContext、DAGScheduler、stage划分

spark-core-源码、TaskScheduler、Executor运行Task、SparkEnv

spark-core-源码、MemoryManager、BlockManager

spark-core-源码、Dependency、SortShuffleManager

spark-core-源码、SortShuffleWriter、内存缓冲区buffer

spark-core-源码、SortShuffleWriter、内存缓冲区buffer

spark-core-源码、UnsafeShuffleWriter、Tungsten、Unsafe、堆外

spark-core-源码、ShuffleReader、Tracker、Scheduler完整调度

spark-core-源码、RDD持久化、检查点、广播变量、累加器

spark-core-源码、RDD持久化、检查点、广播变量、累加器

spark-sql、大数据中的SQL组成原理

spark-sql、datafram到dataset开发

spark-sql、整合hive的metastore搭建企业级数仓1

spark-sql、整合hive的metastore搭建企业级数仓2

spark-sql、复杂sql、函数、自定义函数、开窗over函数、OLAP

spark-sql-源码、sql解析、dataset到rdd的执行计划

spark-sql-源码、antlr4的sql解析、AST语法树的逻辑到物理转换

spark-sql-源码、逻辑计划、优化器、物理计划、转换RDD

spark-streaming、流式计算之微批计算原理及standalone

spark-streaming、api、ha、检查点、窗口等机制

spark-streaming、整合MQ-kafka开发

spark-streaming、源码分析、流式微批任务的调度原理

spark思维导图

Spark2.2G学习视频


另外还有SparkPDF技术文档赠送

需要Spark学习路线、2.2G学习视频和PDF技术文档的小伙伴,就可以转发此文让更多的人受益,并且关注一下小编因为还会持续分享,最后私信小编“文档”来进行获取吧!