博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SparkStreaming 第一部分
阅读量:3958 次
发布时间:2019-05-24

本文共 2042 字,大约阅读时间需要 6 分钟。

SparkStreaming概念

Spark Streaming类似于Storm,用于流式数据的处理,具有高吞吐,高容错,离散化特点

Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream,单位时间区间收到的数据作为RDD存在,DStream是由这些 RDD 所组成的序列(离散化)

运行Spark Streaming

IDEA编写程序

Pom.xml 加入以下依赖:

org.apache.spark
spark-sql_2.11
2.4.4
provided
org.apache.spark
spark-streaming_2.11
2.4.4
import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext} object demo{   def main(args: Array[String]): Unit = {        //注意运输模式为local的时候必须至少设置2个core, local[2]    val conf = new SparkConf().setMaster("local[2]").setAppName("Network")    //设置抓取时间间隔    val ssc = new StreamingContext(conf, Seconds(5))        //设置通信流的IP地址,及端口号    // Create a DStream that will connect to hostname:port, like localhost:9999    val lines = ssc.socketTextStream("hadoop2", 9999)    lines.print()        //堵塞,让其等待信息输入      //通过 streamingContext.start()来启动消息采集和处理    ssc.start()    //等待程序终止,通过streamingContext.awaitTermination()设置    ssc.awaitTermination()    //通过streamingContext.stop()可手动终止处理程序  }}

在hadoop主机上安装 yum install nc

执行命令nc -lk 9999

输入一些字段,查看idea控制台打印变化

import org.apache.log4j.{Level, Logger}Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

修改日志级别WARN

架构

Spark Streaming接收器从输入源中读取数据,把数据分组为小的批次。并按单位时间创建出来RDD,处理的结果以批处理的方式传给外部系统

接收器从输入流收集数据并保存为 RDD,且把数据复制到另一个执行器进程,高容错(默认行为)。数据保存在执行器进程的内存中,和缓存 RDD 的方式一样。驱动器程序中的 StreamingContext 周期运行 Spark 作业来处理这些数据,把数据与之前时间区间中的 RDD 进行整合

 

DStreams输入

1、Receiver方式

【流程】

从Kafka通过Receiver接收的数据存储在Spark Executor的内存中,然后由Spark Streaming启动的job来处理数据

【解决数据丢失】

解决零数据丢失,启用Spark Streaming预写日志机制,它会同步地将接收到的Kafka数据保存到HDFS的预写日志中,以便节点在故障时恢复

【特点】

Receiver单点读数据,宕机,程序不能运行

为保证零数据丢失,数据会保存两份,冗余

数据存储在executor内存中,增大内存压力,消费不及时,造成数据冗余

2、Direct方式

周期从Kafka的Topic的partition中获取的最新偏移量,及批处理偏移范围,处理数据作业时,利用偏移范围 ,消费者API从Kafka读取数据

【特点】

1、简化并行:RDD的分区数量=Topic的分区数量

2、高效:数据存储于kafka中,没有数据冗余

3、精确:使用简单API,Offsets则利用Spark Streaming的checkpoints进行记录,消除不一致性

转载地址:http://nvazi.baihongyu.com/

你可能感兴趣的文章
hdu——1106排序(重定向)
查看>>
hdu——1556Color the ball(树状数组)
查看>>
hdu——1541Stars(树状数组)
查看>>
快速幂的精简代码
查看>>
求大数乘方的前n位数字(对数加快速幂)
查看>>
hdu——2602Bone Collector(第一类背包问题)
查看>>
hdu——1711Number Sequence(kmp专练)
查看>>
strstr函数和find函数的异同
查看>>
Java的反射
查看>>
HTTP请求之POST与GET区别
查看>>
SSM结合Redis
查看>>
优化数据库的八种方法
查看>>
Java Web服务收到请求时线程的情况以及session情况
查看>>
SSM配置文件信息加密实现
查看>>
@Produces注解
查看>>
谈谈序列化—实体bean一定要实现Serializable接口?
查看>>
实用小技巧之电脑如何滚动截屏/截取长图
查看>>
Eclipse离线安装Java Decompiler插件
查看>>
Http预请求options
查看>>
未来设计师的工作模式?从室内设计领域的实时设计说起 | Mixlab趋势
查看>>