我们有一个要求,即必须近乎实时地进行计算(最多100毫秒)并且涉及可以轻松并行化的中等复杂计算。我们正在考虑的其中一个选项是除了Apache Hadoop YARN之外,还以批处理模式使用spark。我已经读到,将批量作业提交给spark会产生巨大的开销。这是否可以减少/消除这种开销?
答案 0 :(得分:0)
Spark最好地利用可用资源,即内存和内核。 Spark使用Data Locality的概念。
如果数据和在其上运行的代码在一起,那么计算往往很快。但是如果代码和数据是分开的,那么必须移动到另一个。通常,将序列化代码从一个地方运送到另一个地方比一块数据更快,因为代码大小比数据小得多。 如果你的资源很少,肯定会安排和处理时间。 Spark围绕数据局部性的一般原则构建其调度。
Spark更喜欢在最佳位置级别安排所有任务,但这并非总是可行。 查看https://spark.apache.org/docs/1.2.0/tuning.html#data-locality