Spark从入门到精通28:Spark Streaming简介

1.什么是Spark Streaming

Spark Streaming是在Spark Core API的基础上,实现的可扩展、高吞吐、可容错的实时数据流处理引擎。Spark Streaming的数据源可以从Kafka、Flume、Kinesis或TCP Socket等获得,并且可以使用由高级函数(如map、reduce、join、window等)开发的复杂算法进行流数据处理。最后,处理完的数据可以推送到文件系统、数据库或实时仪表盘等处存储和展示。甚至,Spark Streaming还提供了机器学习和图处理算法以供使用。

下图展示了Spark Streaming常见的数据来源和去向:

image

2.Spark Streaming的特点

下面是官网上给出的Spark Streaming的特点:http://spark.apache.org/docs/latest/streaming-programming-guide.html

image
  1. 易用:使用高级算子构造应用。Spark Streaming扩展了Spark Core API来处理流数据,使得流处理和批处理一样方便。Spark Streaming支持Java、Scala和Python。
  2. 容错性强:可以开箱即用。Spark Streaming开箱后无需任何额外的代码,就能恢复丢失的工作和操作状态(如滑动窗口等)。
  3. Spark集成:集成了流处理、批处理和交互查询。通过在Spark上运行,Spark Streaming允许您重复使用相同的代码进行批处理,将流加入历史数据,或者在流状态下运行即席查询。 构建功能强大的交互式应用程序,不仅仅是分析。

3.Spark Streaming的工作原理

Spark Streaming的内部工作原理如下所示:Spark Streaming接收实时输入的数据流,然后将数据流切分成批,交给Spark引擎进行处理,最终生成“批处理”形式的的结果流。

image

Spark Streaming将连续的数据流切分成离散的数据流,即Discretized Stream,简称DStream。DStream的本质是一个由许多RDD组成的序列。

4.案例:演示示例程序NetworkWordCount

(1)在终端1上,启动netcat服务器,向9999端口发送数据

[root@localhost ~ ] # nc -l -p 9999

(2)在终端2上,执行示例程序NetworkWordCount,监听本机的9999端口发来的数据

[root@localhost ~ ] # $SPARK_HOME/bin/run-example streaming.NetworkWordCount localhost 9999

(3)在终端1上,输入要发送的数据,按回车发送

I love Beijing
I love China
Beijing is the capital of China

(4)在终端2上,查看Spark Streaming处理的结果

image
image

注意:如果要确保本例执行成功, 那么必须要使机器的CPU核数大于等于2。一个核用于监听,至少一个核用于计算。否则只有一个核的话,程序会停在那里(只监听,不计算)。

你可能感兴趣的:(Spark从入门到精通28:Spark Streaming简介)