Spark 与 Apache Hadoop 有什么关系?
Spark 是一个快速且通用的处理引擎,与 Hadoop 数据兼容。它可以通过 YARN 或 Spark 的独立模式在 Hadoop 集群中运行,并且可以处理 HDFS、HBase、Cassandra、Hive 和任何 Hadoop InputFormat 中的数据。它旨在执行批量处理(类似于 MapReduce)和新的工作负载,如流处理、交互式查询和机器学习。
谁在生产环境中使用 Spark?
截至 2016 年,调查显示有 1000 多个组织在生产环境中使用 Spark。其中一些列在 Powered By 页面和 Spark Summit 上。
Spark 可以扩展到多大的集群?
许多组织在数千个节点的集群上运行 Spark。我们所知的最大的集群有 8000 个节点。在数据大小方面,Spark 已被证明可以很好地处理 PB 级别的数据。它已被用于以 1/10 的机器速度对 100 TB 的数据进行排序,速度是 Hadoop MapReduce 的 3 倍,赢得了 2014 年 Daytona GraySort 基准测试,以及 排序 1 PB。一些生产工作负载 使用 Spark 在 PB 级数据上进行 ETL 和数据分析。
我的数据需要全部放入内存才能使用 Spark 吗?
不需要。如果数据无法放入内存,Spark 的算子会将数据溢出到磁盘,使其能够在任何大小的数据上良好运行。同样,不适合内存的缓存数据集要么溢出到磁盘,要么根据 RDD 的 存储级别在需要时动态重新计算。
如何在集群上运行 Spark?
您可以使用 独立部署模式,该模式仅需要在每个节点上安装 Java,或者使用 Mesos 和 YARN 集群管理器。如果您想在 Amazon EC2 上运行,AMPLab 提供了 EC2 脚本来自动启动集群。
请注意,您也可以通过仅传递 local[N]
作为 master URL,在本地(可能在多个核心上)运行 Spark,而无需任何特殊设置,其中 N
是您想要的并行线程数。
运行 Spark 是否需要 Hadoop?
不需要,但如果您在集群上运行,您将需要某种形式的共享文件系统(例如,在每个节点上以相同路径挂载的 NFS)。如果您有这种类型的文件系统,您可以直接以独立模式部署 Spark。
Spark 是否需要修改过的 Scala 或 Python 版本?
不需要。Spark 不需要更改 Scala 或编译器插件。Python API 使用标准的 CPython 实现,并且可以调用现有的 C 语言 Python 库,例如 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 贡献的 Wiki。
在哪里可以获得更多帮助?
请在 StackOverflow 的 apache-spark
标签或 Spark Users 邮件列表上发布问题。 有关更多信息,请参阅 有疑问?。 我们很乐意提供帮助!