大数据流式计算之Spark Streaming
一、Scala编程基础
1.什么是Scala语言?
-
三种函数示例
二、什么是流式计算
1、流式计算的背景
在日常生活中,我们通常会先把数据存储在一张表中,然后再进行加工、分析,这里就涉及到一个时效性的问题。如果我们处理以年、月为单位的级别的数据,那么多数据的实时性要求并不高;但如果我们处理的是以天、小时,甚至分钟为单位的数据,那么对数据的时效性要求就比较高。在第二种场景下,如果我们仍旧采用传统的数据处理方式,统一收集数据,存储到数据库中,之后在进行分析,就可能无法满足时效性的要求。
二、流式计算与批量计算
大数据的计算模式主要分为批量计算(batch computing)、流式计算(stream computing)、交互计算(interactive computing)、图计算(graph computing)等。其中,流式计算和批量计算是两种主要的大数据计算模式,分别适用于不同的大数据应用场景。
流数据(或数据流)是指在时间分布和数量上无限的一系列动态数据集合体,数据的价值随着时间的流逝而降低,因此必须实时计算给出秒级响应。流式计算,顾名思义,就是对数据流进行处理,是实时计算。批量计算则统一收集数据,存储到数据库中,然后对数据进行批量处理的数据计算方式。主要体现在以下几个方面:
1、数据时效性不同:流式计算实时、低延迟, 批量计算非实时、高延迟。
2、数据特征不同:流式计算的数据一般是动态的、没有边界的,而批处理的数据一般则是静态数据。
3、应用场景不同:流式计算应用在实时场景,时效性要求比较高的场景,如实时推荐、业务监控…批量计算一般说批处理,应用在实时性要求不高、离线计算的场景下,数据分析、离线报表等。
4、运行方式不同,流式计算的任务持续进行的,批量计算的任务则一次性完成。
三、Spark Streaming的基本原理
-
准备一台搭建好hadoop的环境的linux服务器,可参考https://blog.csdn.net/Test_508337940/article/details/108252498进行搭建
-
下载spark包,注意得和Hadoop的版本相对应。
-
使用tar zxvf spark-3.0.0-bin-hadoop2.7解压该文件
-
注意spark和hadoop的命令是有冲突的,所以只能设置一个,我们这里是设置的Hadoop的,所以直接使用进入sbin/start-all.sh启动。
-
使用nc -l -p 1234来启动netcat消息服务器
-
使用bin/run-example streaming.NetworkWordCount localhost 1234 接收来自网路服务器中1234端口的数据。启动完成后再消息服务器发送消息即可