Spark的详细概述

目录

spark是什么?

spark特点:

spark集群的体系结构

(a)Master:接收任务请求,分发任务

(b)Worker:本节点任务调度,资源管理。默认占用该节点所有资源

(c )Driver:客户端

(a)Spark-submit:

(b)spark-shell:

spark的生态圈

spark的部署模式:Spark独立服务器模式、基于YARN的Spark、基于Mesos的Spark。

3. 基于Mesos的Spark

spark的架构

Spark作业运行流程  Standalone模式运行流程

Spark核心数据集RDD

mapreduce和spark的区别


spark是什么?

 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。

目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。

spark的发展史

2009年,Spark诞生于伯克利大学的AMPLab实验室。最出Spark只是一个实验性的项目,代码量非常少,属于轻量级的框架。

2010年,伯克利大学正式开源了Spark项目。

2013年,Spark成为了Apache基金会下的项目,进入高速发展期。第三方开发者贡献了大量的代码,活跃度非常高。

2014年,Spark以飞快的速度称为了Apache的顶级项目。

2015年~,Spark在国内IT行业变得愈发火爆,大量的公司开始重点部署或者使用Spark来替代MapReduce、Hive、Storm等传统的大数据计算框架。

spark特点:

快速:

一般情况下,对于迭代次数较多的应用程序, Spark 程序在内存中的运行速度是 Hadoop MapReduce 运行速度的 100 多倍,在磁盘上的运行速度是 Hadoop MapReduce 运行速度的 10 多倍。

易用性:Spark支持使用ScalaPythonJavaR语言快速编写应用。同时Spark提供超过80高阶算子,使得编写并行应用程序变得容易并且可以在ScalaPythonR的交互模式下使用Spark

通用性:Spark可以与SQLStreaming及复杂的分析良好结合。Spark还有一系列的高级工具,包括Spark SQLMLlib(机器学习库)、GraphX(图计算)和Spark Streaming(流计算),并且支持在一个应用中同时使用这些组件。

随处运行:用户可以使用Spark的独立集群模式运行Spark,也可以在EC2(亚马逊弹性计算云)、Hadoop YARN或者Apache Mesos上运行Spark。并且可以从HDFSCassandraHBaseHiveTachyon和任何分布式文件系统读取数据。

兼容性

Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

spark最大的特点:基于内存

spark集群的体系结构

(1)结构

(a)Master:接收任务请求,分发任务
(b)Worker:本节点任务调度,资源管理。默认占用该节点所有资源
  • Spark对内存没有很好管理,容易出现OOM。Spark把内存管理交给应用程序。
  • Spark架构出现单点故障问题,通过HA解决。
(c )Driver:客户端

(2)启动方式

(a)Spark-submit:

    用于提交Spark 任务。每个任务是一个jar。

(b)spark-shell:

    类似于 REPL

spark的生态圈

         (1)Spark Core

Spark的核心,提供底层框架及核心支持。

(2) BlinkDB

一个用于在海量数据上进行交互式SQL查询的大规模并行查询引擎,允许用户通过权衡数据精度缩短查询响应时间,数据的精度将被控制在允许的误差范围内。

(3) Spark SQL

可以执行SQL查询,支持基本的SQL语法和HiveQL语法,可读取的数据源包括HiveHDFS、关系数据库(如MySQL)等。

         (4)Spark Streaming

可以进行实时数据流式计算。

          (5)MLBase

Spark生态圈的一部分,专注于机器学习领域,学习门槛较低。

MLBase4部分组成:MLlibMLIML OptimizerMLRuntime

MLlib部分算法如下。

           (6)Spark GraphX

图计算的应用在很多情况下处理的数据量都是很庞大的。如果用户需要自行编写相关的图计算算法,并且在集群中应用,难度是非常大的。而使用GraphX即可解决这个问题,因为它内置了许多与图相关的算法,如在移动社交关系分析中可使用图计算相关算法进行处理和分析。

            (7)SparkR

AMPLab发布的一个R语言开发包,使得R语言编写的程序不只可以在单机运行,也可以作为Spark的作业运行在集群上,极大地提升了R语言的数据处理能力。

spark的部署模式:Spark独立服务器模式、基于YARN的Spark、基于Mesos的Spark。

