关于大数据:图解大数据-大数据分析挖掘Spark初步

3次阅读

共计 4576 个字符,预计需要花费 12 分钟才能阅读完成。

作者:韩信子 @ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/84
本文地址:http://www.showmeai.tech/article-detail/173
申明:版权所有,转载请分割平台与作者并注明出处

1.Spark 是什么

学习或做大数据开发的同学,都据说或者应用过 Spark,从这部分开始,ShowMeAI 带大家一起来学习一下 Spark 相干的常识。

Apache Spark 是一种用于大数据工作负载的分布式开源解决零碎。它应用内存中缓存和优化的查问执行形式,可针对任何规模的数据进行疾速剖析查问。Spark 基于内存计算,进步了在大数据环境下数据处理的实时性,同时保障了高容错性和高可伸缩性,容许用户将 Spark 部署在大量的便宜硬件之上,造成集群。

Spark 提供应用 Java、Scala、Python 和 R 语言的开发 API,反对跨多个工作负载重用代码—批处理、交互式查问、实时剖析、机器学习和图形处理等。Apache Spark 曾经成为最受欢迎的大数据分布式解决框架之一。

  • 《更多材料 → 数据迷信工具速查 | Spark 使用指南 (RDD 版)》
  • 《更多材料 → 数据迷信工具速查 | Spark 使用指南 (SQL 版)》

2.Spark 的特点

Apache Spark 是个开源和兼容 Hadoop 的集群计算平台。由加州大学伯克利分校的 AMPLabs 开发,作为 Berkeley Data Analytics Stack(BDAS)的一部分,当下由大数据公司 Databricks 保驾护航,更是 Apache 旗下的顶级我的项目。

1)Apache Spark 堆栈中的不同组件

2)Apache Spark 的劣势

  • 更高的性能 :因为数据被加载到集群主机的分布式内存中。数据能够被疾速的转换迭代,并缓存用以后续的频繁拜访需要。在数据全副加载到内存的状况下,Spark 有时能达到比 Hadoop 快 100 倍的数据处理速度,即便内存不够寄存所有数据的状况也能快 Hadoop 10 倍。
  • 宽泛的反对与易用性 :通过建设在 Java、Scala、Python、SQL(应答交互式查问)的规范 API 以不便各行各业应用,同时还含有大量开箱即用的机器学习库。
  • 多场景通用性 :Spark 集成了一系列的库,包含 SQL 和 DataFrame 帮忙你疾速实现数据处理;Mllib 帮忙你实现机器学习工作;Spark streaming 做流式计算。
  • 多平台反对 :Spark 能够跑在 Hadoop、Apache Mesos、Kubernetes 等之上,能够从 HDFS、Alluxio、Apache Cassandra、Apache Hive 以及其余的上百个数据源获取数据。

3.Spark 作业与调度

Spark 的外围是作业和任务调度零碎,它能够保障各种工作高效残缺地运行。

1)Spark 作业和任务调度零碎

Spark 通过作业和任务调度零碎,可能无效地进行调度实现各种工作,底层的奇妙设计是对工作划分 DAG 和容错,使得它对低层到顶层的各个模块之间的调用和解决显得熟能生巧。

2)基本概念一览

概念 解释
作业(Job)RDD 中由口头操作所生成的一个或多个调度阶段。
调度阶段(Stage) 每个 Job 作业会因为 RDD 之间的依赖关系拆分成多组工作汇合,称为调度阶段,简称阶段,也叫做工作集(TaskSet)。调度阶段的划分是由 DAGScheduler(DAG 调度器)来划分的。调度阶段有 Shuffle Map Stage 和 Result Stage 两种。
工作(Task) 散发到 Executor 上的工作工作,是 Spark 理论执行利用的最小单元。Task 会对 RDD 的 partition 数据执行指定的算子操作,比方 flatMap、map、reduce 等算子操作,造成新 RDD 的 partition。
DAGScheduler(DAG 调度器)DAGScheduler 是面向 Stage(阶段)的任务调度器,负责接管 Spark 利用提交的作业,依据 RDD 的依赖关系划分调度阶段,并提交 Stage(阶段)给 TaskScheduler。
TaskScheduler(任务调度器)TaskScheduler 是面向工作的调度器,它接管 DAGScheduler 提交过去的 Stage(阶段),而后把工作散发到 Worker 节点运行,由 Worker 节点的 Executor 来运行该工作。

3)Spark 作业和调度流程

Spark 的作业调度次要是指基于 RDD 的一系列操作形成一个作业,而后在 Executor 中执行。这些操作算子次要分为转换操作和口头操作,对于转换操作的计算是 lazy 级别的,也就是提早执行,只有呈现了口头操作才触发作业的提交。

在 Spark 调度中最重要的是 DAGScheduler 和 TaskScheduler 两个调度器:其中 DAGScheduler 负责工作的逻辑调度,将 Job 作业拆分成不同阶段的具备依赖关系的工作集,而 TaskScheduler 则负责具体任务的调度执行。

4.RDD / DataFrame 与 Dataset

1)Spark API 的历史

Apache Spark 中有 RDD,DataFrame 和 Dataset 三种不同数据 API,倒退如下:

RDD

  • RDD 是 Spark 最早提供的面向用户的次要 API。
  • 从根本上来说,一个 RDD 就是数据的一个不可变的分布式元素汇合,在集群中跨节点散布,能够通过若干提供了转换和解决的底层 API 进行并行处理。

