Spark概述

1.什么是Spark?

Spark是一个开源的大数据处理和分析引擎。

Spark最初由美国加州大学伯克利分校的AMP实验室于2009年开发,基于内存计算,适用于构建大型、低延迟的数据分析应用程序。Spark支持多种编程语言,如JavaScalaPythonR,并提供了高级别的API,用于在分布式环境中进行大规模数据处理和分析。Spark的核心组件包括Spark CoreSpark SQLSpark StreamingMLlib等,它能够处理结构化数据、实时数据,并支持机器学习算法。Spark以其高性能、易用性和灵活性而闻名,能够在内存中保留数据,避免磁盘I/O的开销,从而提高计算速度和吞吐量。此外,Spark可以与Hadoop分布式文件系统(HDFS)等数据源集成,支持批处理、迭代算法、交互式查询和流处理等多种计算模式。

2.了解Spark的特点

速度快

速度快 由于ApacheSpark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍 Spark处理数据与MapReduce处理数据相比,有如下两个不同点: Spark处理数据时,可以将中间处理结果数据存储到内存中 Spark Job调度以DAG方式,并且每个任务Task执行以线程方式,并不是MapReduce以进程方式执行

通用性强

在Spark的基础上,Spark还提供了包括Spark SQL、Spark Streaming、MLib及GraphX在内的多个工具库,我们可以在一个应用中无缝的使用这些工具库

易于使用

Spark的版本已经更新到了Spark3.1.2(截止日期2021.06.01),支持了包括Java、Scala、Python、R和SQL语言在内的多种语言。为了兼容Spark2.x企业级应用场景,Spark仍然持续更新Spark2版本

运行方式

Spark支持多种运行方式,包括在Hadoop和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kubernets(Spark2.3开始支持)

搭建spark集群

搭建Spark集群有多种模式,包括Local模式Standalone模式YARN模式以及Spark on Hive模式。以下是不同模式下的搭建步骤:

  • Local模式。首先下载Spark的jar包,然后解压并运行Spark程序。这种模式适合本地测试和调试。
  • Standalone模式。需要下载Spark的jar包,上传并解压,配置环境变量,修改配置文件(例如spark-defaults.conf和spark-env.sh),将Spark安装包分发到其他节点,启动集群,并在Web界面查看Spark UI。
  • YARN模式。需要开启HDFS和YARN服务,修改Hadoop配置文件(例如yarn-site.xml),分发Spark Jar包到HDFS,并测试Spark程序。
  • Spark on Hive模式。需要文件复制、驱动程序拷贝和重启集群。

此外,在搭建Spark集群之前,应先搭建好Hadoop集群,因为Spark依赖于HDFS作为存储系统。在生产环境中,Spark通常与Hive、Kafka等其他组件一起使用,以提高数据处理和分析的效率

spark作业运行流程

Spark作业的运行流程主要包括以下几个步骤:

  1. 作业提交。用户通过Spark客户端(如PysparkSpark shell)提交一个Spark应用程序到集群。客户端负责将应用程序的代码、依赖关系以及配置参数打包成一个JAR包或Python文件,并提交给Spark集群。
  1. 创建SparkContext。在集群上的某个节点上,Spark驱动程序(Driver)的main方法被执行,创建了一个SparkContext对象。这个对象是应用程序与集群进行通信的主要入口点。
  2. 创建RDD。SparkContext负责创建RDD(弹性分布式数据集)对象,并计算RDD之间的依赖关系,形成一个有向无环图(DAG)。
  3. 划分Stage。DAGScheduler根据RDD之间的宽窄依赖关系,将DAG划分为多个Stage。每个Stage包含一个或多个Task,这些Task会被提交给TaskScheduler。
  1. 资源分配。TaskScheduler接收DAGScheduler提交的TaskSet,并为每个Task申请资源,然后将Task发送到集群中的Worker节点。
  2. 执行Task。Worker节点上的Executor启动并执行Task。Executor负责将Task转换为具体的计算任务,并在本地或集群上运行这些任务。
  3. 结果收集与驱动程序。Executor执行完Task后,将结果发送回Driver。Driver负责收集这些结果,并可能将它们发送到外部存储系统,如HDFSHive

Spark作业的运行流程依赖于Spark的组件,包括SparkContext、DAGScheduler、TaskScheduler、Executor和Driver,它们共同协作以高效地处理和管理大规模数据。

