Spark streaming 和 Spark 应用程序可以 运行 在同一个 YARN 集群中吗?

Can Spark streaming and Spark applications be run within the same YARN cluster?

大家好,新年快乐 ;) !

我正在使用 Apache Spark、HDFS 和 Elastichsearch 构建一个 lambda 架构。 在下图中,这是我正在尝试做的事情:

到目前为止,我已经在 java 中为我的 spark streaming 和 spark 应用程序编写了源代码。我在 spark 文档中读到 spark 在 Mesos 或 YARN clutser 中可以是 运行。如图所示,我已经有一个 hadoop 集群。是否可以 运行 我的 spark streaming 和 spark 应用程序在同一个 hadoop 集群中?如果是,是否有任何特定的配置要做(例如节点数、RAM...)。或者我是否必须为 Spark Streaming 添加专门的 hadoop 集群?

希望我的解释清楚。

亚西尔

有可能。您将流式处理和批处理应用程序提交到同一个 yarn 集群。但是在这两个作业之间共享集群资源可能有点棘手(根据我的理解)。

所以我建议您查看 Spark Jobserver 以提交您的申请。 Spark-jobserver 当您想维护多个 spark 上下文时,让您的生活更轻松。两个应用程序所需的所有配置都集中在一处。

您不需要为 运行 spark streaming 构建单独的集群。

spark.master 属性 更改为 conf/spark-defaults.conf 文件中的 yarn-clientyarn-cluster。如此指定时,提交的spark应用程序将由YARN的ApplicationMaster处理,并由NodeManagers执行。

另外修改 coresmemory 的这些属性以使 Spark 与 Yarn 保持一致。

spark-defaults.conf

spark.executors.memory
spark.executors.cores
spark.executors.instances

yarn-site.xml

yarn.nodemanager.resource.memory-mb
yarn.nodemanager.resource.cpu-vcores

否则可能导致死锁或集群资源利用不当。

运行 Spark on Yarn 集群资源管理参考here