spark 简介

spark:通用的大数据快速处理引擎的计算模型

1.spark组件简介

spark的核心,其实就是一种新型的大数据计算框架。可以基于Hadoop上存储的大数据进行计算(HDFS、Hive)。

spark替代Hadoop的一部分,也就是Hadoop的计算框架,可以取代mapreduce、Hive查询引擎等。spark本身不提供大数据存储系统。

Spark Core 用于离线计算

Spark SQL 用于交互式查询

Spark Streaming 用于实时式流计算

Spark Mllib 用于机器学习

Spark Graphx 用于图计算

2.Spark与Hadoop

1.Mapreduce 是基于本地磁盘的计算。shuffle以及mapreduce的计算模型, 决定了mapreduce只适合处理对速度不敏感的离线批处理任务。

Spark是基于内存的一种计算框架(有时也会使用磁盘,spark shuffle 也会使用磁盘),但是很多单纯的map操作,没有reduce操作,或者filter类操作, 也可以直接内存计算。所以,Spark 的速度可以比mapreduce、Hive(底层也是基于MapReduce来执行SQL语句的), 速度快出数倍,甚至数十倍,上百倍。

2.Hive是一种基于HDFS的数据仓库。而Spark SQL 则是取代Hive的查询引擎。Spark SQL相对于Hive的引擎,速度快,而且可以支持大量的不同数据源,如hive、json、Jdbc、parquet等等。此外, Spark SQL由于身处Spark技术堆栈内, 也是基于RDD来工作,因此可以与Spark的其他组件无缝整合使用,配合起来实现许多复杂的功能。比如

Spark SQL 支持可以直接针对HDFS文件执行SQL语句。

3.Spark Streaming 与 Stom 都可以用于进行实时流计算。 但是他们两者的区别是非常大的。其中区别之一就是Spark Streaming和Stom的计算模型完全不一样。Spark Streaming是基于RDD的。因此需要将一小段时间内的,比如1秒内的数据,收集起来, 作为一个RDD,然后在针对这个batch的数据进行处理。

而Stom却可以做到每来一条数据,都可以立即进行处理和计算。因此,Spark Streaming实际上严格意义上来说, 只能称作准实时的流式计算框架;而Stom是真正意义上的实时流式计算框架。

        Spark Streaming由于是基于batch进行处理的,因此相较于Stom基于单条数据进行处理,具有数倍甚至数十倍的吞吐量。

        Spark Streaming可以与Spark Core、Spark SQL,甚至是Spark MLlib、Spark Graphx进行无缝整合。流式处理数据, 可以立即进行各种map、reduce转换操作,

可以立即使用SQL进行查询, 甚至可以立即使用ML或者图技术算法进行处理。这种一站式的大数据处理功能和优势, 是Stom无法匹敌的。

     通常在对实时性特别高,而且实时数据量不稳定, 比如在白天高峰期的情况下,可以选择使用Stom。 但是如果是对实现性要求一般,允许1秒的准实时处理,而且不要求动态调整并行度的话,选择Spark Streaming是更好的选择。




### 头歌平台上的 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) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值