Spark Streaming运行原理
spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,spark streaming是将持续不断输入的数据流转换成多个batch分片,使用一批spark应用实例进行处理。
从原理上看,把传统的spark批处理程序变成streaming程序,spark需要构建什么?
需要构建4个东西:
-
一个静态的 RDD DAG 的模板,来表示处理逻辑;
-
一个动态的工作控制器,将连续的 streaming data 切分数据片段,并按照模板复制出新的 RDD ;
-
DAG 的实例,对数据片段进行处理;
-
Receiver进行原始数据的产生和导入;Receiver将接收到的数据合并为数据块并存到内存或硬盘中,供后续batch RDD进行消费;
-
对长时运行任务的保障,包括输入数据的失效后的重构,处理任务的失败后的重调。
具体streaming的详细原理可以参考广点通出品的源码解析文章:
对于spark streaming需要注意以下三点:
- 尽量保证每个work节点中的数据不要落盘,以提升执行效率。
- 保证每个batch的数据能够在batch interval时间内处理完毕,以免造成数据堆积。
- 使用steven提供的框架进行数据接收时的预处理,减少不必要数据的存储和传输。从tdbank中接收后转储前进行过滤,而不是在task具体处理时才进行过滤。
Spark 资源调优
内存管理:
Executor的内存主要分为三块:
第一块是让task执行我们自己编写的代码时使用,默认是占Executor总内存的20%;
第二块是让task通过shuffle过程拉取了上一个stage的task的输出后,进行聚合等操作时使用,默认也是占Executor总内存的20%;
第三块是让RDD持久化时使用,默认占Executor总内存的60%。
每个task以及每个executor占用的内存需要分析一下。每个task处理一个partiiton的数据,分片太少,会造成内存不够。
其他资源配置:
具体调优可以参考美团点评出品的调优文章:
http://tech.meituan.com/spark-tuning-basic.html
http://tech.meituan.com/spark-tuning-pro.html
Spark 环境搭建
spark tdw以及tdbank api文档:
http://git.code.oa.com/tdw/tdw-spark-common/wikis/api
其他学习资料:
http://km.oa.com/group/2430/articles/show/257492
原文链接:https://www.qcloud.com/community/article/770164
https://www.cnblogs.com/liuliliuli2017/p/6809094.html
相关推荐
### Spark Streaming原理与实践 #### 一、为什么需要流处理? 传统的批处理框架如MapReduce在处理实时数据流时存在一些局限性,主要是因为每次处理一批数据就需要启动一个新任务,而任务的启动过程(包括输入切分...
对于Spark Streaming Twitter项目来说,这意味着开发者可以深入理解其内部工作原理,根据自己的需求进行定制,或者贡献代码回项目。 【压缩包子文件的文件名称列表】中的"orafile-master"可能表示解压后的文件夹名...
7.SparkStreaming(上)--SparkStreaming原理介绍.pdf 7.SparkStreaming(下)--SparkStreaming实战.pdf 8.SparkMLlib(上)--机器学习及SparkMLlib简介.pdf 8.SparkMLlib(下)--SparkMLlib实战.pdf 9.SparkGraphX...
### Spark Streaming原理与实战 #### 一、Spark Streaming概述 **Spark Streaming** 是Apache Spark生态中的一个重要组件,它主要用于处理实时数据流。相比于传统的批处理技术,Spark Streaming提供了对实时数据流...
### Spark Streaming工作原理 #### 四、工作流程 1. **实时数据接收**:Spark Streaming接收实时输入数据流。 2. **数据分批**:将数据流分割成一系列微小的批次数据。 3. **数据处理**:利用Spark Engine处理这些...
在"大数据技术原理及应用课实验7:Spark初级编程实践"中,我们主要关注Spark的两个核心知识点:数据读取和Spark应用程序的开发流程。 首先,Spark提供了一种简单的方式去访问不同的数据源,包括本地文件系统和...
Spark-assembly-1.5.2-hadoop2.6.0.jar是一个fat jar,包含了Spark的所有依赖,包括Spark自身的核心库、Hadoop客户端库以及其他相关的第三方库。这样做的目的是为了简化Spark应用程序的部署,避免因依赖冲突而引发...
数据一旦被接收,Spark Streaming就可以利用Spark的强大功能进行转换和处理,包括映射、归约、联结以及窗口操作等。 Spark Streaming 处理实时数据流的能力得到了容错性的加强。得益于底层的RDD(弹性分布式数据集...
以下将详细介绍Spark Streaming和Storm的核心原理,并进行对比分析。 首先来了解Spark Streaming,它是由Spark提供的一种实时数据处理框架。Spark Streaming利用了Spark强大的批处理能力,并将流式计算转换成一系列...
总的来说,《Spark Streaming Systems》是理解Spark Streaming原理和实践的宝贵资源,无论你是初学者还是有经验的开发者,都能从中获得对实时数据处理深入的理解,并学会如何利用Spark Streaming构建高性能的流处理...
### Spark Streaming 原理详解 #### 1. Spark Streaming 简介 ...通过对 Spark Streaming 的核心概念、架构设计、编程模型以及性能优化策略的深入理解,可以帮助开发者更好地构建高效、可靠的实时数据处理系统。
Spark Streaming 的工作原理基于微批处理(Micro-batching),它将实时数据流分解为一系列小批次的数据块,这些数据块被称为 Discrete Stream,或简称 DStream。DStream 是一系列连续的 Resilient Distributed ...
Spark Streaming将数据流分割成一系列小批量的数据块进行处理,这种机制使得Spark Streaming既能够处理实时数据流,又能利用Spark的核心API进行复杂的数据处理。 #### 2. Kafka简介 Apache Kafka是一种分布式的发布...
Spark Streaming 与 Kafka 集成原理 Spark Streaming 与 Kafka 集成原理是指 Spark Streaming 框架与 Kafka 消息队列系统的集成,旨在实现高效、实时的数据处理和分析。该集成原理主要包括两种方案:Receiver-based...
### 开发者最佳实践日——Spark生态系统与内部机制 #### 一、Spark概述与内部机制 **1.1 Spark简介** Apache Spark 是一种快速且通用的大规模数据处理引擎。它以其高速度、易用性、通用性和对Hadoop的集成支持而...
这本书全面覆盖了Apache Spark的核心概念、技术和最佳实践,为读者提供了一个深入了解Spark的窗口。 Spark作为一个快速、通用且可扩展的大数据处理框架,其主要特点在于内存计算,能够大大提高数据处理的效率。2017...
Apache Spark的核心优势在于其围绕速度、易用性和复杂分析构建的能力。相较于其他大数据处理技术如Hadoop和Storm,Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度...
《Spark技术内幕:深入解析Spark内核架构设计与实现原理》是张安站所著的一本深度剖析Spark核心架构和实现细节的专业书籍。Spark作为大数据处理领域的热门框架,以其高效、易用和可扩展性备受青睐。这本书旨在帮助...