DataFrame

  • 与 RDD 类似,DataFrame 也是数据的一个不可变分布式汇合。
  • 但与 RDD 不同的是,数据都被组织到有名字的列中,就像关系型数据库中的表一样。
  • 设计 DataFrame 的目标就是要让对大型数据集的解决变得更简略,它让开发者能够为分布式的数据集指定一个模式,进行更高层次的形象。它提供了特定畛域内专用的 API 来解决你的分布式数据,并让更多的人能够更不便地应用 Spark,而不仅限于业余的数据工程师。

Dataset

  • 从 Spark 2.0 开始,Dataset 开始具备两种不同类型的 API 特色:有明确类型的 API 和无类型的 API。
  • 从概念上来说,能够把 DataFrame 当作一些通用对象 Dataset[Row] 的汇合的一个别名,而一行就是一个通用的无类型的 JVM 对象。
  • 与之造成比照,Dataset 就是一些有明确类型定义的 JVM 对象的汇合,通过你在 Scala 中定义的 Case Class 或者 Java 中的 Class 来指定。

2)Spark API 简介

在 Spark 2.0 中对 Dataframe 和 Dataset 进行了对立,如下图所示:

3)Spark 的逻辑构造

Spark 的整体逻辑构造如下图所示,蕴含不同的层级及组成部分:

5.Spark2.0 与 SparkSession

1)SparkSession 的引入

Spark2.0 中引入了 SparkSession 的概念,它为用户提供了一个对立的切入点来应用 Spark 的各项性能,借助 SparkSession,咱们能够应用 DataFrame 和 Dataset 的各种 API,利用 Spark 的难度也大大降落。

在 Spark 的晚期版本,SparkContext 是进入 Spark 的切入点,RDD 数据基于其创立。但在流解决、SQL 等场景下有其余的切入点,汇总如下:

  • RDD,创立和操作应用 SparkContext 提供的 API。
  • 流解决,应用 StreamingContext。
  • SQL,应用 sqlContext。
  • Hive,应用 HiveContext。

在 Spark 高版本中,DataSet 和 DataFrame 提供的 API 逐步成为新的规范 API,须要一个切入点来构建它们。所以,Spark 2.0 引入了一个新的切入点 (entry point):SparkSession。

  • SparkSession 本质上是 SQLContext 和 HiveContext 的组合(将来可能还会加上 StreamingContext)。
  • 在 SQLContext 和 HiveContext 上可用的 API,在 SparkSession 上同样能够应用。
  • SparkSession 外部封装了 SparkContext,计算实际上由 SparkContext 实现。

2)创立 SparkSession

6. 结构化流与连续性利用

1)Continuous Applications

Spark2.0 中提出一个概念,Continuous Applications(间断应用程序)。

Spark Streaming 等流式解决引擎,致力于流式数据的运算:比方通过 map 运行一个办法来扭转流中的每一条记录,通过 reduce 能够基于工夫做数据聚合。然而很少有只在流式数据上做运算的需要,流式解决往往是一个大型利用的一部分。

Continuous Applications 提出后,实时运算作为一部分,不同零碎间的交互等也能够由 Structured Streaming 来解决。

2)Structured Streaming

Structured Streaming 是一个建设在 Spark Sql 引擎上的可扩大、高容错的流式解决引擎。它使得能够像对静态数据进行批量解决一样来解决流式数据。

7. 参考资料

  • 数据迷信工具速查 | Spark 使用指南 (RDD 版) http://www.showmeai.tech/article-detail/106
  • 数据迷信工具速查 | Spark 使用指南 (SQL 版) http://www.showmeai.tech/article-detail/107
  • 张安站著,《Spark 技术底细》,人民邮电机械工业出版社,2015
  • Tomasz Drabas / Denny Lee 著,《Learning PySpark》,2017
  • Spark 基本概念疾速入门,https://www.jianshu.com/p/e41b18a7e202
  • Spark 编程指南,http://spark.apachecn.org/docs/cn/2-2).0/rdd-programming-guide.html

ShowMeAI 相干文章举荐

  • 图解大数据 | 导论:大数据生态与利用
  • 图解大数据 | 分布式平台:Hadoop 与 Map-reduce 详解
  • 图解大数据 | 实操案例:Hadoop 零碎搭建与环境配置
  • 图解大数据 | 实操案例:利用 map-reduce 进行大数据统计
  • 图解大数据 | 实操案例:Hive 搭建与利用案例
  • 图解大数据 | 海量数据库与查问:Hive 与 HBase 详解
  • 图解大数据 | 大数据分析开掘框架:Spark 初步
  • 图解大数据 | Spark 操作:基于 RDD 的大数据处理剖析
  • 图解大数据 | Spark 操作:基于 Dataframe 与 SQL 的大数据处理剖析
  • 图解大数据 | 综合案例:应用 spark 剖析美国新冠肺炎疫情数据
  • 图解大数据 | 综合案例:应用 Spark 剖析开掘批发交易数据
  • 图解大数据 | 综合案例:应用 Spark 剖析开掘音乐专辑数据
  • 图解大数据 | 流式数据处理:Spark Streaming
  • 图解大数据 | Spark 机器学习 (上)- 工作流与特色工程
  • 图解大数据 | Spark 机器学习 (下)- 建模与超参调优
  • 图解大数据 | Spark GraphFrames:基于图的数据分析开掘

ShowMeAI 系列教程举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

正文完
 0