Spark 和 Map-Reduce 一起使用
Spark and Map-Reduce together
运行 在 运行s map reduce 作业的集群上使用 Spark 的最佳方法是什么?
第一个问题是关于数据的共存性。当我启动一个 Spark 应用程序时,它会分配执行程序,对吧?它如何知道将它们分配到哪里,以便它们与作业所需的数据位于相同的节点中? (一个作业可能需要一个数据,而另一个作业可能需要另一个)
如果我保持 Spark 应用程序运行,那么执行程序会从集群中的机器中占用插槽,这是否意味着对于共存,我需要在每个节点上都有一个 Spark 执行程序?
使用执行器 运行ning,这意味着我的 map reduce 作业的资源较少,对吗?我可以为每项工作停止和启动 Spark 应用程序,但它会剥夺执行程序启动和 运行ning 的速度优势,正确(还有热点对长 运行ning 进程的好处?)
我读到容器调整大小 (YARN-1197) 会有所帮助,但这是否仅仅意味着执行程序将停止和启动?这与停止 spark 应用程序不一样吗(换句话说,如果没有实时执行程序,启动 Spark 应用程序与关闭它并在作业需要执行程序时启动有什么好处)
执行器的数据局部性:Spark 在启动执行器时不处理数据局部性,但在它们上启动任务时。所以你可能需要在每个数据节点上都有执行器(HDFS冗余可以帮助你,即使你没有在每个节点上都有执行器)。
长运行过程:是否关闭您的应用程序取决于用例。如果您想提供实时应用程序 requests/spark 流式传输,您将不想关闭 spark。但是如果你正在进行批处理,你应该关闭你的执行器。对于跨作业缓存数据,您应该考虑 HDFS Cache 或 tachyon。您还可以考虑动态分配 spark,如果一段时间不使用,您可以释放执行程序。(http://spark.apache.org/docs/latest/configuration.html#dynamic-allocation).
- YARN-1197 - 将有助于释放您分配给容器的 cpus/memory 数量。我不确定 spark 是否支持这个。
运行 在 运行s map reduce 作业的集群上使用 Spark 的最佳方法是什么?
第一个问题是关于数据的共存性。当我启动一个 Spark 应用程序时,它会分配执行程序,对吧?它如何知道将它们分配到哪里,以便它们与作业所需的数据位于相同的节点中? (一个作业可能需要一个数据,而另一个作业可能需要另一个)
如果我保持 Spark 应用程序运行,那么执行程序会从集群中的机器中占用插槽,这是否意味着对于共存,我需要在每个节点上都有一个 Spark 执行程序?
使用执行器 运行ning,这意味着我的 map reduce 作业的资源较少,对吗?我可以为每项工作停止和启动 Spark 应用程序,但它会剥夺执行程序启动和 运行ning 的速度优势,正确(还有热点对长 运行ning 进程的好处?)
我读到容器调整大小 (YARN-1197) 会有所帮助,但这是否仅仅意味着执行程序将停止和启动?这与停止 spark 应用程序不一样吗(换句话说,如果没有实时执行程序,启动 Spark 应用程序与关闭它并在作业需要执行程序时启动有什么好处)
执行器的数据局部性:Spark 在启动执行器时不处理数据局部性,但在它们上启动任务时。所以你可能需要在每个数据节点上都有执行器(HDFS冗余可以帮助你,即使你没有在每个节点上都有执行器)。
长运行过程:是否关闭您的应用程序取决于用例。如果您想提供实时应用程序 requests/spark 流式传输,您将不想关闭 spark。但是如果你正在进行批处理,你应该关闭你的执行器。对于跨作业缓存数据,您应该考虑 HDFS Cache 或 tachyon。您还可以考虑动态分配 spark,如果一段时间不使用,您可以释放执行程序。(http://spark.apache.org/docs/latest/configuration.html#dynamic-allocation).
- YARN-1197 - 将有助于释放您分配给容器的 cpus/memory 数量。我不确定 spark 是否支持这个。