一、Spark是什么

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

Apache Spark is a unified analytics engine for large-scale data processing.

  • 2009年诞生于加州大学伯克利分校AMPLab,项目采用Scala编写。
  • 2010年开源
  • 2013年6月成为Apache孵化项目
  • 2014年2月成为Apache顶级项目
 

二、Spark 内置模块(Spark生态)

Spark SQL

是Spark用来操作结构化数据的程序包。

通过 Spark SQL,我们可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。

Spark Streaming:

是Spark用来操作结构化数据的程序包

可以使用SQL或者HQL来对历史数据做交互式查询(即席查询:用户根据自己的需求自定义查询)。

Spark SQL:

支持多种数据源,比如 Hive表,Parquet以及JSON等。

Spark MLlib

构建在Spark之上,提供常见的机器学习(ML)功能的程序库,支持一系列数据挖掘算法。

包括分类、回归、聚类、协同过滤,还提供了模型评估、数据导入等额外的支持功能。

Spark GraghX

图计算(关注事物本身而且关注事物之间的联系)

SparkCore

实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。

Spark Core 中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的 API 定义。

独立调度器/Yarn/Mesos

Spark的资源管理和调度器:

  • Standalone:Spark自带的资源调度器,需要在集群中的每台节点上配置Spark,本地测试环境用
  • Yarn:国内使用最广泛,推荐生产环境使用(★★★★☆)
  • Mesos:国内使用较少,国外使用较多。

三、Spark的特点

1、快

与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。

Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。计算的中间结果是存在于内存中的。

2、易用

Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。

而且Spark支持交互式的Python和Scala的Shell,可以非常方便地在这些Shell中使用Spark集群来验证解决问题的方法。

3、通用

Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。减少了开发和维护的人力成本和部署平台的物力成本。

4、兼容性

Spark可以非常方便地与其他的开源产品进行融合。比如,

  • Spark可以使用Hadoop的Yarn和Apache Mesos作为它的资源管理和调度器
  • 并且可以处理所有Hadoop支持的数据,包括HDFS、Hbase等。
  • 这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。

四、Spark VS Flink

相同点:两者都是大数据处理框架,各自在数据处理领域有着广泛的应用。

不同点:

1、基本特性与优势

Spark速度快:基于内存计算,比传统的磁盘计算更快。

Spark可扩展性强:可以在分布式计算环境中,轻松扩展到大规模数据处理。

Spark处理多种数据:能够处理多种数据类型,包括结构化数据、图形数据和流数据等。

Spark易用性:支持多种编程语言(如java、Scala、Python和R),提供了易于使用的交互式Shell和图形化界面。

Spark通用性强:Spark生态圈(BDAS)包含多个组件,如Spark Core、Spark SQL、Spark Streaming等,提供一站式解决平台。

Flink流处理:是一个高吞吐、高性能、低延时的实时流处理引擎,能够提供毫秒级时延处理能力。

Flink丰富的状态管理:流处理应用需要存储事件或中间结果以供后续处理,Flink具有丰富的状态管理能力。

Flink任务调度与时间机制:根据用户提交的代码StreamGraph,并优化为JobGraph,由JobManager根据ExecutionGraph进行调度。支持三种时间机制(事件时间、注入时间、处理时间)以及watermark机制处理乱序数据。

2、架构与任务调度

  Flink在运行时主要包含JobManager、TaskManager和Slot等组件,并根据用户提价的代码进行任务调度和优化。

  Spark的架构和任务调度机制和Flink有所不同,但其核心也是基于分布式计算环境进行任务分配和执行。

3、容错机制

  Flink使用两阶段提交协议来确保数据处理的“exactly-once”语义,即确保每个事件只被处理一次。

  Spark也具有较高的容错性,但其具体实现方式与Flink可能有所不同。

综上所述,Spark和Flink在数据处理领域各有优势。

Spark以其强大的生态系统、易用性和多语言支持等特点受到广泛欢迎。

而Flink则以其卓越的流式处理能力、低时延和状态管理功能在实时数据处理领域表现出色。

Spark 的角色

driver

介绍

  Spark 的驱动器是执行开发程序中的 main 方法的进程。负责开发人员编写的用来创建 SparkContext、创建 RDD,以及进行RDD的转化操作和行动操作代码的执行。启动 Spark shell 的时候,系统后台自启了一个 Spark 驱动器程序,就是在 Spark shell 中预加载的一个叫做 sc 的 SparkContext 对象。如果驱动器程序终止,那么 Spark 应用也就结束了。

作用

  • 把用户程序转为作业(Job)
  • 跟踪 Executor 的运行状况
  • 为执行器节点调度任务
  • UI 展示应用运行状况

