spark-16.sparkStreaming_1_概述与简单使用

1.sparkStreaming概述

spark streaming用于处理流式计算问题。能够和spark的其它模块无缝集成。它是一个粗粒度的框架,即只能对一批数据指定处理方法,核心是采用微批次架构。和storm采用的以条处理的不同。
在这里插入图片描述
sparkStreaming会运行接收器来不断接收输入的数据流,然后根据程序配置时间,将时间范围内的所有数据打成一个RDD,发送给spark Core 去处理。依次来打成数据流的计算。
在这里插入图片描述
spark Streaming 有它自己的抽象,叫DStream(Discretized Stream,离散化流)。
如果入水口的速度大于出水口的速度,那么势必会导致水管爆裂,spark streaming也存在这个问题,内部采用背压机制来进行处理,会通过ReceiverRateController来不断计算RDD的处理速度和RDD的生成速度,来通过令牌桶机制进行速度控制,主要是通过控制令牌的生成周期来实现。

2.SparkStreaming的简单使用

1.netcat安装(源码安装)

下载源码(也可先通过宿主机浏览器下载,再上传至master节点/opt/software目录)

wget https://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz

解压至指定目录(/opt/module/netcat)

tar -zxvf  /opt/sofeware/netcat-0.7.1.tar.gz -C /opt/module/netcat/

查看编译配置文件

cd /opt/module/netcat/netcat-0.7.1/
./configure

发现需要安装gcc和make,于是通过yum进行安装。

yum install -y gcc
yum install -y make

进行编译安装

make && make install

修改配置文件

vi /etc/profile

追加:

# netcat配置
export NETCAT_HOME=/opt/module/netcat/netcat-0.7.1
export PATH=$PATH:$NETCAT_HOME/bin

重新加载profile

source /etc/profile

运行命令nc -help 有对应输出后,安装完成。
开启9999 端口 并通过控制台向该端口发送数据。

[dendan@master module]$ nc -l -p 9999 

2.编写scala 程序收集并统计单词

package com.dengdan

import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}

object WordCount extends App {

  //创建配置
  val sparkConf = new SparkConf().setAppName("streaming").setMaster("local[*]")
  //创建streamingContext
  val ssc = new StreamingContext(sparkConf, Seconds(5))

  // 业务逻辑:从socket接受数据
  val lineDStream = ssc.socketTextStream("master", 9999)

  val wordStream = lineDStream.flatMap(_.split(" "))
  val word2CountDStream = wordStream.map((_, 1))
  val resultDStream = word2CountDStream.reduceByKey(_ + _)
  resultDStream.print()

  //启动ssc
  ssc.start()
  ssc.awaitTermination()
}

概述Spark Streaming是Apache Spark的一个组件,它提供了实时数据处理的能力。它可以从各种数据源(如Kafka、Flume、Twitter、HDFS等)中读取数据,并将其转换为DStream(离散流)进行处理。Spark Streaming提供了与Spark相同的API,因此可以使用Spark的所有功能来处理实时数据。 基本概念: 1. DStream:离散流,是Spark Streaming的基本抽象。它代表了一个连续的数据流,可以通过一系列的转换操作进行处理。 2. 输入源:Spark Streaming可以从多种输入源中读取数据,如Kafka、Flume、Twitter、HDFS等。 3. 转换操作:Spark Streaming提供了与Spark相同的API,可以使用各种转换操作对DStream进行处理,如map、filter、reduceByKey等。 4. 输出操作:Spark Streaming可以将处理后的数据输出到多种输出源中,如HDFS、数据库、Kafka等。 性能调优: 1. 调整批处理间隔:Spark Streaming的批处理间隔决定了数据处理的延迟和吞吐量。较小的批处理间隔可以提高实时性,但会增加系统负载和网络开销。 2. 调整并行度:并行度决定了Spark Streaming的处理能力。可以通过增加Executor数量、调整Executor内存等方式来提高并行度。 3. 使用持久化存储:Spark Streaming可以使用持久化存储来缓存数据,减少数据读取和处理的开销。 4. 使用数据压缩:数据压缩可以减少数据传输的开销,提高系统吞吐量。 5. 避免数据倾斜:数据倾斜会导致某些Executor负载过重,影响系统性能。可以通过调整数据分区、使用随机键等方式来避免数据倾斜。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值