
Spark
hxcaifly
这个作者很懒,什么都没留下…
-
原创 【Spark系列】:Spark的内存模型
1. 前言我们都知道 Spark 能够有效的利用内存并进行分布式计算,其内存管理模块在整个系统中扮演着非常重要的角色。为了更好地利用 Spark,深入地理解其内存管理模型具有非常重要的意义,这有助于我们对 Spark 进行更好的调优;在出现各种内存问题时,能够摸清头脑,找到哪块内存区域出现问题。下文介绍的内存模型全部指 Executor 端的内存模型, Driver 端的内存模型本文不做介绍。统...2019-01-05 16:12:272910
6
-
转载 【Spark系列】:Spark性能优化指南——基础篇
文章目录1. 引言2. 开发调优原则一:避免创建重复的RDD原则二:尽可能复用同一个RDD原则三:对多次使用的RDD进行持久化原则四:尽量避免使用shuffle类算子原则五:使用map-side预聚合的shuffle操作原则六:使用高性能的算子原则七:广播大变量原则八:使用Kryo优化序列化性能原则九:优化数据结构3. 资源调优1. 引言在大数据计算领域,Spark已经成为了越来越流行、越来越...2019-03-27 09:56:04117
0
-
原创 【Spark系列】:如何处理数据倾斜
1. 什么是数据倾斜数据倾斜是指我们在并行进行数据处理的时候,由于数据Spark的单个Partition的分布不均,导致大量的数据集中分布到一台或者某几台计算节点上,导致处理速度远低于平均计算速度,从而拖延导致整个计算过程过慢,影响整个计算性能。2. 数据倾斜的危害单个或者某几个task拖延整个任务运行时间,导致整体耗时过大。单个task处理数据过多,很容易导致OOM。3. 数据倾斜...2019-01-26 22:03:01181
0
-
原创 【Spark系列】:Spark 的 shuffle 文件寻址流程
1. 前言让我们先来回忆一下MapReduce 的 shuffle 过程。在MapReduce框架,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中,往往伴随着大量的磁盘和网络I/O。所以shuffle性能的高低也直接决定了整个程序的性能高低。...2019-01-08 22:21:05455
0
-
原创 【Spark系列】:Spark调优策略
1. 资源调优在部署集群的时候,指定资源分配的默认参数,需要在 conf 下面的 spark-env.sh 里面指定:SPARK_WORK_CORES 指定每个 worker 分配的核数SPARK_WORK_MEMORY 指定每个 worker 分配的内存SPARK_WORK_INSTANCES 指定每台机器启动的 worker 数量在提交 APPLICATION 的时候,给当前的任...2019-01-11 15:18:02143
0
-
原创 【Spark系列】:多方面综合对比Spark Streaming和Flink
前言本文从编程模型、任务调度、时间机制、Kafka 动态分区的感知、容错及处理语义、背压等几个方面对比 Spark Stream 与 Flink,希望对有实时处理需求业务的企业端用户在框架选型有所启发。1. 基本概念对比1.1. 运行角色Spark Streaming 运行时的角色(standalone 模式)主要有:Master:主要负责整体集群资源的管理和应用程序调度;Work...2019-01-06 11:37:291215
1
-
原创 【Spark系列】:Spark为什么比Hadoop快
1.前言大数据工程师都喜欢拿Spark和Hadoop进行对比。一般的理解就是:Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。果真如此吗?事实上,不光Spark是内存计算,Hadoop其实也是内存计算。Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。Spark SQL...2019-01-01 20:24:404264
15
-
原创 【Spark系列】:shuffle调优
1.前言Spark 基于内存进行计算,擅长迭代计算,流式处理,但也会发生shuffle 过程。shuffle 的优化,以及避免产生 shuffle 会给程序提高更好的性能。因为 shuffle 的性能优劣直接决定了整个计算引擎的性能和吞吐量。在spark-1.6版本之前,一直使用HashShuffle,在spark-1.6版本之后使用Sort-Base Shuffle,因为HashShuffl...2019-01-01 19:09:58373
5
-
原创 【Spark系列】:Spark的数据本地化
1.数据的本地化级别有哪些?Spark 中任务的处理需要考虑数据的本地性,以 spark 1.6 为例,目前支持以下几种:PROCESS_LOCAL:进程本地化,表示 task 要计算的数据在同一个 Executor 中。NODE_LOCAL:节点本地化,速度稍慢,因为数据需要在不同的进程之间传递或从文件中读取。分为两种情况,第一种:task 要计算的数据是在同一个 worker 的不同 ...2019-01-01 11:39:01676
0
-
转载 【Spark】:Spark性能优化指南——高级篇
文章目录1. 数据倾斜调优1.1. 数据倾斜发生时的现象1.2. 数据倾斜发生的原理1.3. 如何定位导致数据倾斜的代码某个task执行特别慢的情况某个task莫名其妙内存溢出的情况查看导致数据倾斜的key的数据分布情况1.4. 数据倾斜的解决方案解决方案一:使用Hive ETL预处理数据解决方案二:过滤少数导致倾斜的key解决方案三:提高shuffle操作的并行度解决方案四:两阶段聚合(局部聚合...2019-03-27 10:42:52290
0