Spark 简介

本文介绍了Apache Spark的架构特点及其主要组件的功能。Spark是一个快速、通用的集群计算系统,支持多种高级API如SQL、机器学习等。文章详细解释了Spark应用程序如何在集群上运行,包括与不同集群管理器的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark

Apache Spark是一种快速、通用的集群计算系统。它提供了JavaScalaPythonR的高级api,以及一个支持通用执行图的优化引擎。它还支持丰富的高级工具集,包括用于SQL和结构化数据处理的Spark SQL、用于机器学习的MLlib、图形处理的GraphXSpark流。


Components

Spark应用程序在集群上作为独立的进程集运行,由主程序中的SparkContext对象(称为驱动程序)进行协调。

要在集群上运行,SparkContext可以连接到几种类型的集群管理器,它们在应用程序之间分配资源。一旦连接起来,Spark就会在集群中的节点上获取执行器,这些节点是运行计算和存储应用程序数据的进程。接下来,它向执行器发送您的应用程序代码(通过JAR或Python文件定义的文件)。最后,SparkContext将任务发送给执行程序运行。


注意点:

1. 每个应用程序都有自己的executor进程,在整个应用程序的持续时间内,并在多个线程中运行任务。这有利于将应用程序彼此隔离,同时在调度方面(每个驱动程序都调度自己的任务)和执行程序端(来自不同应用程序的任务在不同的jvm中运行)。然而,这也意味着数据不能在不同的Spark应用程序(SparkContext实例)之间共享,而不需要将其写入外部存储系统。

2。 Spark与底层的集群管理器无关。只要它能够获取executor进程,并且它们彼此通信,那么即使在支持其他应用程序的集群管理器上运行它也相对容易(例如Mesos/yarn)。

3.  驱动程序必须侦听并接受其执行器在其整个生命周期内的传入连接(端口在网络配置部分)。因此,驱动程序必须是来自工作节点的网络地址。

4.  因为驱动程序在集群上调度任务,所以它应该运行在工作节点附近,最好是在相同的本地区域网络上。如果您想要远程地向集群发送请求,最好向驱动程序打开一个RPC,并让它从附近提交操作,而不是在远离工作节点的地方运行一个驱动程序。

Cluster Manager Types

  • Standalone一个简单的集群管理器包含了Spark,这使得设置集群变得很容易。
  • Apache Mesos一个通用的集群管理器,它还可以运行Hadoop MapReduce和服务应用程序
  • Hadoop YARN – Hadoop 2的资源管理器.
  • Kubernetes一个用于自动化部署、扩展和管理容器应用程序的开源系统

Glossary (术语)


Application

User program built on Spark. Consists of a driver program and executors on the cluster.

Application jar

A jar containing the user's Spark application. In some cases users will want to create an "uber jar" containing their application along with its dependencies. The user's jar should never include Hadoop or Spark libraries, however, these will be added at runtime.

Driver program

The process running the main() function of the application and creating the SparkContext

Cluster manager

An external service for acquiring resources on the cluster (e.g. standalone manager, Mesos, YARN)

Deploy mode

Distinguishes where the driver process runs. In "cluster" mode, the framework launches the driver inside of the cluster. In "client" mode, the submitter launches the driver outside of the cluster.

Worker node

Any node that can run application code in the cluster

Executor

A process launched for an application on a worker node, that runs tasks and keeps data in memory or disk storage across them. Each application has its own executors.

Task

A unit of work that will be sent to one executor

Job

A parallel computation consisting of multiple tasks that gets spawned in response to a Spark action (e.g. save, collect); you'll see this term used in the driver's logs.

Stage

Each job gets divided into smaller sets of tasks called stages that depend on each other (similar to the map and reduce stages in MapReduce); you'll see this term used in the driver's logs.


### 头歌平台上的 Spark 简介 #### Spark 的定义与特性 Apache Spark 是一种快速通用的大规模数据处理引擎,专为大规模数据处理而设计。Spark 支持多种编程语言,包括 Java、Scala 和 Python,并提供了丰富的API用于操作分布式数据集。其核心功能涵盖了批处理和实时流处理两种模式。 #### Spark Streaming 组件介绍 特别值得注意的是,在头歌平台上提到的 Spark Streaming 功能[^1],这是一个扩展模块,允许开发者构建高吞吐量、可容错的实时应用来处理来自多个源(如 Kafka, Flume 或者简单的 TCP 套接字)的流式输入。它能够持续地从这些源头读取新到达的数据记录,并执行各种转换操作以生成最终的结果输出。 #### 数据传输机制——套接字流 对于具体的实现方式之一即为利用TCP/IP协议栈中的套接字接口来进行网络间进程间的通讯过程。在这个过程中,服务器端会开启特定编号的服务端口等待客户端发起连接请求;一旦建立好稳定可靠的双向通信链路之后,则可以通过此通道源源不断地传递二进制形式的消息体直至任意一方主动断开为止。在实际应用场景下,比如日志收集系统里,就经常采用这种方式把分散于不同物理位置的日志文件汇总起来做进一步分析挖掘工作。 #### 实际案例:黑名单过滤 作为一项典型的应用实例,当涉及到在线社交网站的安全防护措施时,可能会遇到需要动态维护一份敏感词表的需求。此时借助于Spark强大的并行计算能力以及高效的内存管理策略,完全可以轻松应对海量并发访问所带来的挑战。具体做法是从套接字流中不断拉取消息队列里的待审内容项逐一匹配预先设定好的规则库,凡是命中条件的对象都将被即时拦截下来不予转发扩散出去,从而有效保障了整个社区环境下的言论秩序和谐健康向上发展。 ```python from pyspark import SparkContext sc = SparkContext(appName="BlacklistFilter") def filter_blacklisted_users(user_list): blacklist = ["bad_user_1", "bad_user_2"] # Example of a static list; in practice this would be dynamic. filtered_users = [] for user in user_list.collect(): if user not in blacklist: filtered_users.append(user) return sc.parallelize(filtered_users) # Assuming `socket_stream` is the DStream from Socket source filtered_data = socket_stream.transform(filter_blacklisted_users) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值