spark 能用来干嘛 spark可以做什么

您所在的位置:网站首页 大数据可以用来实现流计算的技术有哪些 spark 能用来干嘛 spark可以做什么

spark 能用来干嘛 spark可以做什么

2024-07-01 18:23| 来源: 网络整理| 查看: 265

Spark简介1.1 Spark的初步认识

Spark是一个用来实现快速而通用的集群计算的平台。 首先,我们学习Spark首先要知道Spark的应用场景有哪些。Spark适用于各种各样原先需要多种不同的分布式平台场景,包括批处理,迭代算法,交互式查询,流处理。

1.2 Spark软件栈

spark 能用来干嘛 spark可以做什么_spark

1.2.1 Spark Core

Spark Core实现了Spark基本功能,包含任务调度、内存管理、错误恢复、与存储系统的交互等模块。Spark Core中还包含了对弹性分布式数据集(RDD)的API定义。RDD表示分布式再多个计算节点上可以并行操作的元素集合,是Spark主要编程抽象。

1.2.2 Spark SQL

Spark SQL是Spark用来操作数据结构化数据的程序包。通过SparkSQL,我们可以使用SQL来查询数据。同样,SparkSQL还支持多个数据源,比如:Hive表,Parquet以及JSON等。

1.2.3 Spark Streaming

是Spark提供的对实时数据进行流式计算的组件。且支持与SparkCore同级别的容错性,吞吐量以及可伸缩性。

1.2.4 MLlib

机器学习(ML)功能的程序库。提供了很多的机器学习算法,包括分类,回归,聚类,协同过滤等,还提供了模型评估,数据导入等额外的支持功能。

1.2.5 Graphx

用来操作图的程序库,比如说社交网络的朋友关系图。

1.2.6 集群管理器

Spark设计可以高效的在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大的灵活性,Spark支持在各种集群管理器(cluster manager)上运行,包括Hadoop,Yarn,Apache Mesos以及Spark自带的一个简易调度器,称之为独立调度器。

Spark内核2.1 Spark内核概述

Spark内核泛指Spark核心运行机制,包括Spark核心组件的运行机制、Spark任务调度机制、Spark内存管理机制、Spark核心功能的运行原理等,熟悉掌握Spark内核原理,能够帮助我们更好地完成Spark代码设计,并能够帮助我们准确锁定项目运行过程中出现问题的所在。

2.1.1 Spark核心组件回顾

Driver 从上层来看,每个Spark应用都有一个驱动程序(Driver) 来发起集群上的各种并行操作。驱动器程序包含应用的main函数,并且定义了集群的分布式集群数据集。负责实际代码的执行工作。Driver在Spark作业执行时主要负责:

将用户程序转化为作业(Job)在Executor之间调度任务(Task)跟踪Executor的执行情况通过UI展示查询运行和情况Executor Spark Executor节点是负责在Spark作业中运行具体任务,任务彼此之间相互独立。Spark应用启动时,Executor节点被同时启动,并且始终伴随着整个Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。 Executor有两个核心功能:负责运行组成Spark应用的任务,并将结果返回驱动器(DRIVER);他们通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以再运行时冲零分利用缓存数据加速运算。2.1.2 Spark通用运行流程概述

spark 能用来干嘛 spark可以做什么_spark 能用来干嘛_02

不论Spark以任何模式进行部署,都是以如下核心步骤进行工作的:

任务提交后,都会启动Driver程序的;随后Driver向集群管理器注册应用程序;之后集群管理器根据此任务的配置文件分配Executor并启动;当Driver所需的资源全部满足之后,Driver开始执行main函数,Spark查询为懒执行,当执行到Action算子时开始反向推算,根据宽依赖进行stage对应一个Taskset,Taskset中有对个Task;根据本地化原则,Task会被分发到指定的Executor去执行,在任务执行的过程中,Executor也会不断与Driver进行通信,报告任务运行情况。Spark通信架构Spark通信架构概述

Spark通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间通过消息来进行通讯。具体的组件之间的关系图如下所示:

spark 能用来干嘛 spark可以做什么_spark_03

EndPoint(Client / Mater / Worker)有1个InBox和N个OutBox(N >=1 , N取决于当前EndPoint于多少个其他的EndPoint进行通信 , 一个与其通讯的其他EndPoint对应一个OutBox),EndPoint接收到的消息被写入InBox,发送出去的消息写入OutBox并被发送到其他EndPoint的InBox中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3