Spark简介

Spark是一个由UC Berkeley AMP Lab开发的通用分布式计算框架,以其易用性、速度、通用性和可扩展性著称。通过内存计算,Spark比MapReduce更快,尤其适合数据挖掘和机器学习算法。Spark提供Spark SQL、Spark Streaming、MLlib和GraphX等核心组件,支持批处理、交互式查询、实时流处理和图计算。Spark可以与Hadoop、HBase、Cassandra等数据源无缝集成,兼容YARN和Mesos作为资源管理器。

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

Spark是什么

Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架。
Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
spark是基于内存计算框架,计算速度非常之快,但是它仅仅只是涉及到计算,并没有涉及到数据的存储,后期需要使用spark对接外部的数据源,比如hdfs。


Spark的四大特性

Simple(易用性)

Spark 提供了丰富的高级运算操作,支持丰富的算子,并支持 Java、Python、Scala、R、SQL 等语言的 API,使用户可以快速构建不同的应用。

开发人员只需调用 Spark 封装好的 API 来实现即可,无需关注 Spark 的底层架构。

Fast(速度快)

Spark 将处理的每个任务都构造成一个DAG(Directed Acyclic Graph, 有向无环图)来执行,实现原理是基于RDD(Resilient Distributed Dataset, 弹性分布式数据集)在内存中对数据进行迭代计算,以实现批量和流式数据的高性能快速计算处理。

Spark比MR速度快的原因

  • 基于内存
    mapreduce任务后期再计算的时候,每一个job的输出结果会落地到磁盘,后续有其他的job需要依赖于前面job的输出结果,这个时候就需要进行大量的磁盘io操作。性能就比较低。
    spark任务后期再计算的时候,job的输出结果可以保存在内存中,后续有其他的job需要依赖于前面job的输出结果,这个时候就直接从内存中获取得到,避免了磁盘io操作,性能比较高
    对于spark程序和mapreduce程序都会产生shuffle阶段,在shuffle阶段中它们产生的数据都会落地到磁盘。
  • 进程与线程
    mapreduce任务以进程的方式运行在yarn集群中,比如程序中有100个MapTask,一个task就需要一个进程,这些task要运行就需要开启100个进程。
    spark任务以线程的方式运行在进程中,比如程序中有100个MapTask,后期一个task就对应一个线程,这里就不再是进程,这些task需要运行,这里可以极端一点:只需要开启1个进程
### 头歌平台上的 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、付费专栏及课程。

余额充值