1.Spark独立服务器模式
独立服务器模式使用内置的调度器,因而不需要任何外部调度器,如YARN或Mesos。要以独立服务器模式安装Spark,需要将Spark的二进制安装文件复制到集群的所有机器上。
独立服务器模式下,客户端可通过spark-submit或Spark shell与集群通信。无论那种情况,driver都会与Spark主节点进行通信,以便获取worker节点的信息,此后executor将在worker节点上启动来执行应用。多个客户端可同时与集群通信,然后再worker节点上创建各自的executor,每个客户端都有自己的driver组件。

2.基于YARN的Spark
在YARN模式下,客户段与YARN的资源管理器进行通信,从而获得容器来运行Spark应用。可将其视为一个小型Spark集群。在使用YARN运行Spark应用时,可使用YARN客户端模式或YARN集群模式。

2.1 YARN客户端模式
在YARN客户端模式下,driver在集群之外的节点(一般都是客户端节点)上运行。driver首先需要与资源管理器通信,从而请求资源并运行Spark作业。资源管理器会分配容器(0号容器)并响应driver。driver在0号容器中启动Spark应用主节点。Spark应用主节点在资源管理器分配的容器中创建executor。
YARN容器可位于集群中由节点管理器控制的任一节点,因此所有的资源分配都由资源管理器负责。
Spark应用主节点与资源管理器进行沟通,以获取其他容器来启动executor。

2.2 YARN集群模式
在集群模式下,driver在集群中的某个节点(一般是应用程序的主节点)上运行。客户端首先与资源管理器通信,请求资源并运行Spark作业。资源管理器会分配容器(0号容器)并响应客户端。然后客户端向集群提交代码,并在0号容器内启动driver和Spark应用主节点。driver与Spark应用主节点协同工作,然后在由资源管理器分配的容器上创建executor。
YARN容器可位于由节管理器控制的任何容器上。因此所有的资源分配都由资源管理器负责。
Spark应用主节点与资源管理器进行沟通,以获取其他容器来启动executor。
在YARN集群模式下,没有shell,因为driver本身在YARN内部。

3. 基于Mesos的Spark

基于Mesos的部署模式与Spark的独立服务器模式蕾丝。driver与Mesos的主节点通信,然后该主节点分配用于运行executor的资源。然后driver会与executor通信。
Mesos中的driver会先与主节点通信,然后从Mesos所有的从节点上处理请求。
将容器分配给Spark作业后,driver会让executor启动,然后再executor中运行代码。如果Spark作业运行完成,而driver还存在,就会通知Mesos主节点,然后Mesos从属节点中所有以容器形式存在的资源都会被释放。
多个客户端与集群交互,从而在从属节点上创建格子的executor。每个客户端由自己的driver组件。


spark的架构

基本组件:

(1) 客户端

用户提交作业的客户端

          (2)Driver

运行Applicationmain()函数并创建SparkContext。

          (3)SparkContext

整个应用的上下文,控制应用的生命周期。

          (4)Cluster Manager

资源管理器,即在集群上获取资源的外部服务,目前主要有StandaloneSpark原生的资源管理器)和YARNHadoop集群的资源管理器)。

          (5)SparkWorker

集群中任何可以运行应用程序的节点,运行一个或多个Executor进程。

          (6)Executor

执行器,在Spark Worker上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executor

          (7)Task

被发送到某个Executor的具体任务。

Spark作业运行流程
 
Standalone
模式运行流程

yarn-cluster 运行流程
yarn-client运行流程

Spark核心数据集RDD

RDDResilient Distributed Datasets弹性分布式数据集),可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)

Spark RDD转换和操作示例

宽依赖与窄依赖

窄依赖:表现为一个父 RDD 的分区对应于一个子 RDD 的分区或者多个父 RDD 的分区对应于一个子 RDD 的分区。

         宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区

RDD Stage划分

stage的划分依据主要是基于Shuffle

mapreduce和spark的区别

都是可以用来处理海量的数据,但是在处理方式和处理速度上存在着差异

spark处理数据是基于内存的,而MapReduce是基于磁盘处理数据的。

MapReduce是将中间结果保存到磁盘中,减少了内存占用,牺牲了计算性能。 Spark是将计算的中间结果保存到内存中,可以反复利用,提高了处理数据的性能。Spark 计算比 MapReduce 快的根本原因在于 DAG 计算模型,

