实际上,我正在部署一个spark/kafka/cassandra应用程序,我面临着一个有不同解决方案的问题,所以我在这里接受您的建议。
我有一个长时间运行的应用程序在Spark流包括处理avro消息在Kafka。根据消息的性质,我可以做一些不同的案例,最后在cassandra中保存一个记录,所以这只是这些技术的一个基本用例。
我还有第二份工作,它包含在一个spark工作中,它在cassandra中获取一些数据,做一些转换。。。我还没有定义作业的频率,但它将从每小时1次到每天1次,因此通常是一个大批量作业。
所以我在寻找执行批处理作业的最佳实践。由于spark流作业在运行时占用了集群中的所有资源,因此我认为有两种解决方案:
例如,将Spark批包含在间隔1小时的Spark流“微型”批中
优点:简单易行,优化资源配置
缺点:不是很干净,小批量间隔时间长(这种情况下Spark的表现是什么?)
为群集中的spark作业保留一些资源
优点:干净
缺点:资源分配没有优化,因为有些处理器暂时不做任何事情
所以我很想听听你的建议和你在类似案件中的经验。
1条答案
按热度按时间xnifntxz1#
您可以在yarn和meso上使用动态分配,以确保您的工作仅在需要时使用资源。