我实际上正在部署Spark / Kafka / Cassandra应用程序,而且我遇到了不同解决方案的问题,所以我在这里接受你的建议。
我有很长时间在Spark流媒体中运行应用程序,它包括处理Kafka中的Avro消息。根据消息的性质,我可以做一些不同的案例,最后在Cassandra中保存记录,所以只是这些技术的基本用例。
我有第二份工作,包括一个Spark工作,它在Cassandra中获取一些数据,做一些转换......我还没有定义工作的频率,但它将是每次1次每天一小时到一次,所以通常是一个大批量的工作。
所以我正在寻找执行批处理作业的最佳实践。由于火花流式传输作业在运行时占用了集群中的所有资源,因此我认为我有两个解决方案:
将Spark批处理包含在火花流中" micro"例如,间隔为一小时的批次 Pro:易于操作,优化资源分配 缺点:不是很干净,微批次间隔很大(在这种情况下Spark行为是什么?)
为群集中的Spark作业保留一些资源
亲:清洁
缺点:资源分配未优化导致某些处理器暂时不会做任何事情
因此,我非常有兴趣获得您的建议以及在类似情况下获得的一些经验。