executor

介绍

  Spark Executor 是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的声明周期而存在。如果有 Executor 节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他 Executor 节点上继续运行。

作用

  • 负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程。
  • 通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存方式存储。
  • RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

Spark 作业提交流程

YarnClient运行模式

YarnCluster模式

Spark 安装部署

# 将 spark的tar包上传到任意节点(node7-1)上的合适的目录
# 解压tar包 => 删除tar包 => 修改解压后的目录名
tar -zxvf spark-2.2.1-bin-hadoop2.7.tgz mv spark-2.2.1-bin-hadoop2.7/ spark-hadoop/

Spark - [01] 概述的更多相关文章

  1. 大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank 实例

    第1章 Spark GraphX 概述1.1 什么是 Spark GraphX1.2 弹性分布式属性图1.3 运行图计算程序第2章 Spark GraphX 解析2.1 存储模式2.1.1 图存储模式 ...

  2. Spark SQL概念学习系列之Spark SQL概述

    很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...

  3. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  4. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  5. 第1章 Spark SQL概述

    第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作 ...

  6. kafka详解(01) - 概述

    kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...

  7. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  8. Spark环境搭建(五)-----------Spark生态圈概述与Hadoop对比

    Spark:快速的通用的分布式计算框架 概述和特点: 1) Speed,(开发和执行)速度快.基于内存的计算:DAG(有向无环图)的计算引擎:基于线程模型: 2)Easy of use,易用 . 多语 ...

  9. Spark内核概述

    提交Spark程序的机器一般一定和Spark集群在同样的网络环境中(Driver频繁和Executors通信),且其配置和普通的Worker一致 1. Driver: 具有main方法的,初始化 Sp ...

  10. Hive 01 概述、安装配置

    概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...

随机推荐

  1. DA14531芯片固件逆向系列(3)- BLE收包流程分析及漏洞挖掘思路分享

    文章首发于 https://xz.aliyun.com/t/9194 前言 本文介绍定位和分析DA14531收包流程的方法,并提供简单的BLE协议漏洞挖掘思路. 定位收包函数 通过查看DA14531的 ...

  2. 【巧用set实现对有序数组O(logn)时间复杂度增、删、查、改、二分操作】codeforces 1041 C. Coffee Break

    题意 第一行输入三个整数 \(n,m,d(1 \leq n \leq 2 * 10^5, n \leq m \leq 10^9, 1 \leq d \leq n)\),第二行输入 \(n\) 个整数, ...

  3. R数据分析,codewar的年终总结,和一周年总结,寒假快乐呀

    前阵子单位各个部门都在要求弄总结,想想自己这个公众号也写了快一年了,专门回去翻了翻,这个公众号发布的第一篇文章是在2021年的1月17日,我想2022年的1月17日我就把现在敲的文字推出来吧,也算是一 ...

  4. 中电金信:技术实践|Flink维度表关联方案解析

    ​ 导语:Flink是一个对有界和无界数据流进行状态计算的分布式处理引擎和框架,主要用来处理流式数据.它既可以处理有界的批量数据集,也可以处理无界的实时流数据,为批处理和流处理提供了统一编程模型. 维 ...

  5. 2024年1月Java项目开发指南10:vite+Vue3项目创建

    新建项目 安装router npm install vue-router 在src下新建目录router,在目录下新建index.js 在index.js里面配置路由 import { createR ...

  6. 测试覆盖率 Java 覆盖率 Jacoco 插桩的不同形式总结和踩坑记录

    https://testerhome.com/topics/20632 关于Jacoco的小结和踩坑记录 一.概述 测试覆盖率,老生常谈的话题.因为我测试理论基础不是很好,就不提什么需求覆盖率啦这样那 ...

  7. Python的OCR工具pytesseract解决TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information环境变量问题

    pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格 ...

  8. SpringBoot整合WebSocket实践

    简介 先来看下维基百科WebSocket的简介: WebSocket是一种与HTTP不同的协议.两者都位于OSI模型的应用层,并且都依赖于传输层的TCP协议. 虽然它们不同,但是RFC 6455中规定 ...

  9. cmake错误:CMake Error: CMake can not determine linker language for target

    解决方案:因为你的library只有头文件,没有cpp文件 在add_library中增加cpp文件 同时建立一个空的cpp文件即可. 处理后的源代码结构和CMakeLists.txt内容如下所示: ...

  10. 有道云笔记默认的笔记格式转markdown

    目录 0. 前言 1. 有道云笔记自带的笔记格式转markdown的方案 1.1 pdf => md 1.2 pdf => word => md 2. Markdown技巧 2.1 ...