Spark 核心数据结构:RDD

rdd  弹性分布式数据集  是spark框架自己封装的数据类型,用来管理内存数据

数据集:

rdd数据的格式  类似Python中hive中的该结构叫数组

rdd提供算子(方法) 方便开发人员进行调用计算数据

在pysaprk中本质是定义一个rdd类型用来管理和计算内存数据

分布式 : rdd可以时使用多台机器的内存资源完成计算

弹性: 可以通过分区将数据分成多份  每份数据对应一个task线程处理

python 也有自己的数据类型  使用的是单机资源管理数据

数据类型可以通过封装类的形式进行定义,所有list,dict在Python中本质是一个类

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本资源为网页,不是PDF Apache Spark 2.0.2 中文文档 Spark 概述 编程指南 快速入门 Spark 编程指南 概述 Spark 依赖 Spark 的初始化 Shell 的使用 弹性分布式数据集(RDDS) 并行集合 外部数据集 RDD 操作 RDD 持久化 共享变量 Broadcast Variables (广播变量) Accumulators (累加器) 部署应用到集群中 使用 Java / Scala 运行 spark Jobs 单元测试 Spark 1.0 版本前的应用程序迁移 下一步 Spark Streaming Spark Streaming 概述 一个简单的示例 基本概念 依赖 初始化 StreamingContext Discretized Streams(DStreams)(离散化流) Input DStreams 和 Receivers DStreams 上的 Transformations(转换) DStreams 上的输出操作 DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久化 CheckPointing 累加器和广播变量 应用程序部署 监控应用程序 性能 降低批处理的时间 设置合理的批处理间隔 内存 容错语义 迁移指南(从 0.9.1 或者更低版本至 1.x 版本) 快速跳转 Kafka 集成指南 DataFrames,Datasets 和 SQL Spark SQL 概述 SQL Datasets 和 DataFrames Spark SQL 入门指南 起始点 : SparkSession 创建 DataFrame 无类型 Dataset 操作(aka DataFrame 操作) 以编程的方式运行 SQL 查询 创建 Dataset RDD 的互操作性 数据源 通用的 Load/Save 函数 Parquet文件 JSON Datasets Hive 表 JDBC 连接其它数据库 故障排除 性能调优 缓存数据到内存 其它配置选项 分布式 SQL引擎 运行 Thrift JDBC/ODBC 运行 Spark SQL CLI 迁移指南 从 Spark SQL 1.6 升级到 2.0 从 Spark SQL 1.5 升级到 1.6 从 Spark SQL 1.4 升级到 1.5 从 Spark SQL 1.3 升级到 1.4 从 Spark SQL 1.0~1.2 升级到 1.3 兼容 Apache Hive 参考 数据类型 NaN 语义 Structured Streaming MLlib(机器学习) 机器学习库(MLlib)指南 ML Pipelines(ML管道) Extracting, transforming and selecting features(特征的提取,转换和选择) Classification and regression(分类和回归) Clustering(聚类) Collaborative Filtering(协同过滤) ML Tuning: model selection and hyperparameter tuning(ML调优:模型选择和超参数调整) Advanced topics(高级主题) MLlib:基于RDD的API Data Types - RDD-based API(数据类型) Basic Statistics - RDD-based API(基本统计) Classification and Regression - RDD-based API(分类和回归) Collaborative Filtering - RDD-based API(协同过滤) Clustering - RDD-based API(聚类 - 基于RDD的API) Dimensionality Reduction - RDD-based API(降维) Feature Extraction and Transformation - RDD-based API(特征的提取和转换) Frequent Pattern Mining - RDD-based API(频繁模式挖掘) Evaluation metrics - RDD-based API(评估指标) PMML model export - RDD-based API(PMML模型导出) Optimization - RDD-based API(最) GraphX(图形处理) Spark R 部署 集群模式概述 提交应用 Spark Standalone 模式 Spark on Mesos Spark on YARN Spark on YARN 上运行 准备 Spark on YARN 配置 调试应用 Spark 属性 重要提示 在一个安全的集群中运行 用 Apache Oozie 来运行应用程序 Kerberos 故障排查 Spark 配置 Spark 监控 指南 作业调度 Spark 安全 硬件配置 构建 Spark

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值