首页 > 其他分享 >Spark 以及 spark streaming 核心原理及实践 - (2)

Spark 以及 spark streaming 核心原理及实践 - (2)

时间:2023-07-07 17:31:49浏览次数:37  
标签:task E6% streaming 内存 Spark com spark


Spark Streaming运行原理

spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,spark streaming是将持续不断输入的数据流转换成多个batch分片,使用一批spark应用实例进行处理。

Spark 以及 spark streaming 核心原理及实践 - (2)_数据

从原理上看,把传统的spark批处理程序变成streaming程序,spark需要构建什么?

Spark 以及 spark streaming 核心原理及实践 - (2)_数据_02

Spark 以及 spark streaming 核心原理及实践 - (2)_git_03

需要构建4个东西:

  1. 一个静态的 RDD DAG 的模板,来表示处理逻辑;
  2. 一个动态的工作控制器,将连续的 streaming data 切分数据片段,并按照模板复制出新的 RDD ;
  3. DAG 的实例,对数据片段进行处理;
  4. Receiver进行原始数据的产生和导入;Receiver将接收到的数据合并为数据块并存到内存或硬盘中,供后续batch RDD进行消费;
  5. 对长时运行任务的保障,包括输入数据的失效后的重构,处理任务的失败后的重调。

具体streaming的详细原理可以参考广点通出品的源码解析文章:

https://github.com/lw-lin/CoolplaySpark/blob/master/Spark%20Streaming%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90%E7%B3%BB%E5%88%97/0.1%20Spark%20Streaming%20%E5%AE%9E%E7%8E%B0%E6%80%9D%E8%B7%AF%E4%B8%8E%E6%A8%A1%E5%9D%97%E6%A6%82%E8%BF%B0.md#24

对于spark streaming需要注意以下三点:

  1. 尽量保证每个work节点中的数据不要落盘,以提升执行效率。

Spark 以及 spark streaming 核心原理及实践 - (2)_大数据_04

  1. 保证每个batch的数据能够在batch interval时间内处理完毕,以免造成数据堆积。

Spark 以及 spark streaming 核心原理及实践 - (2)_内存管理_05

  1. 使用steven提供的框架进行数据接收时的预处理,减少不必要数据的存储和传输。从tdbank中接收后转储前进行过滤,而不是在task具体处理时才进行过滤。

Spark 以及 spark streaming 核心原理及实践 - (2)_git_06

Spark 以及 spark streaming 核心原理及实践 - (2)_spark_07

Spark 资源调优

内存管理:

Spark 以及 spark streaming 核心原理及实践 - (2)_内存管理_08

Executor的内存主要分为三块:

第一块是让task执行我们自己编写的代码时使用,默认是占Executor总内存的20%;

第二块是让task通过shuffle过程拉取了上一个stage的task的输出后,进行聚合等操作时使用,默认也是占Executor总内存的20%;

第三块是让RDD持久化时使用,默认占Executor总内存的60%。

每个task以及每个executor占用的内存需要分析一下。每个task处理一个partiiton的数据,分片太少,会造成内存不够。

其他资源配置:

Spark 以及 spark streaming 核心原理及实践 - (2)_spark_09

具体调优可以参考美团点评出品的调优文章:

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


标签:task,E6%,streaming,内存,Spark,com,spark
From: https://blog.51cto.com/nethub/6654917

相关文章

  • mac spark+hive+hadoop 数据分析环境搭建(单机简版)
    apache产品下载地址:http://archive.apache.org/dist/mysql5.6brew方式安装配置:Icon mysql做为元数据存储使用。[email protected] 配置mysqlhome:exportMYSQL_HOME=/usr/local/opt/[email protected]启动mysql:$MYSQL_HOME/bin/mysql.serverstart$M......
  • Spark的一些重要概念
    Shuffle的深入理解什么是Shuffle,本意为洗牌,在数据处理领域里面,意为将数打散。问题:shuffle一定有网络传输吗?有网络传输的一定是Shuffle吗?Shuffle的概念通过网络将数据传输到多台机器,数据被打散,但是有网络传输,不一定就有shuffle,Shuffle的功能是将具有相同规律的数据按照指定的分......
  • org.apache.spark.shuffle.FetchFailedException: The relative remote executor(Id:
    问题描述org.apache.spark.shuffle.FetchFailedException:Therelativeremoteexecutor(Id:21),whichmaintainstheblockdatatofetchisdead.最近在做Spark的性能优化,测试使用不同CPU核数和内存对计算性能的影响,由于是在测试集群进行测试的,硬件配置比生产上面的要少和......
  • Spark中RDD的特殊算子和重要概念
    RDD特殊的算子cache、persist将数据缓存到内存,第一次触发Action,才会将数据放入内存,以后在触发Action,可以复用前面内存中缓存的数据,可以提升技术效率cache和persist的使用场景:一个application多次触发Action,为了复用前面RDD的数据,避免反复读取HDFS(数据源)中的数据和重复计算,可以......
  • Spark中RDD的Transformation算子
    RDD的Transformation算子mapmap算子的功能为做映射,即将原来的RDD中对应的每一个元素,应用外部传入的函数进行运算,返回一个新的RDDvalrdd1:RDD[Int]=sc.parallelize(List(1,2,3,4,5,6,7,8,9,10),2)valrdd2:RDD[Int]=rdd1.map(_*2)flatMapflatMap算子的功能为扁平......
  • 18、【SparkStreaming】object not serializable (class: org.apache.kafka.clients.c
    背景:当SparkStream连接kafka,消费数据时,报错:objectnotserializable(class:org.apache.kafka.clients.consumer.ConsumerRecord,value:ConsumerRecord分析:消费者的消费记录序列化出现了问题,需要正确的进行序列化。措施:在设置sparkconf的时候,指定序列化方式就可以解......
  • Spark使用Python开发和RDD
    使用PySpark配置python环境在所有节点上按照python3,版本必须是python3.6及以上版本yuminstall-ypython3修改所有节点的环境变量exportJAVA_HOME=/usr/local/jdk1.8.0_251exportPYSPARK_PYTHON=python3exportHADOOP_HOME=/bigdata/hadoop-3.2.1exportHADOOP_CONF_D......
  • Spark编程基础
    Scala编写Spark的WorkCount创建一个Maven项目在pom.xml中添加依赖和插件<!--定义的一些常量--><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><encoding>UTF-8</e......
  • Spark架构体系
    Spark架构体系StandAlone模式是spark自带的集群运行模式,不依赖其他的资源调度框架,部署起来简单。StandAlone模式又分为client模式和cluster模式,本质区别是Driver运行在哪里,如果Driver运行在SparkSubmit进程中就是Client模式,如果Driver运行在集群中就是Cluster模式standalonecl......
  • Spark简介
    SparkSpark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache的顶级项目,2014年5月发布spark1.0,2016年7月发布spark2.0,2020年6月18日发布spark3.0.0特点Hadoop的MapReduce作为第一代分布......