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 级数据上也能良好运行。它已被用于以 Hadoop MapReduce 十分之一的机器将 100 TB 数据排序速度提高 3 倍,赢得了 2014 年 Daytona GraySort 基准测试,并成功排序了 1 PB 数据。一些生产工作负载使用 Spark 对 PB 级数据进行 ETL 和数据分析。
使用 Spark 时,我的数据需要全部放入内存吗?
不需要。如果数据不适合内存,Spark 的操作符会将其溢写到磁盘,使其能够很好地处理任何大小的数据。同样,不适合内存的缓存数据集会根据 RDD 的存储级别,在需要时溢写到磁盘或即时重新计算。
我如何在集群上运行 Spark?
你可以使用独立部署模式,它只需在每个节点上安装 Java 即可;或者使用 Mesos 和 YARN 集群管理器。如果你想在 Amazon EC2 上运行,AMPLab 提供了 EC2 脚本来自动启动集群。
请注意,你也可以在本地(可能在多个核心上)运行 Spark,无需任何特殊设置,只需将 local[N]
作为 master URL 传入即可,其中 N
是你想要的并行线程数。
运行 Spark 需要 Hadoop 吗?
不需要,但如果你在集群上运行,你需要某种形式的共享文件系统(例如,在每个节点上以相同路径挂载的 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 提供了一种称为离散化流(discretized stream)或 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 用户邮件列表上提问。更多信息,请参阅有问题?。我们很乐意提供帮助!