Spark 与 Apache Hadoop 有什么关系?
Spark 是一个快速且通用的处理引擎,兼容 Hadoop 数据。它可以通过 YARN 或 Spark 的独立模式(standalone mode)在 Hadoop 集群中运行,并且可以处理 HDFS、HBase、Cassandra、Hive 以及任何 Hadoop InputFormat 中的数据。它的设计初衷是执行批处理(类似于 MapReduce)以及流处理、交互式查询和机器学习等新型工作负载。
哪些机构在生产环境中使用 Spark?
截至 2016 年,调查显示已有超过 1000 家机构在生产环境中使用 Spark。其中一些列在“Powered By”页面和Spark 峰会上。
Spark 可以扩展到多大的集群?
许多机构在拥有数千个节点的集群上运行 Spark。我们所知最大的集群拥有 8000 个节点。在数据规模方面,Spark 已被证明可以很好地处理 PB 级数据。它曾被用于在 1/10 的机器上以快于 Hadoop MapReduce 3 倍的速度对 100 TB 数据进行排序,赢得了 2014 年 Daytona GraySort 基准测试,并成功对 1 PB 数据进行了排序。一些生产工作负载使用 Spark 对 PB 级数据进行 ETL 和数据分析。
使用 Spark 时,我的数据必须全部装入内存吗?
不需要。如果数据无法装入内存,Spark 的算子会将数据溢写到磁盘,从而使其能够很好地处理任意规模的数据。同样,根据 RDD 的存储级别设定,无法装入内存的缓存数据集要么被溢写到磁盘,要么在需要时实时重新计算。
我该如何在集群上运行 Spark?
你可以使用独立部署模式(仅需在每个节点上安装 Java),或者使用 Mesos 和 YARN 集群管理器。如果你想在 Amazon EC2 上运行,AMPLab 提供了 EC2 脚本来自动启动集群。
请注意,你也可以通过将 local[N] 作为主 URL(其中 N 是你想要的并行线程数),在没有任何特殊设置的情况下在本地(可能是在多核上)运行 Spark。
运行 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 提供了一种称为离散流(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 做出贡献 (Contributing to Spark) wiki 以获取更多信息。
哪里可以获得更多帮助?
请在 StackOverflow 的 apache-spark 标签下发帖,或在 Spark Users 邮件列表中提问。欲了解更多信息,请参考有问题吗?(Have Questions?)。我们将非常乐意提供帮助!