1.Input DStreams 和 Receivers
Streaming的输入是由两个部分组成. Input DStreams 和 Receivers
Input DStream 代表从数据源接受到的输入数据流
Receiver 是从数据源接受输入数据,将其写入到 Input DStream的具体执行者. 每一个 Input DStream ( FileStream 除外) 都会与一个Receiver 关联
如果需要在流处理程序中并行的接受多个数据流,可以创建多个 Input DStream (这将同时创建多个Receiver ).
注意Streaming是一个长期运行的任务,所以其每一个Spark executor会长期占用某一个核.所以Streaming应用必须拥有足够多的核来运行负责接受数据的Receiver (别忘记计算的executor本身,所以核数必须大于Receiver数)
比如在本地运行时, “local” 或者 “local[1]”是不会处理的.唯一的核被分配给了Receiver(Receiver优先),所以数据会被正确接受,但不会产生处理.