随笔分类 - Spark汇总
摘要:一、前述 Spark中Shuffle文件的寻址是一个文件底层的管理机制,所以还是有必要了解一下的。 二、架构图 三、基本概念: 1) MapOutputTracker MapOutputTracker是Spark架构中的一个模块,是一个主从架构。管理磁盘小文件的地址。 MapOutputTracke
阅读全文
摘要:一、前述 SparkSql中自定义函数包括UDF和UDAF UDF:一进一出 UDAF:多进一出 (联想Sum函数) 二、UDF函数 UDF:用户自定义函数,user defined function * 根据UDF函数参数的个数来决定是实现哪一个UDF UDF1,UDF2。。。。UDF1xxx *
阅读全文
摘要:一、前述 SparkStreaming中的算子分为两类,一类是Transformation类算子,一类是OutPutOperator类算子。 Transformation类算子updateStateByKey,reduceByKeyAndWindow,transform OutPutOperator
阅读全文
摘要:一、前述 本文总结了常用的Spark的troubleshooting。 二、具体 1、shuffle file cannot find:磁盘小文件找不到。 1) connection timeout shuffle file cannot find 提高建立连接的超时时间,或者降低gc,降低gc了那
阅读全文
摘要:一、前述 数据倾斜问题是大数据中的头号问题,所以解决数据清洗尤为重要,本文只针对几个常见的应用场景做些分析 。 二。具体方法 1、使用Hive ETL预处理数据 方案适用场景: 如果导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不均匀(比如某个key对应了100万数据,其他key才对应了
阅读全文
摘要:一、前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存。 二、具体 1、代码调优 1、避免创建重复的RDD,尽量使用同一个RDD 2、对多次使用的RDD进行持久化 如何选择一种最合适的持久化策略? 默认情况下,性能最
阅读全文
摘要:一、前述 SparkSQL中的UDF相当于是1进1出,UDAF相当于是多进一出,类似于聚合函数。 开窗函数一般分组取topn时常用。 二、UDF和UDAF函数 1、UDF函数 java代码: 这些参数需要对应,UDF2就是表示传两个参数,UDF3就是传三个参数。 scala代码: 2、UDAF:用户
阅读全文
摘要:一、前述 今天分享一篇SparkStreaming常用的算子transform和updateStateByKey。 可以通过transform算子,对Dstream做RDD到RDD的任意操作。其实就是DStream的类型转换。 算子内,拿到的RDD算子外,代码是在Driver端执行的,每个batch
阅读全文
摘要:一、前述 SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, Twitter, ZeroMQ或者TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map,redu
阅读全文
摘要:一、前述 Spark on Hive: Hive只作为储存角色,Spark负责sql解析优化,执行。 二、具体配置 1、在Spark客户端配置Hive On Spark 在Spark客户端安装包下spark-1.6.0/conf中创建文件hive-site.xml: 配置hive的metastore
阅读全文
摘要:一、前述 1、SparkSQL介绍 Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制。 SparkSQL支持查询原生的RDD。 RDD是Spark平台的核心概念,是Spark能够高效的处理大数据的各种场景的基础。 能够在Sca
阅读全文
摘要:一、前述 Spark内存管理 Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等。Executor负责task的计算任务,并将结果返回给Driver。同时需要为需要持久化的RDD提
阅读全文
摘要:一、前述 Spark中Shuffle的机制可以分为HashShuffle,SortShuffle。 SparkShuffle概念 reduceByKey会将上一个RDD中的每一个key对应的所有value聚合成一个value,然后生成一个新的RDD,元素类型是<key,value>对的形式,这样每一
阅读全文
摘要:一、前述 本节讲述Spark Master的HA的搭建,为的是防止单点故障。 Spark-UI 的使用介绍,可以更好的监控Spark应用程序的执行。 二、具体细节 1、Master HA 1、Master的高可用原理 Standalone集群只有一个Master,如果Master挂了就无法提交应用程
阅读全文
摘要:一、前述 Spark中因为算子中的真正逻辑是发送到Executor中去运行的,所以当Executor中需要引用外部变量时,需要使用广播变量。 累机器相当于统筹大变量,常用于计数,统计。 二、具体原理 1、广播变量 广播变量理解图 注意事项 1、能不能将一个RDD使用广播变量广播出去? 不能,因为RD
阅读全文
摘要:一、前述 Spark中资源调度是一个非常核心的模块,尤其对于我们提交参数来说,需要具体到某些配置,所以提交配置的参数于源码一一对应,掌握此节对于Spark在任务执行过程中的资源分配会更上一层楼。由于源码部分太多本节只抽取关键部分和结论阐述,更多的偏于应用。 二、具体细节 1、Spark-Submit
阅读全文
摘要:一、前述 今天继续整理几个Transformation算子如下: mapPartitionWithIndex repartition coalesce groupByKey zip zipWithIndex 二、具体细节 mapPartitionWithIndex 类似于mapPartitions,
阅读全文
摘要:一、前述 Spark的资源调度是个很重要的模块,只要搞懂原理,才能具体明白Spark是怎么执行的,所以尤其重要。 自愿申请的话,本文分粗粒度和细粒度模式分别介绍。 二、具体 Spark资源调度流程图: Spark资源调度和任务调度的流程: 1、启动集群后,Worker节点会向Master节点汇报资源
阅读全文
摘要:一、前述 RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖。 Spark中的Stage其实就是一组并行的任务,任务是一个个的task 。 二、具体细节 窄依赖 父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partitio
阅读全文
摘要:一、前述 Spark可以和Yarn整合,将Application提交到Yarn上运行,和StandAlone提交模式一样,Yarn也有两种提交任务的方式。 二、具体 1、yarn-client提交任务方式 配置 在client节点配置中spark-env.sh添加Hadoop_HOME的配置目录即可
阅读全文