0

我运行的火花与纱线与流 - 通过DireactStream方法(没有接收器)星火用长丝流:执行者没有充分利用

spark-submit --master yarn --deploy-mode cluster --num-executors 2 --executor-memory 8g --driver-memory 2g --executor-cores 8 .. 

我消耗卡夫卡。我有2个主题(每个有3个分区)。我有一个DStream(我有一个DStream)分为16个部分(假设执行者的数量*核心数量= 2 * 8 = 16是否正确?),然后我做foreachPartition并将每个分区写入本地文件,然后通过http发送给其他服务器(不是spark)(使用带有pooling manager的apache http sync客户端,通过带有多部分的post)。

当我通过Spark UI检查了这一步的详细信息(或者JOB是否正确命名?)时,它显示总共16个任务一次执行8个任务的单个执行器。

这是火花UI细节 -

细则舞台717上(尝试0)

Index ID Attempt Status Locality Level Executor ID/Host Launch Time Duration GC Time Shuffle Read Size/Records Errors 
0 5080 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 313.3 KB/6137 
1 5081 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 328.5 KB/6452 
2 5082 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 324.3 KB/6364 
3 5083 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 321.5 KB/6306 
4 5084 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 324.8 KB/6364 
5 5085 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 320.8 KB/6307 
6 5086 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 2 s 11 ms 323.4 KB/6356 
7 5087 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:46 3 s 11 ms 316.8 KB/6207 
8 5088 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 317.7 KB/6245 
9 5089 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 320.4 KB/6280 
10 5090 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 323.0 KB/6334 
11 5091 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 323.7 KB/6371 
12 5092 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 316.7 KB/6218 
13 5093 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 321.0 KB/6301 
14 5094 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:48 2 s 321.4 KB/6304 
15 5095 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/27 12:11:49 2 s 319.1 KB/6267 

我期待它来执行16并行任务(2执行人* 8芯)任一一个或多个执行者。我想我错过了一些东西。请帮忙。

更新:

  1. 传入的数据不是均匀分布的。例如第一个话题有5 * 5 = 25k个消息(5k = maxRatePerPartition,5s =批量间隔)的第二个分区,另外两个分区几乎有0个数据。第二个主题每批有500-4000个消息,均匀分布在3个分区中。

  2. 当主题1中没有数据时,我会看到跨2个执行者的16个并行任务处理。


Index ID Attempt Status Locality Level Executor ID/Host Launch Time Duration GC Time Shuffle Read Size/Records Errors 
0 330402 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 1 s 19.2 KB/193 
1 330403 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 21.2 KB/227 
2 330404 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 1 s 20.8 KB/214 
3 330405 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 20.9 KB/222 
4 330406 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 2 s 21.0 KB/222 
5 330407 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 20.5 KB/213 
6 330408 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 1 s 20.4 KB/207 
7 330409 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 19.2 KB/188 
8 330410 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 1 s 20.4 KB/214 
9 330411 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 20.1 KB/206 
10 330412 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 0.6 s 18.7 KB/183 
11 330413 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 20.6 KB/217 
12 330414 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 1 s 20.0 KB/206 
13 330415 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 20.7 KB/216 
14 330416 0 SUCCESS NODE_LOCAL 1/executor1_machine_host_name 2016/12/28 04:31:41 1 s 18.8 KB/186 
15 330417 0 SUCCESS NODE_LOCAL 2/executor2_machine_host_name 2016/12/28 04:31:41 1 s 20.4 KB/213 
+0

请检查此问题[回答一次](http://stackoverflow.com/questions/38465692/sp​​ark-coalesce-relationship-with-number-of-executors-and-cores/40410040#40410040)。 – mrsrinivas

+0

尝试给予'--num-executors 6'(因为你有2个主题,每个主题有3个分区)。 ** 1个分区= 1个执行者**是理想的选择。('--executor-cores'将取决于你的核心可用性和每个分区所需的并行化) – mrsrinivas

+0

我试着用6个执行器和4个内核,但这个阶段的所有任务仍然在同一个执行器上执行(现在每次4个) –

回答

0

尝试增加分区的数量等于执行核心数量,因为你给8个执行内核,增加分区的数量卡夫卡话题8. 此外,检查是否发生了什么你不要做重新分区。

+1

我怀疑这会解决我的问题,因为阅读不是瓶颈,它的安排我猜 –

0

设置以下参数与--num-执行人6

spark.default.parallelism

spark.streaming.concurrentJobs

根据客户的要求和环境设定上述参数值。这将为你工作。