Spark 与 Apache Hadoop 之间的关系如何?
Spark 是一个快速且通用的处理引擎,与 Hadoop 数据兼容。它可以通过 YARN 或 Spark 的独立模式在 Hadoop 集群中运行,并且可以处理 HDFS、HBase、Cassandra、Hive 和任何 Hadoop InputFormat 中的数据。它旨在执行批处理(类似于 MapReduce)和新的工作负载,如流式处理、交互式查询和机器学习。
谁在生产环境中使用 Spark?
截至 2016 年,调查显示超过 1000 家组织在生产环境中使用 Spark。其中一些列在 由谁提供支持页面 和 Spark 峰会 上。
Spark 可以扩展到多大规模的集群?
许多组织在数千个节点的集群上运行 Spark。我们知道的最大集群有 8000 个节点。在数据规模方面,Spark 已被证明可以很好地处理 PB 级数据。它已被用于对 100 TB 的数据进行排序,速度比 Hadoop MapReduce 在 1/10 的机器上快 3 倍,赢得了 2014 年 Daytona GraySort 基准测试,以及 对 1 PB 进行排序。几个生产工作负载 使用 Spark 对 PB 级数据进行 ETL 和数据分析。
我的数据需要放入内存才能使用 Spark 吗?
不需要。如果 Spark 的运算符无法放入内存,它会将数据溢出到磁盘,使其能够在任何大小的数据上良好运行。同样,无法放入内存的缓存数据集会在需要时溢出到磁盘或动态重新计算,这由 RDD 的 存储级别 决定。
如何在集群上运行 Spark?
您可以使用 独立部署模式,该模式只需要在每个节点上安装 Java,或者使用 Mesos 和 YARN 集群管理器。如果您想在 Amazon EC2 上运行,AMPLab 提供了 EC2 脚本 来自动启动集群。
请注意,您也可以在本地运行 Spark(可能在多个内核上),而无需任何特殊设置,只需将 local[N]
作为主 URL 传递,其中 N
是您想要的并行线程数。
我需要 Hadoop 才能运行 Spark 吗?
不需要,但如果您在集群上运行,您将需要某种形式的共享文件系统(例如,在每个节点上以相同路径挂载的 NFS)。如果您有这种类型的文件系统,您只需在独立模式下部署 Spark。
Spark 是否需要修改版本的 Scala 或 Python?
不需要。Spark 不需要对 Scala 或编译器插件进行任何更改。Python API 使用标准的 CPython 实现,并且可以调用 Python 的现有 C 库,例如 NumPy。
Spark Streaming 和 Spark Structured Streaming 之间的区别是什么?我应该使用哪个?
Spark Streaming 是 Spark 流式处理引擎的上一代。Spark Streaming 现在不再更新,它是一个遗留项目。Spark Streaming 提供了一个名为离散流或 DStream 的高级抽象,它表示连续的数据流。在内部,DStream 表示为一系列 RDD。
Spark Structured Streaming 是 Spark 流式处理引擎的当前一代,它功能更丰富、更易于使用且更具可扩展性。Spark Structured Streaming 建立在 Spark SQL 引擎之上,使您能够以与在静态数据上表达批处理计算相同的方式表达流式处理计算。
您应该使用 Spark Structured Streaming 来构建使用 Spark 的流式处理应用程序和管道。如果您有使用 Spark Streaming 构建的遗留应用程序和管道,您应该将它们迁移到 Spark Structured Streaming。
在哪里可以找到 Spark 徽标的高分辨率版本?
我们在这里提供版本:黑色徽标,白色徽标。请注意,Spark、Apache Spark 和 Spark 徽标是 Apache 软件基金会的商标,请在所有使用这些徽标时遵循基金会的 商标政策。
我可以提供基于 Spark 的商业软件或服务吗?
可以,只要您尊重 Apache 软件基金会的 软件许可证 和 商标政策。特别是,请注意,对第三方产品如何使用“Spark”名称有严格的限制(通常不允许基于 Spark 的名称)。请参阅我们的 商标政策摘要。
如何为 Spark 做贡献?
有关更多信息,请参阅 为 Spark 做贡献维基。
在哪里可以获得更多帮助?
请在 StackOverflow 的 apache-spark
标签或 Spark 用户 邮件列表上发帖。有关更多信息,请参阅 有问题?。我们很乐意提供帮助!