1. 简述什么是Spark ?
Spark 是一个开源的大数据处理框架,它被设计来进行高速度、通用性和易用性的大规模数据处理。Spark 最初由加州大学伯克利分校的AMPLab 开发,后来成为Apache软件基金会的顶级项目。
Spark 的主要特点包括:
- 快速性:Spark 使用了内存计算技术,相较于Hadoop的MapReduce,它能更快地处理大规模数据集。这是因为MapReduce在数据处理过程中频繁地将中间结果写入磁盘,而Spark尽可能地将数据保留在内存中处理,从而大幅度提高了处理速度。
- 易用性:Spark 提供了易于使用的APIs,支持多种编程语言,如Scala、Python和Java。这使得开发人员可以用他们熟悉的语言快速编写分布式数据处理任务。
- 通用性:Spark 不仅支持批量数据处理(类似于MapReduce),还支持流处理、图计算、机器学习等多种计算模式。这意味着同一个框架可以用于不同类型的数据处理需求,提高了开发和管理的效率。
- 高容错性:通过RDD(弹性分布式数据集)的概念,Spark 能够容错。如果某个节点执行失败,Spark 可以重新计算丢失的数据,保证处理过程的稳定性。
2. 简述Spark部署模式 ?
Spark 支持多种部署模式,以适应不同的计算环境。主要的部署模式包括:
- 本地模式:在这种模式下,Spark 集群运行在单个机器上,通常用于开发和测试。在这种模式下,所有的 Spark 组件都运行在同一个 JVM 进程中。
- 独立模式:这是 Spark 的标准集群部署模式,不依赖于外部的集群管理器。在这种模式下,你需要手动启动 Spark 的 Master 和 Worker 节点。它适合于专门为 Spark 或小型到中型集群配置的环境。
- YARN 模式:在这种模式下,Spark 运行在 YARN(Yet Another Resource Negotiator)上,YARN 是 Hadoop 的资源管理器。这种模式允许 Spark 与其他基于 YARN 的应用共享集群资源。
- Mesos 模式:Apache Mesos 是一个通用的集群管理器,可以运行 Spark 和其他应用。在 Mesos 模式下,Mesos 负责分配资源给 Spark。
- Kubernetes 模式:近年来逐渐流行,可以在 Kubernetes 集群上运行 Spark。Kubernetes 提供了容器编排和管理,使 Spark 可以更灵活地部署和扩展。
各种部署模式都有自己的适用场景。例如,本地模式适合开发和测试,独立模式适合专门为 Spark 配置的小型集群,YARN 模式适合已有 Hadoop 集群的环境,Mesos 和 Kubernetes 模式适合需要更复杂资源调度和管理的大型应用。在实际应用中,选择合适的部署模式取决于具体的资源管理需求、集群环境和应用场景。