Spark学习笔记:输入DStream和Receiver详解

输入DStream和Receiver详解

输入DStream代表了来自数据源的输入数据流,除了文件数据流之外,所有的输入DStream都会绑定一个Receiver对象,Receiver用于接收数据,然后将数据存储在Spark的内存中,以供后续的操作使用。

SparkStreaming提供的数据源支持

  • 基础数据源:StreamingContext API中直接提供了对这些数据源的支持,比如文件、Socket、Akka Actor等
  • 高级数据源:诸如Kafka、Flume、Kinesis、Twitter等数据源,通过第三方工具类提供支持,这些数据源的使用需要引用其依赖

注意事项

  • 如果要在实时计算应用中并行接收多条数据流,可以创建多个输入DStream,这样就会创建多个Receiver,从而并行地接收多个数据流。这里有一个问题,一个Spark Streaming应用程序的executor是一个长期运行的任务,所以它会独占分配给Spark Streaming应用程序的CPU core,所以只要Spark Streaming运行起来之后,这个节点上的CPU core数就没有办法给其他的应用所使用了,因为会被Receiver所独占
  • 使用本地模式运行程序时,必须使用local[n],n>=2绝对不能用local和local[1],因为就会给执行输入DStream的executor分配一个线程,Spark Streaming底层的原理需要至少有两个线程,一个线程分配给Receiver接收数据,另一个线程用来处理接收到的数据。如果线程小于2的话,那么程序只会接收数据,不会处理数据
  • 如果直接将Spark Streaming应用提交到集群上运行,需要保证有足够资源
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值