如果计算过程中涉及数据交换,Spark 也是会把 shuffle 的数据写磁盘的!有一个误区,Spark 是基于内存的计算,所以快,这不是主要原因,要对数据做计算,必然得加载到内存,Hadoop 也是如此,只不过 Spark 支持将需要反复用到的数据给 Cache 到内存中,减少数据加载耗时,所以 Spark 跑机器学习算法比较在行(需要对数据进行反复迭代)。

结构化数据:结构化数据是指按照一定的规则和格式进行组织和存储的数据。它具有明确的数据类型和关系,可以通过预定义的模式或模型进行描述和解释。常见的结构化数据包括关系型数据库中的表格数据、电子表格中的数据、XML文件中的数据等。结构化数据通常可以通过查询和分析工具进行处理和分析,从中提取有用的信息和洞察。与结构化数据相对的是非结构化数据,如文本、图像、音频和视频等,它们没有明确的结构和格式,处理和分析起来更加困难。

非结构化数据:

非结构化数据是指没有明确的结构和格式的数据,它不符合传统的表格、行列或关系型数据库的组织形式。非结构化数据的特点是多样性、复杂性和不规则性,常见的非结构化数据包括文本文档、电子邮件、社交媒体帖子、音频和视频文件、图像、日志文件等。

与结构化数据不同,非结构化数据没有明确的数据模型或模式,因此处理和分析非结构化数据更具挑战性。传统的关系型数据库和查询语言无法直接处理非结构化数据,需要使用特定的技术和工具进行处理,如自然语言处理、文本挖掘、图像识别、语音识别等。

非结构化数据在现实生活中广泛存在,例如社交媒体上的用户评论、新闻文章、音频和视频文件中的内容、传感器数据等。对非结构化数据的分析和挖掘可以帮助企业和组织发现隐藏的信息、洞察用户需求、进行情感分析、进行风险评估等。

区别:

(1)数据组织形式:结构化数据按照预定义的模式和格式进行组织,具有明确的数据类型和关系,通常以表格、行列或关系型数据库的形式存储。非结构化数据没有明确的结构和格式,多样性、复杂性和不规则性较高,以文本、图像、音频、视频等形式存在。

(2)数据处理方式:结构化数据可以通过传统的查询语言(如SQL)进行处理和分析,可以进行数据的筛选、排序、聚合等操作。非结构化数据的处理需要使用特定的技术和工具,如自然语言处理、图像识别、语音识别等,以提取有用的信息和洞察。

(3)数据分析能力:结构化数据由于有明确的结构和格式,可以进行较为精确的数据分析和建模,可以进行统计分析、预测建模等。非结构化数据的分析相对更具挑战性,需要使用更复杂的技术和算法,如文本挖掘、情感分析、图像识别等。

(4)数据应用领域:结构化数据常用于企业的业务数据管理、报表生成、决策支持等方面。非结构化数据常用于社交媒体分析、舆情监测、情感分析、图像识别、语音识别等领域。

结构化数据和非结构化数据的应用

结构化数据的应用:

企业数据管理:结构化数据常用于企业的业务数据管理,包括客户信息、销售数据、财务数据等。它们可以通过关系型数据库进行存储和管理,用于业务流程的支持和决策制定。
报表生成和分析:结构化数据可以通过查询和分析工具进行数据提取、筛选、排序和统计,用于生成各种报表和数据分析,支持业务决策和业绩评估。
数据挖掘和预测建模:结构化数据可以用于数据挖掘和预测建模,通过分析历史数据,发现隐藏的模式和关联,进行趋势预测、市场分析、客户行为分析等。

非结构化数据的应用

社交媒体分析:非结构化数据在社交媒体分析中起着重要的作用,可以通过文本挖掘和情感分析技术,了解用户的观点、情感和需求,进行舆情监测、品牌声誉管理等。
图像和视频处理:非结构化数据中的图像和视频可以通过图像识别、目标检测、视频分析等技术进行处理,用于人脸识别、智能监控、图像搜索等应用。
自然语言处理:非结构化数据中的文本可以通过自然语言处理技术进行处理,包括文本分类、实体识别、关系抽取、机器翻译等,用于智能客服、智能助手、文本分析等应用。

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值