Spark Streaming 数据接收优化

  • 时间:
  • 浏览:2
  • 来源:5分排列5_5分排列3

也可是你们歌词 歌词 尽量让数据都占用Spark 的Storage 内存。妙招是把spark.streaming.blockInterval 调小点。当然也会造成另另另还还有一个副作用,可是input-block 会多。每个Receiver 产生的的input-block数为: batchInterval* 100/blockInterval。 这里假设你的batchInterval 是以秒为单位的。 blockInterval 觉得告诉我会有啥影响。觉得说白了,可是为了避免GC的压力。实时计算另另另还还有一个很大问提是GC。

我发现在数据量很大的具体情况下,最容易挂掉的可是Receiver所在的Executor了。 建议Spark Streaming团队最好是能将数据写入到多个BlockManager上。

这篇内容是但会 人的但会 经验,你们歌词 歌词 用的过后还是建议好好理解内部人员的原理,不可照搬

另外,务必给你系统设置 spark.streaming.receiver.maxRate。假设你启动了 N个 Receiver,没人 你系统实际会接受到的数据很多超过 N*MaxRate,也可是说,maxRate参数是针对每个 Receiver 设置的。

一般在Spark Streaming中不建议把 Executor 的内存调的很多。对GC是个压力,大内存一FullGC比较可怕,很意味着会拖垮整个计算。 多Executor的容错性也会更好些。

kafkaDStreamsNum 那个她 但会 人定义的,希望有几个个Executor 启动Receiver 去接收kafka数据。我的经验值是 1/4 个Executors 数目。意味着数据时要做replication 一般,很多很多很多很多原本内存最大都可以占到  1/2 的storage.

从现在的API来看,是没人 提供这俩途径的。但会 Spark Streaming 提供了一并读多个topic的功能,每个topic是另另另还还有一个InputStream。 你们歌词 歌词 都可以复用这俩功能,具体代码如下: