随笔分类 - Spark
摘要:Spark Troubleshooting 3.1 故障排除一:控制 reduce 端缓冲大小以避免 OOM 在 Shuffle 过程,reduce 端 task 并不是等到 map 端 task 将其数据全部写入磁盘 后再去拉取,而是 map 端写一点数据,reduce 端 task 就会拉取一小
阅读全文
摘要:Spark 数据倾斜 Spark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不 同的 key 对应的数据量不同导致的不同 task 所处理的数据量不同的问题。 例如,reduce 点一共要处理 100 万条数据,第一个和第二个 task 分别被分配到 了 1 万条数据,
阅读全文
摘要:Spark 性能调优 1.1 常规性能调优 1.1.1 常规性能调优一:最优资源配置 Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资 源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑 进行后面论述的性能调优策略。 资源的分配在使用脚本提交 Spa
阅读全文
摘要:7.Spark 核心组件解析 7.1 BlockManager 数据存储与管理机制 BlockManager 是整个 Spark 底层负责数据存储与管理的一个组件,Driver 和 Executor 的所有数据都由对应的 BlockManager 进行管理。 Driver 上有 BlockManag
阅读全文
摘要:6.Spark 内存管理 在执行 Spark 的应用程序时, Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job), 并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务
阅读全文
摘要:5.Spark Shuffle 解析 5.1 Shuffle 的核心要点 5.1.1 ShuffleMapStage 与 FinalStage 在划分 stage 时,最后一个 stage 称为 FinalStage,它本质上是一个 ResultStage 对象,前面的所有 stage 被称为 Sh
阅读全文
摘要:4.Spark 任务调度机制 在工厂环境下,Spark 集群的部署方式一般为 YARN-Cluster 模式,之后的内核 分析内容中我们默认集群的部署方式为 YARN-Cluster 模式。 4.1 Spark 任务提交流程 在上一章中我们讲解了 Spark YARN-Cluster 模式下的任务提
阅读全文
摘要:3.Spark 通讯架构 3.1 Spark 通信架构概述 Spark2.x 版本使用 Netty 通讯框架作为内部通讯组件。spark 基于 netty 新的 rpc 框架借鉴了 Akka 的中的设计,它是基于 Actor 模型,如下图所示: Spark 通讯框架中各个组件(Client/Mast
阅读全文
摘要:1.Spark 内核概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制、Spark 任务调度机制、Spark 内存管理机制、Spark 核心功能的运行原理等,熟练掌握 Spark 内核原理,能够帮助我们更好地完成 Spark 代码设计,并能够帮助我们准确锁定
阅读全文
摘要:5.DStream 输出 输出操作指定了对流数据经转化操作得到的数据所要执行的操作(例如把结果推入外部数据 库或输出到屏幕上)。与 RDD 中的惰性求值类似,如果一个 DStream 及其派生出的 DStream 都没 有被执行输出操作,那么这些 DStream 就都不会被求值。如果 Streami
阅读全文
摘要:3.Dstream 创建 Spark Streaming 原生支持一些不同的数据源。一些“核心”数据源已经被打包到 Spark Streaming 的 Maven 工件中,而其他的一些则可以通过 spark-streaming-kafka 等附加工件获取。 每个接收器都以 Spark 执行器程序中一
阅读全文
摘要:4.DStream 转换 DStream 上的原语与 RDD 的类似,分为 Transformations(转换)和 Output Operations(输 出)两种,此外转换操作中还有一些比较特殊的原语,如:updateStateByKey()、transform()以及 各种 Window 相关
阅读全文
摘要:2.Dstream 入门 Spark Streaming的入口 StreamingContext 初始化完Context之后: 1)定义消息输入源来创建DStreams. 2)定义DStreams的转化操作和输出操作。 3)通过 streamingContext.start()来启动消息采集和处理.
阅读全文
摘要:1.Spark Streaming 概述 1.1 Spark Streaming 是什么 Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、 Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可
阅读全文
摘要:3.SparkSQL 数据源 3.1 通用加载/保存方法 3.1.1 手动指定选项 Spark SQL 的 DataFrame 接口支持多种数据源的操作。一个 DataFrame 可以进行 RDDs 方式 的操作,也可以被注册为临时表。把 DataFrame 注册为临时表之后,就可以对该 DataF
阅读全文
摘要:2.SparkSQL 编程 2.1 SparkSession 新的起始点 在老的版本中,SparkSQL 提供两种 SQL 查询起始点:一个叫 SQLContext,用于 Spark 自己 提供的 SQL 查询;一个叫 HiveContext,用于连接 Hive 的查询。 SparkSession
阅读全文
摘要:1.Spark SQL 概述 1.1 什么是 Spark SQL Spark SQL 是 Spark 用来处理结构化数据的一个模块,它提供了 2 个编程抽象:DataFrame 和 DataSet,并且作为分布式 SQL 查询引擎的作用。 我们已经学习了 Hive,它是将 Hive SQL 转换成
阅读全文
摘要:5.RDD 编程进阶 5.1 累加器 累加器用来对信息进行聚合,通常在向 Spark 传递函数时,比如使用 map() 函数或者 用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会 得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如
阅读全文
摘要:4.数据读取与保存 Spark 的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。 文件格式分为:Text 文件、Json 文件、Csv 文件、Sequence 文件以及 Object 文件; 文件系统分为:本地文件系统、HDFS、HBASE 以及数据库。 1)数据读取:textFi
阅读全文
摘要:3.键值对 RDD 数据分区 Spark 目前支持 Hash 分区和 Range 分区,用户也可以自定义分区,Hash 分区为当前 的默认分区,Spark 中分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过 Shuffle 过程属于哪个分区和 Reduce 的个数 注意: (1)只有
阅读全文

浙公网安备 33010602011771号