【问题标题】:Can Spark streaming and Spark applications be run within the same YARN cluster?Spark 流和 Spark 应用程序可以在同一个 YARN 集群中运行吗?
【发布时间】:2017-05-28 22:34:24
【问题描述】:
大家好,新年快乐;)!
我正在使用 Apache Spark、HDFS 和 Elastichsearch 构建 lambda 架构。
在下图中,这是我想要做的事情:
到目前为止,我已经为我的 spark 流和 spark 应用程序编写了 java 源代码。我在 spark 文档中读到 spark 可以在 Mesos 或 YARN 集群中运行。如图所示,我已经有了一个hadoop集群。是否可以在同一个 hadoop 集群中运行我的 spark 流和 spark 应用程序?如果是,是否有任何特定配置要做(例如节点数、RAM ......)。还是我必须为 spark 流添加专门的 hadoop 集群?
我希望我的解释清楚。
亚西尔
【问题讨论】:
标签:
hadoop
apache-spark
spark-streaming
hadoop-yarn
【解决方案1】:
您无需构建单独的集群来运行 spark 流。
在conf/spark-defaults.conf 文件中将spark.master 属性更改为yarn-client 或yarn-cluster。指定后,提交的 Spark 应用程序将由 YARN 的 ApplicationMaster 处理,并由 NodeManagers 执行。
另外修改 cores 和 memory 的这些属性以使 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
否则可能导致集群死锁或资源利用不当。
在 Yarn 上运行 Spark 时,请参阅 here 了解集群的资源管理。
【解决方案2】:
这是可能的。您将流式处理和批处理应用程序提交到同一个纱线集群。但是在这两个作业之间共享集群资源可能有点棘手(据我的理解)。
所以我建议您查看Spark Jobserver 来提交您的申请。当您想要维护多个 Spark 上下文时,Spark-jobserver 让您的生活更轻松。两个应用程序所需的所有配置都集中在一处。