Module 03 · Apache Spark
Why use Apache Spark?为什么使用 Apache Spark?
欢迎观看《为什么使用 Apache Spark》视频。在观看完该视频后,您将能够:
- 描述 Apache Spark 的特性
- 描述分布式计算
- 列出 Apache Spark 和分布式计算的好处
- 比较和对比 Apache Spark 和 MapReduce
Apache Spark 概述
Apache Spark 是一个开源的内存应用框架,用于分布式数据处理和海量数据的迭代分析。
关键词解析
- 开源:Spark 完全是开源的,遵循 Apache 基金会的许可协议,因此得名 Apache Spark。
- 内存计算:Spark 是“内存计算”的,这意味着所有的操作都在内存(RAM)中进行。
- 分布式数据处理:Spark 用于分布式数据处理。
- 扩展性:Spark 对于数据的扩展性表现良好,特别适用于大规模数据集。
编程语言和平台
Spark 主要使用 Scala 编写,Scala 是一种支持面向对象编程和函数式编程的通用编程语言。Spark 运行在 Java 虚拟机(JVM)上。
分布式计算
分布式计算,如其名字所示,是一群计算机或处理器共同协作完成任务。分布式计算和并行计算常常被交替使用,因两者有许多相似之处。然而,分布式计算和并行计算在内存访问方式上有所不同:
- 并行计算 通常共享所有的内存。
- 分布式计算 中,每个处理器访问自己的内存。
分布式计算的两个主要好处
- 扩展性与模块化增长
- 分布式系统天生具有扩展性,因为它们可以跨多个机器工作并实现横向扩展。
- 用户可以通过增加机器来应对不断增长的工作负载,而无需不断更新单一系统,几乎没有扩展限制。
- 容错与冗余
- 分布式系统需要容错和冗余,因为它们依赖于独立节点,而节点可能会发生故障。
- 分布式计算不仅提供容错机制,还提供冗余,确保业务连续性。例如,一个拥有八台机器的集群,即使有一台或多台机器发生故障,系统仍能继续运行。
Spark 的优势
Spark 完全符合分布式计算的所有优势:
- 提供大规模数据处理和分析的计算框架
- 支持并行分布式数据处理能力、可扩展性以及在普通硬件上的容错性
- 提供内存处理,并创建一个统一的大数据处理框架
- 提供易用的 Python、Scala 和 Java API,实现编程灵活性
Apache Spark vs MapReduce
传统的 MapReduce
传统的 MapReduce 作业在执行时需要进行磁盘或 HDFS 的读写操作。这些读写通常既费时又昂贵。
Spark 的解决方案
Apache Spark 通过将大部分需要的数据保存在内存中,避免了昂贵的磁盘 I/O,从而解决了 MapReduce 中的读写问题,显著减少了总体时间,提升了性能。
Spark 在大数据解决方案中的应用
Spark 提供了大数据工程和数据科学的解决方案:
- 数据工程:数据工程师使用 Spark 工具,包括核心 Spark 引擎、集群和执行器管理、SparkSQL 和 DataFrames。
- 数据科学与机器学习:Spark 通过 SparkML 和 Streaming 等库,支持数据科学和机器学习。
总结
在本视频中,您了解了:
- Spark 是一个开源的内存应用框架,用于分布式数据处理和海量数据的迭代分析。
- 分布式计算是一组计算机或处理器共同工作的系统。
- 分布式系统和 Apache Spark 本质上具有扩展性和容错性。
- Apache Spark 将大部分数据保存在内存中,避免了昂贵且耗时的磁盘 I/O。
通过本视频,您对 Apache Spark 和分布式计算有了更加深入的了解,能够更好地应用它们来处理大规模数据集。