当前位置: 首页 > 知识库问答 >
问题:

在同一集群中同时执行Spark流作业和Spark批处理作业的最佳实践

易俊驰
2023-03-14

我实际上正在部署一个Spark/Kafka/Cassandra应用程序,而我正面临一个不同解决方案的问题,所以我在这里听取您的建议。

>

  • 我在Spark streaming中运行了一个很长时间的应用程序,用于处理Kafka中的Avro消息。根据消息的性质,我可以做一些不同的案例,最后在Cassandra中保存一个记录,所以只是这些技术的一个基本用例。

    所以我正在寻找执行批处理作业的最佳实践。由于spark流作业在运行时占用了集群中的所有资源,我认为我有两种解决方案:

    >

  • 将Spark批处理包含在间隔一小时的Spark流“微”批处理中,例如
    优点:易于执行,优化资源分配
    缺点:不是很干净,微批处理的间隔很大(在这种情况下Spark行为是什么?)

    在群集中保留一些用于Spark作业的资源
    优点:清洁
    缺点:资源分配未优化,导致某些处理器暂时无法执行任何操作

    所以我真的很有兴趣得到你的建议和一些你在类似案件中得到的经验。

  • 共有1个答案

    沈俊晤
    2023-03-14

    您可以在Yarn和Mesos上使用动态分配,以确保您的作业仅在需要时才消耗资源。

     类似资料:
    • 我正在亚马逊的EMR集群上同时运行3个Spark流进程。问题是这三个Spark流作业中的一个基于进行处理: 有没有办法在不更改代码的情况下解决这个问题?

    • 所以我现在花了几个小时试图解决这个问题,并希望得到任何帮助。

    • 我使用了以下格式的输入数据: 我已经使用以下代码段使用多线程将RDD保存为文本文件: 在本例中,我遇到了以下例外情况

    • 我配置了一个spring批处理作业,它在spring WebService中运行。这项工作有几个步骤。我已经在不同的tomcats中部署了这个webservice的两个实例(但两个实例都使用相同的mysql数据库)。 我希望用不同的参数在两个tomcats中同时运行spring批处理作业(每个tomcats中一个)。我没有使用分区,每个作业的参数是完全不同的。 我开始工作在一个汤姆猫和一切看起来很

    • 在k8s集群中。如何配置zeppelin在现有spark集群中运行spark作业,而不是旋转一个新的Pod? 我有一个k8s集群正在运行,我想在其中运行与齐柏林飞艇的火花。 Spark使用官方的Bitnami/Spark helm chart(v3.0.0)进行部署。我有一个主舱和两个工人舱运转良好,一切都很好。 短伪DockerFile: 我稍微修改了。(Image,imagePullSecre

    • 正如标题所预期的,我在向docker上运行的spark集群提交spark作业时遇到了一些问题。 我在scala中写了一个非常简单的火花作业,订阅一个kafka服务器,安排一些数据,并将这些数据存储在一个elastichsearch数据库中。 如果我在我的开发环境(Windows/IntelliJ)中从Ide运行spark作业,那么一切都会完美工作。 然后(我一点也不喜欢java),我按照以下说明添