通过Spark中的FAIR调度实现并发

时间:2018-08-16 11:36:48

标签: apache-spark concurrency cassandra spark-thriftserver

我的环境: 我正在尝试通过Spark Thrift服务器连接Cassandra。然后,我在Hive Metastore中创建一个元表,其中包含Cassandra表数据。在Web应用程序中,我通过JDBC驱动程序连接到元表。我已经为Spark Thrift Server启用了公平调度。

问题: 当我通过JMeter对100个用户进行300秒持续时间的并发性负载测试时,我得到的初始请求响应时间不到几秒(例如前30秒)。然后响应时间逐渐增加(例如2到3秒)。当我检查Spark UI时,所有作业的执行时间不到100毫秒。我还注意到,收到请求后,作业和任务处于待定阶段。因此,我假设即使任务花费了几秒钟的时间,但调度程序仍会延迟提交它们。如何解决作业提交中的延迟?

以下是我的配置详细信息, 工人人数-2 每个工人的执行者数量-1 每个执行器的核心数-14 工人总人数-30 每个执行器的内存-20Gb 工作人员总内存-106Gb

公平计划XML中的配置

<pool name="default">
    <schedulingMode>FAIR</schedulingMode>
    <weight>2</weight>
    <minShare>15</minShare>
  </pool>
  <pool name="test">
    <schedulingMode>FIFO</schedulingMode>
    <weight>2</weight>
    <minShare>3</minShare>
  </pool>

我正在以Spark Standalone模式执行。

1 个答案:

答案 0 :(得分:0)

不是其他查询正在运行时队列中有未决查询的情况。尝试减少spark.locality.wait说1秒