Coursera 笔记

Module 03 · Apache Spark

Why use Apache Spark?为什么使用 Apache Spark?

Coursera ↗

欢迎观看《为什么使用 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)上。

分布式计算

分布式计算,如其名字所示,是一群计算机或处理器共同协作完成任务。分布式计算和并行计算常常被交替使用,因两者有许多相似之处。然而,分布式计算和并行计算在内存访问方式上有所不同:

  • 并行计算 通常共享所有的内存。
  • 分布式计算 中,每个处理器访问自己的内存。

分布式计算的两个主要好处

  1. 扩展性与模块化增长
  • 分布式系统天生具有扩展性,因为它们可以跨多个机器工作并实现横向扩展。
  • 用户可以通过增加机器来应对不断增长的工作负载,而无需不断更新单一系统,几乎没有扩展限制。
  1. 容错与冗余
  • 分布式系统需要容错和冗余,因为它们依赖于独立节点,而节点可能会发生故障。
  • 分布式计算不仅提供容错机制,还提供冗余,确保业务连续性。例如,一个拥有八台机器的集群,即使有一台或多台机器发生故障,系统仍能继续运行。

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 和分布式计算有了更加深入的了解,能够更好地应用它们来处理大规模数据集。