
spark
JQW_YNU
无
展开
-
Spark性能优化第七季之Spark 钨丝计划
一:“钨丝计划”产生的本质原因1,Spark作为一个一体化多元化的(大)数据处理通用平台,性能一直是其根本性的追求之一,Spark基于内存迭代(部分基于磁盘迭代)的模型极大的满足了人们对分布式系统处理性能的渴望,但是有Spark事采用Scala+Java语言编写的所以运行在JVM平台,当然JVM是一个绝对伟大的平台,因为JVM让整个离散的主机融为一体(网络即OS),但是JVM的死穴GC反过来限...转载 2018-08-28 09:47:02 · 244 阅读 · 0 评论 -
[spark 面试]Spark解决数据倾斜问题
一、前述数据倾斜问题是大数据中的头号问题,所以解决数据倾斜尤为重要,本文只针对几个常见的应用场景做些分析 。 二。具体方法 1、使用Hive ETL预处理数据方案适用场景:如果导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不均匀(比如某个key对应了100万数据,其他key才对应了10条数据),而且业务场景需要频繁使用Spark对Hive表执行某个分析操作...原创 2018-08-31 20:24:03 · 1543 阅读 · 1 评论 -
Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法
Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法1、spreadOutApp尽量平均分配到每个executor上;2、非spreadOutApp尽量在使用单个executor的资源。 源码分析org.apache.spark.deploy.master.Master1、首先判断,master状态不是ALIVE的话...转载 2018-08-24 22:55:17 · 336 阅读 · 0 评论 -
Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
本課主題Spark Worker 原理 Worker 启动 Driver 源码鉴赏 Worker 启动 Executor 源码鉴赏 Worker 与 Master 的交互关系 [引言部份:你希望读者看完这篇博客后有那些启发、学到什么样的知识点]更新中...... Spark Worker 原理图 Worker 启动 Driver 源码鉴赏因为 Wo...原创 2018-08-25 09:40:31 · 303 阅读 · 0 评论 -
Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结
资源调度管理任务调度与资源是通过 DAGScheduler、TaskScheduler、SchedulerBackend 等进行的作业调度 资源调度是指应用程序如何获得资源 任务调度是在资源调度的基础上进行的,没有资源调度那么任务调度就成为了无源之水无本之木Master 资源调度的源码鉴赏因為 Master 負責資源管理和調度,所以資源調度方法 scheduer 位於 Master....原创 2018-08-25 09:44:26 · 258 阅读 · 0 评论 -
Stage划分和Task最佳位置算法源码彻底解密
本課主題Job Stage 划分算法解密 Task 最佳位置算法實現解密 引言作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行;其次就是数据本地性,Spark 一舨的代码都是链式表达的,这就让一个任务什么时候划分成 Stage,在大数据世界要追求最大化的数据本地性,所有最大化的...原创 2018-08-25 10:11:52 · 208 阅读 · 0 评论 -
打通 Spark 系统运行内幕机制循环流程
引言通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每个 Stage 内部有一系列任務,前面有分享過,任务是并行计算啦,这是并行计算的逻辑是完全相同的,只不过是处理的数据不同而已,DAGScheduler 会以 TaskSet 的方式把我们一个 DAG 构造的 Stage 中的所有任务提交给底层的调度器 ...原创 2018-08-25 17:12:45 · 279 阅读 · 0 评论 -
TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等
主題通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据本地性资源分配源码实现 引言TaskScheduler 是 Spark 整个调度的底层调度器,底层调度器是负责具体 Task 本身的运行的,所以豪无疑问的是一个至关重要的内容。希望这篇文...原创 2018-08-25 19:49:20 · 489 阅读 · 0 评论 -
[spark 面试] cache/persist/checkpoint
1. cache与persistcache 能够让重复数据在同一个 application 中的 jobs 间共享。RDD的cache()方法其实调用的就是persist方法,缓存策略均为MEMORY_ONLY。下面简单引入一下cache的机制: 哪些 RDD 需要 cache? 会被重复使用的(但不能太大)。 ...原创 2018-09-02 20:30:51 · 413 阅读 · 0 评论 -
[spark 面试]数据倾斜
一.首先明白招聘中“拥有大型项目/海量数据处理经验的意思”? 这个实质的意思不是你开发出大型项目和海量数据进行了处理的;它表达的意思是你是否有再大型项目/海量数据中的调优经验,而这种调优经验又必须再理解和阅读大量源码的基础上才能实现的。所以这句话转化的意思就是你是否有阅读源码和性能调优的经验。二.大数据中最关键的调优经验是什么? 数据倾斜,这是大数据处理专家的一个共识,因为...原创 2018-08-31 19:18:50 · 838 阅读 · 0 评论 -
[spark streaming]Driver之ReceiverTracker技术内幕源码解密
上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker: 本文将详细解析ReceiverTracker的的架构设计和具体实现源码解释:This class manages the execution of the receivers of ReceiverInputDStreams. ...转载 2018-08-29 00:07:37 · 275 阅读 · 0 评论 -
[spark streaming]Receiver数据接收全过程详解
一、Receiver启动过程回顾如图,从ReceiverTracker的start方法开始,调用launchReceivers()方法,给endpoint发送消息,endpoint.send(StartAllReceivers(receivers)),endpoint就是ReceiverTrackerEndpoint,ReceiverTrackerEndpoint调用startReceiv...转载 2018-08-29 00:05:37 · 3066 阅读 · 0 评论 -
Spark性能优化第八季之Spark Tungsten-sort Based Shuffle
一:使用Tungsten功能 1, 如果想让您的程序使用Tungsten的功能,可以配置: Spark.Shuffle.Manager = tungsten-sort Spark在钨丝计划下要管理两种类型的内存存储方式:堆内和堆外。为了管理他们,所以搞了一个Page。 堆外:指针直接指向数据本身。 堆内:指针首先指向Object,然后通过偏移量OffSet再具体定位到数据。 2...转载 2018-08-28 09:49:29 · 355 阅读 · 0 评论 -
Spark性能优化第九季之Spark Tungsten内存使用彻底解密
一:Tungsten中到底什么是Page? 1.在Spark其实不存在Page这个类的。Page是一种数据结构(类似于Stack,List等),从OS层面上讲,Page代表了一个内存块,在Page里面可以存放数据,在OS中会存放很多不同的Page,当要获得数据的时候首先要定位具体是哪个Page中的数据,找到该Page之后从Page中根据特定的规则(例如说数据的offset和length)取出数据...转载 2018-08-28 10:44:17 · 740 阅读 · 0 评论 -
[spark streaming] 架构和运行机制
本期内容: 1. Spark Streaming架构 2. Spark Streaming运行机制 3.解密Spark Streaming Job架构和运行机制 4.解密Spark Streaming 容错架构和运行机制 Spark大数据分析框架的核心部件: spark Core、spark Streaming流计算、GraphX图计算、MLli...原创 2018-08-28 11:47:19 · 1472 阅读 · 0 评论 -
[spark streaming] DStream 和 DStreamGraph 解析
前言Spark Streaming 是基于Spark Core将流式计算分解成一系列的小批处理任务来执行。在Spark Streaming里,总体负责任务的动态调度是JobScheduler,而JobScheduler有两个很重要的成员:JobGenerator和 ReceiverTracker。JobGenerator 负责将每个 batch 生成具体的 RDD DAG ,而Receiv...转载 2018-08-28 16:45:59 · 410 阅读 · 0 评论 -
[spark streaming]生成RDD并执行Spark Job源码内幕解密
本博文主要包含以下内容:DStream产生RDD的案例实战演示 DStream作为RDD模板的原理机制 常见DStream生产RDD源码解密这种常见的DStream包含三种类型,一种是输入的级别的InputDStream,第二种transformationDStream,第三种输出级别的ForeachDStream。博文主要代码如下:object NetworkWordCoun...转载 2018-08-28 19:17:05 · 769 阅读 · 0 评论 -
[spark streaming]JobScheduler内幕实现和深度思考
本期内容:1,JobScheduler内幕实现2,JobScheduler深度思考 摘要:JobScheduler是Spark Streaming整个调度的核心,其地位相当于Spark Core上的调度中心中的DAGScheduler! 一、JobScheduler内幕实现首先看看源码中对jobScheduler的解释:/** * This cl...原创 2018-08-28 19:23:59 · 359 阅读 · 0 评论 -
[spark streaming]Job动态生成和深度思考
本期内容:1、Spark Streaming Job生成深度思考2、Spark Streaming Job生成源码解析一、Spark Streaming Job生成深度思考源码解析:1. 在大数据处理场景中,如果不是流处理的话,一般会有定时任务。例如10分钟触发一次,1个小时触发一次,这就是做流处理的感觉,一切不是流处理,或者与流处理无关的数据都将是没有价值的数据,以前做批处理...原创 2018-08-28 19:36:56 · 774 阅读 · 1 评论 -
[spark streaming]Receiver工作内幕源码分析
原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) Spark streaming 程序需要不断接收新数据,然后进行业务逻辑处理,而用于接受数据的就是Recever。显然Receiver的正常运行对应整个Spark Streaming应用程序至关重要,如果Receiver出现异常,后面的业务逻辑就无从谈起。Spark Strea...转载 2018-08-29 00:03:35 · 599 阅读 · 1 评论 -
[spark 面试]Reduce端OOM和shuffle file not found如何解决
1、Reduce端的OOM如何解决? 2、Shuffle file not found如何解决?OOM产生的原因:数据对象太多。通过减少减小Cache层大小,从而减少OOM 代价:从Mapper端拉去数据的次数增多,性能下降如果发生Reducer端的OOM,可以减少每个Reduce Task的缓存的大小,例如从默认的48MB降低到24MB,这样让程序可以从OOM崩溃的状态到可以运行...原创 2018-09-02 20:37:05 · 667 阅读 · 0 评论 -
[spark 面试]NULL值问题及序列化错误
1、NULL值问题如何解决? 2、序列化错误如何解决?一些场景下,我们并不需要返回具体的值,这个时候往往我们会返回NULL值,但是有时候你可能在下一步的RDD操作中要求RDD的元素不能够是NULL值,如果是的话就会抛出异常,此时该如何处理呢?这个时候我们可以在继续返回NULL值的基础上,在下一步要使用的时候通过Option进行模式匹配(Some和None)来化解NULL值的情况。还有一种办法...原创 2018-09-02 20:56:07 · 960 阅读 · 0 评论 -
聚类算法:KMEANS原理介绍
聚类算法:KMEANS原理介绍聚类介绍 聚类分析是一个无监督学习过程,一般是用来对数据对象按照其特征属性进行分组,经常被应用在客户分群、欺诈检测、图像分析等领域。K-means应该是最有名并且最经常使用的聚类算法。算法介绍 KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇,然后按照平均法重新计算各个簇的质心,从而确定簇心,一直迭代,知道...原创 2018-09-18 10:58:54 · 1243 阅读 · 0 评论 -
Flume+Kafka+SparkStreaming+Hbase处理和调试方法
1. 首先得确保Flume能接受到数据和输出数据,所以源头监控log文件,输出在控制台2. 确保kafka接受到数据并能通过consumer消费到,控制台输出3.对接Flume和Kafka,将Flume的输出改为Kafka , 测试能否在Kafka处输出4.SparkStreaming测试程序,测试能否接受到kafka数据并在控制台输出5.编写sparkStreaming 处理逻辑...原创 2018-09-23 10:47:31 · 579 阅读 · 0 评论 -
spark中job stage task关系
1.1 例子,美国 1880 - 2014 年新生婴儿数据统计目标:用美国 1880 - 2014 年新生婴儿的数据来做做简单的统计 数据源: https://catalog.data.gov 数据格式: 每年的新生婴儿数据在一个文件里面 每个文件的每一条数据格式:姓名,性别,新生人数 1.2 运行流程概览上面的 22 行代码,就已经把构建一个 spark app 的三大步骤...原创 2018-09-20 18:54:57 · 447 阅读 · 0 评论 -
掌握Spark机器学习库-06-基础统计部分
说明学习使用spark对数据进行描述性统计,在进行机器学习模型的训练之前,可以了解数据的总体情况本章主要讲解基础统计部分,包括基本统计、假设检验、相关系数等数据集数据集有两个文件,分别是:beijing.txt 北京历年降水量,不带年份 beijing2.txt 北京历年降水量,带年份源代码源代码比较少,故在此给出:基础统计val txt = sc.textF...原创 2018-10-19 13:56:50 · 537 阅读 · 2 评论 -
Spark计算相关性系数(皮尔森、斯皮尔曼、卡方检验)
皮尔森、斯皮尔曼(pearson spearman): import spark.implicits._ import org.apache.spark.mllib.stat.Statistics import spark.sql val df = sql(s"select * from xxxx ") val columns = List("...原创 2018-10-19 14:27:48 · 6713 阅读 · 0 评论 -
spark学习回归理论和实战房价预测
1.2.3.spark提供的回归算法:线性回归算法概述:线性回归算法原理 最小二乘法求的是偏导,等于0 是为了使误差最小,所谓的二乘就是误差平方和 随机梯度下降(应用方便比较广)用于求预测值这是代价函数, 随机在于随机取n的数,没有都选,这样节省时间,1/2代表调节...原创 2018-10-19 23:02:36 · 1769 阅读 · 0 评论 -
谈谈RDD、DataFrame、Dataset的区别和各自的优势
在spark中,RDD、DataFrame、Dataset是最常用的数据类型,本博文给出笔者在使用的过程中体会到的区别和各自的优势共性:1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利2、三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算,极端情...转载 2018-10-19 21:53:16 · 417 阅读 · 0 评论 -
spark学习习惯
spark常常是构建实时流项目来进行计算,在平时的学习和重点提高上面不是很方便,那么如何更加高效的学习spark呢?首先要是想高效,就得分段,这类似于项目开发中的组件化总结下flume+kafka+spark+mysql/hbase/redis运行方案:1.flume接受数据,输出数据2.kafka接受flume数据,转送到spark上3.spark接受kafka数据,处理数据...原创 2018-10-19 22:05:43 · 191 阅读 · 0 评论 -
[spark streaming]窗口操作
WindowOperations(窗口操作) Spark还提供了窗口的计算,它允许你使用一个滑动窗口应用在数据变换中。下图说明了该滑动窗口。如图所示,每个时间窗口在一个个DStream中划过,每个DSteam中的RDD进入Window中进行合并,操作时生成为窗口化DSteam的RDD。在上图中,该操作被应用在过去的3个时间单位的数据,和划过了2个时间单位。这说明任...转载 2018-09-10 13:18:29 · 3038 阅读 · 0 评论 -
[spark streaming]状态操作
Seven_Ki 关注2018.02.23 22:55* 字数 1545 阅读 452评论 0喜欢 0本文全部手写原创,请勿复制粘贴、转载请注明出处,谢谢配合!Dstream的转化操作分为无状态的(stateless)和有状态的(stateful)无状态转化:每个批次处理都不依赖于先前批次的数据,如map() filter() reduceByKey()等均属于无状态的有状...转载 2018-09-10 13:16:23 · 1248 阅读 · 0 评论 -
[spark streaming]资源动态申请和动态控制消费速率原理剖析
本讲内容:a. Spark Streaming资源动态分配 b. Spark Streaming动态控制消费速率注:本讲内容基于Spark 1.6.1版本(在2016年5月来说是Spark最新版本)讲解上节回顾上一讲中,我们要给大家解密Spark Streaming中数据清理的流程,主要从背景、Spark Streaming数据是如何清理的、源码解析三个方面给大家逐一展开背景...转载 2018-09-10 13:11:29 · 658 阅读 · 0 评论 -
[spark 面试]yarn 生产环境下资源不足问题和网络的问题
1、Yarn资源不足无法提交Spark的问题 2、Yarn-Client下网络流量的问题ResourceManager会接收你的提交请求吗?Yarn一般把自己的资源分成不同的类型,我们接收的时候会专门提交到分配给Spark那一组资源,例如说此时资源信息如下:Memory 1000G,Cores 800个,此时你要提交的Spark应用程序可能需要900G的内存和700个Core,一定会没有...原创 2018-09-02 21:01:02 · 2591 阅读 · 0 评论 -
[spark 面试]Yarn Cluster生产环境下JVM的OOM和Stack Overflow问题
1、Spark on Yarn下JVM的OOM问题及解决方式 2、Spark中Driver的Stack Overflow的问题及解决方式Spark on Yarn cluster mode: 此时有可能会报OOM的错误,具体来说: 由于Client模式下一定没有出现OOM,而在Cluster模式下一定出现了OOM,所以必然说明OOM是Driver导致的! Driver在Client和...原创 2018-09-02 21:20:19 · 400 阅读 · 0 评论 -
[spark 面试]Shuffle的性能调优问题
1、Shuffle原理和运行机制回顾 2、Shuffle性能调优上面的流程中: 性能问题1:Mapper端的Cache:如果Cache设置的大小不恰当,可能产生大量磁盘的访问操作,因为要频繁地往本地磁盘写数据。 性能问题2:Reducer端的Business Logic运行的空间,如果说空间分配不够,业务逻辑运行的时候被迫把数据Spill到磁盘上面。一方面造成了业务逻辑处理的时候需要...原创 2018-09-02 21:22:06 · 949 阅读 · 0 评论 -
JVM 中的永久代
PermGen(永久代)绝大部分 Java 程序员应该都见过 “java.lang.OutOfMemoryError: PermGen space “这个异常。这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是 JVM 的规范,而后者则是 JVM 规范的一种实现,并且只有 HotSpot 才有 “PermGen spac...转载 2018-09-03 08:00:51 · 2257 阅读 · 0 评论 -
spark查询elasticsearch
下载elasticsearch的spark相关包 https://www.elastic.co/downloads/hadooppom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo...转载 2018-09-09 17:12:24 · 2182 阅读 · 0 评论 -
[spark内核]shuffle机制
1.核心知识点目录:一 概述Shuffle就是对数据进行重组,由于分布式计算的特性和要求,在实现细节上更加繁琐和复杂在MapReduce框架,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中,往往伴随着大量的磁盘和网络I/O。所以shuf...原创 2018-09-12 13:17:32 · 582 阅读 · 0 评论 -
[spark streaming]No Receivers彻底思考
Spark Streaming在企业级使用中,一般会使用no receiver的方式读取数据,对应kafka中的Direct方式,采用no receiver的方式可以提高数据读取效率并保证事务的一致性,看看在Spark Streaming中是怎样使用kafka的Direct方式首先展示一个Demo,代码如下object DirectKafkaWordCount { def main...原创 2018-09-10 13:05:52 · 330 阅读 · 0 评论