FusionInsight大数据开发---SparkStreaming概述
SparkStreaming概述
SparkStreaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。
SparkStreaming原理
- SparkStreaming接收实时的输入数据流,然后将这些数据切分为批数据供Spark引擎处理,Spark引擎将数据生成最终的结果数据。
 - 使用DStream从Kafka和HDFS等源获取连接的数据流。DStream是一系列连续的RDD组成。
 
SparkStreaming数据源
- 基本源:HDFS等文件系统、Socket连接等
 - 高级源:Kafka等
 - 自定义源: 需要实现用户自定义receiver
 
可靠性(二次开发)
- Reliable Receiver
 - 设置CheckPoint
 - 确保Driver可以自动启动
 - 使用Write Ahead Log 功能
 
SparkStreaming代码流程
常见业务代码逻辑
- 创建StreamingContext
 - 定义输入源
 - 准备应用计算逻辑
 - 使用streamingContext.start()方法接受和处理数据。
 - 使用streamingContext.stop()方法停止流计算。
 
窗口操作
SparkStreaming支持窗口计算,允许用户在一个滑动窗口数据上应用transformation算子。
窗口在源DStream上滑动,合并和操作落入窗口RDDs,产生窗口化的DStream的RDDs。
Checkpoint
SparkStreaming可以checkpoint足够的信息到容错存储系统中,以使系统崩溃后从故障中恢复。
- Metadata checkpoint:保存流计算的定义信息到HDFS中
 - Data checkpoint:保存生成的RDD到HDFS中。
 
SparkStreaming性能调优
- 设置合理的批处理时间(batch Duration)
 - 设置合理数据接收并行度
 
- 设置多个Receiver接受数据
 - 设置合理的Receiver阻塞时间
 
- 设置合理数据处理并行度
 - 使用Kryo系列化
 - 内存调优
 
- 设置持久化级别减少GC开销
 - 使用并发的标记-清理GC算法减少GC暂停时间
 
FusionInsight大数据开发---SparkStreaming概述的更多相关文章
- FusionInsight大数据开发学习总结(1)
		
FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/sh ...
 - 大数据开发-Spark-Streaming处理数据到mysql
		
前面一篇讲到streamin读取kafka数据加工处理后写到kafka数据,大数据开发-Spark-开发Streaming处理数据 && 写入Kafka是针对比如推荐领域,实时标签等场 ...
 - FusionInsight大数据开发---HDFS应用开发
		
HDFS应用开发 HDFS(Dadoop Distributed File System) HDFS概述 高容错性 高吞吐量 大文件存储 HDFS架构包含三部分 Name Node DataNode ...
 - FusionInsight大数据开发---MapReduce与YARN应用开发
		
MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...
 - FusionInsight大数据开发--HBase应用开发
		
HBase应用开发 HBase的定义 HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统. 适合于存储大表数据,可以达到实时级别. 利用Hadoop HDFS 作为其文件存储系统,提供实时 ...
 - FusionInsight大数据开发---Flume应用开发
		
Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会 ...
 - FusionInsight大数据开发---Hive应用开发
		
Hive应用开发 了解Hive的基本架构原理 掌握JDBC客户端开发流程 了解ODBC客户端的开发流程 了解python客户端的开发流程 了解Hcatalog/webHcat开发接口 掌握Hive开发 ...
 - FusionInsight大数据开发---Oozie应用开发
		
Oozie应用开发 要求: 了解Oozie应用开发适用场景 掌握Oozie应用开发 熟悉并使用Oozie常用API Oozie简介 Oozie是一个Hadoop作业的工作流调度管理系统 Oozie工作 ...
 - FusionInsight大数据开发---Streaming应用开发
		
Streaming应用开发 掌握Streaming基本业务开发流 熟悉Streaming常用API接口使用 掌握Streaming业务设计基本原则 了解Streaming应用开发环境 了解CQL开发流 ...
 
随机推荐
- elasticsearch  安装  可视化工具
			
一.windows下安装Elasticsearch首先计算机需要JAVA环境(已有次此环境跳过)1.java环境安装网址:http://www.oracle.com/technetwork/java/ ...
 - Linux操作系统安全-使用gpg实现对称加密
			
Linux操作系统安全-使用gpg实现对称加密 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.gpg工具包概述 1>.什么是gpg GnuPG是GNU负责安全通信和数据存 ...
 - springBoot配置druid监控报错Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource
			
报错信息: Description: Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource ...
 - TF-IDF算法介绍及实现
			
目录 1.TF-IDF算法介绍 (1)TF是词频(Term Frequency) (2) IDF是逆向文件频率(Inverse Document Frequency) (3)TF-IDF实际上是:TF ...
 - LOJ 3160: 「NOI2019」斗主地
			
题目传送门:LOJ #3160. 简要题意: 有一个长度为 \(n\) 的序列 \(a\),初始时 \(a_i=i\) 或 \(a_i=i^2\),这取决于 \(\mathrm{type}\) 的值. ...
 - 使用ftp搭建yum仓库
			
此次操作在VMware Workstation虚拟机的CentOS7.5下进行 这里使用两台Linux主机,下表是它们所使用的操作系统以及IP地址. 两台Linux主机所使用的操作系统以及IP地址 操 ...
 - Python 字符串内置方法笔记
			
一. 大小写转换 ① capitalize() capitalize() #字符串首字母大写 >>> str0 = 'hello World' >>> str0.c ...
 - 第二章 linux不为人知的命令
			
文件和目录命令 cd /home 进入 home目录' cd ..返回上一级目录 pwd显示当前工作路径 ls查看目录中的文件 ls -l 显示文件和目录的详细资料(可简写为ll),后可跟具体文件名 ...
 - nginx 设置反向代理
			
一.多个路径指向同一ip的不同服务 参考地址:https://www.cnblogs.com/hanmk/p/9289069.html 编辑nginx.conf配置文件,新增加一个server模块,或 ...
 - A Comparison of Serverless Frameworks for Kubernetes: OpenFaas, OpenWhisk, Fission, Kubeless and more
			
The term Serverless has become synonymous with AWS Lambda. Decoupling from AWS has two benefits; it ...