在Spark中运行并行查询

时间:2014-11-11 10:51:13

标签: hadoop apache-spark

spark如何处理并发查询?我已经阅读了一些关于spark和底层RDD的内容,但我无法理解如何处理并发查询?

例如,如果我运行一个在内存中加载数据并且消耗了整个可用内存的查询,同时其他人运行涉及另一组数据的查询,那么如何将内存分配给两个查询?如果考虑到优先事项,那么会产生什么影响。

同样可以运行大量并行查询会导致机器挂起吗?

1 个答案:

答案 0 :(得分:2)

首先,Spark并没有将内存(RAM)超过阈值限制。

Spark会尝试为每个作业分配默认的内存。

如果新作业的内存不足,则会尝试将LeastRecentlyUsed(LRU)RDD的内存内容溢出到磁盘,然后分配给新作业。

或者您也可以指定RDD的存储,如仅IN-MEMORY,仅DISK,MEMORY和DISK等。

场景:根据上述方法,考虑一个内存较少且没有大量工作的机器,然后大多数RDD将只放在磁盘中。 因此,作业将继续运行,但不会利用Spark内存处理。

Spark非常智能地进行内存分配。

如果在YARN顶部使用Spark,那么资源管理器也会在资源分配中进行。