一、Spark概述
Spark是一种基于内存的快速、通用、可拓展的大数据分析计算引擎。
Hadoop是一个分布式系统结构的基础架构。
二、Spark与Hadoop相比较的优势:
1. 处理速度:Hadoop:数据处理速度相对较慢
Spark:速度比Hadoop快很多倍
2. 编程模型:Hadoop:编程模型相对较为底层和复杂,处理复杂计算时,代码量非常庞大,开发 维护成本较高。
Spark:提供了更加简洁、高层的编程模型,可用更简洁的代码实现复杂的处理任 务,且Spark支持多种编程语言。
3. 实时性处理:Hadoop:主要用于批处理任务,难以满足实时性要求较高的数据处理场景
Spark:提供强大的数据实时处理能力,可实现准实时的数据分析
三、Spark内置模块
1. Spark Core:作为 Spark 的核心引擎,提供了分布式任务调度、内存管理、错误恢复等基础功能。它定义了 RDD(弹性分布式数据集)这一核心数据结构,RDD 是一种容错的、并行的数据结构,用户可以在其上执行各种转换(如 map、filter)和动作(如 count、collect)操作,为 Spark 的所有高级功能奠定基础。通过 RDD,Spark 能够高效地处理大规模数据,并实现数据的分布式计算。
2. Spark SQL:允许用户使用 SQL 语句或 DataFrame/Dataset API 对结构化和半结构化数据进行查询分析。它支持多种数据源,包括 JSON、Parquet、Hive 表等。Spark SQL 能够将 SQL 查询转换为底层的 RDD 操作,充分利用 Spark 的计算能力。同时,它还提供了数据的 Schema 推断功能,方便用户快速处理数据。此外,Spark SQL 的 Catalyst 优化器会对查询进行优化,提高查询执行效率,使得用户可以轻松地对大规模数据进行复杂的 SQL 分析。
3. Spark Streaming:用于处理实时数据流,它支持从 Kafka、Flume、Socket 等多种数据源接收数据,并将数据流分割成小的批次(Batch)进行处理,每个批次的数据都作为一个 RDD 进行处理,从而实现准实时的计算。Spark Streaming 提供了丰富的 API,如 map、reduce、join 等,方便用户对实时数据进行各种转换和聚合操作。例如,在实时日志分析场景中,可以使用 Spark Streaming 实时处理服务器产生的日志数据,统计用户的访问频率、热门页面等信息。
4. MLlib(机器学习库):包含了一系列常用的机器学习算法和工具,如分类、回归、聚类、协同过滤等。它提供了简单易用的 API,使得用户可以方便地构建和训练机器学习模型。MLlib 支持分布式计算,能够处理大规模数据集,并且在模型训练过程中进行了性能优化。例如,在推荐系统中,可以使用 MLlib 的协同过滤算法为用户推荐感兴趣的商品或内容;在文本分类任务中,可以使用 MLlib 的分类算法对文本进行自动分类。
5. GraphX:用于处理图计算的模块,提供了丰富的图操作 API 和算法库,如 PageRank、SVDPlusPlus 等。它可以将图数据表示为分布式的顶点和边的集合,并在分布式环境下进行高效的图计算。GraphX 在社交网络分析、推荐系统、知识图谱等领域有着广泛的应用。例如,通过 GraphX 可以分析社交网络中用户之间的关系,发现关键人物和社区结构;在知识图谱中,可以使用 GraphX 进行图谱的构建和查询,挖掘实体之间的潜在关系
四、Spark的运行模式
大体为两种:单机模式与集群模式。
目前支持的部署模式: