06 2018 档案

摘要:Spark SQL是为了让开发人员摆脱自己编写RDD等原生Spark代码而产生的,开发人员只需要写一句SQL语句或者调用API,就能生成(翻译成)对应的SparkJob代码并去执行,开发变得更简洁 注意:本文全部基于SparkSQL1.6 参考:http://spark.apache.org/doc 阅读全文
posted @ 2018-06-28 16:34 大葱拌豆腐 阅读(1433) 评论(0) 推荐(0) 编辑
摘要:为什么讲解Sorted-Based shuffle?2方面的原因:一,可能有些朋友看到Sorted-Based Shuffle的时候,会有一个误解,认为Spark基于Sorted-Based Shuffle 它产出的结果是有序的。二,Sorted-Based Shuffle要排序,涉及到一个排序算法 阅读全文
posted @ 2018-06-26 21:09 大葱拌豆腐 阅读(1564) 评论(0) 推荐(0) 编辑
摘要:shuffle概览 shuffle过程概览 shuffle数据流概览 shuffle数据流 shuffle工作流程 在运行job时,spark是一个stage一个stage执行的。先把任务分成stage,在任务提交阶段会把任务形成taskset,在执行任务。 spark的DAGScheduler根据 阅读全文
posted @ 2018-06-25 22:26 大葱拌豆腐 阅读(742) 评论(0) 推荐(0) 编辑
摘要:本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Memory 的运行原理和机制 引言 Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的 阅读全文
posted @ 2018-06-25 22:22 大葱拌豆腐 阅读(769) 评论(1) 推荐(0) 编辑
摘要:Shuffle简介 Shuffle描述着数据从map task输出到reduce task输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下, 阅读全文
posted @ 2018-06-25 21:45 大葱拌豆腐 阅读(54945) 评论(5) 推荐(15) 编辑
摘要:这篇文章会详细介绍,Sort Based Shuffle Write 阶段是如何进行落磁盘的 流程分析 入口处: runTask对应的代码为: 这里manager 拿到的是 我们看他是如何拿到可以写磁盘的那个sorter的。我们分析的线路假设需要做mapSideCombine 接着将map的输出放到 阅读全文
posted @ 2018-06-25 21:42 大葱拌豆腐 阅读(1558) 评论(0) 推荐(0) 编辑
摘要:分布式系统里的Shuffle 阶段往往是非常复杂的,而且分支条件也多,我只能按着我关注的线去描述。肯定会有不少谬误之处,我会根据自己理解的深入,不断更新这篇文章。 前言 借用和董神的一段对话说下背景: shuffle共有三种,别人讨论的是hash shuffle,这是最原始的实现,曾经有两个版本,第 阅读全文
posted @ 2018-06-25 21:30 大葱拌豆腐 阅读(549) 评论(0) 推荐(0) 编辑
摘要:Broadcast 简单来说就是将数据从一个节点复制到其他各个节点,常见用于数据复制到节点本地用于计算,在前面一章中讨论过Storage模块中BlockManager,Block既可以保存在内存中,也可以保存在磁盘中,当Executor节点本地没有数据,通过Driver去获取数据 Spark的官方描 阅读全文
posted @ 2018-06-25 09:29 大葱拌豆腐 阅读(584) 评论(0) 推荐(0) 编辑
摘要:构造以spark为核心的数据仓库: 0.说明 在大数据领域,hive作为老牌的数据仓库比较流行,spark可以考虑兼容hive。但是如果不想用hive做数据仓库也无妨,大不了我们用spark建立最新的数据仓库。 sparkSQL的发展历程表明了,spark本身就可以做数据仓库,而不需要hive。sp 阅读全文
posted @ 2018-06-22 21:48 大葱拌豆腐 阅读(1512) 评论(0) 推荐(0) 编辑
摘要:导语 Spark2.0于2016-07-27正式发布,伴随着更简单、更快速、更智慧的新特性,spark 已经逐步替代 hadoop 在大数据中的地位,成为大数据处理的主流标准。本文主要以代码和绘图的方式结合,对运行架构、RDD 的实现、spark 作业原理、Sort-Based Shuffle 的存 阅读全文
posted @ 2018-06-22 21:41 大葱拌豆腐 阅读(392) 评论(0) 推荐(0) 编辑
摘要:Storage模块 在Spark中提及最多的是RDD,而RDD所交互的数据是通过Storage来实现和管理 Storage模块整体架构 1. 存储层 在Spark里,单节点的Storage的管理是通过block来管理的,每个Block的存储可以在内存里或者在磁盘中,在BlockManager里既可以 阅读全文
posted @ 2018-06-22 17:19 大葱拌豆腐 阅读(669) 评论(0) 推荐(0) 编辑
摘要:1. 究竟是怎么运行的? 很多的博客里大量的讲了什么是RDD, Dependency, Shuffle.......但是究竟那些Executor是怎么运行你提交的代码段的? 下面是一个日志分析的例子,来自Spark的example def main(args: Array[String]) { va 阅读全文
posted @ 2018-06-22 13:43 大葱拌豆腐 阅读(416) 评论(0) 推荐(0) 编辑
摘要:1. 启动任务 在前面一篇博客中(Driver 启动、分配、调度Task)介绍了Driver是如何调动、启动任务的,Driver向Executor发送了LaunchTask的消息,Executor接收到了LaunchTask的消息后,进行了任务的启动,在CoarseGrainedExecutorBa 阅读全文
posted @ 2018-06-22 12:37 大葱拌豆腐 阅读(828) 评论(0) 推荐(0) 编辑
摘要:1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系可以这样理解: Ap 阅读全文
posted @ 2018-06-22 11:22 大葱拌豆腐 阅读(1473) 评论(0) 推荐(0) 编辑
摘要:1. Spark的RDD RDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象。 RDD所具备5个主要特性: 一组分区列表 计算每一个数据分片的函数 RDD上的一组依赖 对于Key Value 对的RDD,会有一个Partitioner 阅读全文
posted @ 2018-06-21 19:08 大葱拌豆腐 阅读(404) 评论(0) 推荐(0) 编辑
摘要:类和类型 List<String>和List<Int>类型是不一样的,但是jvm运行时会采用泛型擦除。导致List<String>和List<Int>都是Class<List>.为了得到正确的类型,需要通过反射。 泛型擦除 Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中 阅读全文
posted @ 2018-06-21 14:20 大葱拌豆腐 阅读(264) 评论(0) 推荐(0) 编辑
摘要:1. 前言 在前面的博客中讨论了Executor, Driver之间如何汇报Executor生成的Shuffle的数据文件,以及Executor获取到Shuffle的数据文件的分布,那么Executor是如何获取到Shuffle的数据文件进行Action的算子的计算呢? 在ResultTask中,E 阅读全文
posted @ 2018-06-21 12:41 大葱拌豆腐 阅读(665) 评论(0) 推荐(0) 编辑
摘要:1. 前言 在博客里介绍了ShuffleWrite关于shuffleMapTask如何运行,输出Shuffle结果到Shuffle_shuffleId_mapId_0.data数据文件中,每个executor需要向Driver汇报当前节点的Shuffle结果状态,Driver保存结果信息进行下个Ta 阅读全文
posted @ 2018-06-21 11:56 大葱拌豆腐 阅读(1268) 评论(0) 推荐(0) 编辑
摘要:转载自:https://blog.csdn.net/raintungli/article/details/70807376 当Executor进行reduce运算的时候,生成运算结果的临时Shuffle数据,并保存在磁盘中,被最后的Action算子调用,而这个阶段就是在ShuffleMapTask里 阅读全文
posted @ 2018-06-21 11:24 大葱拌豆腐 阅读(639) 评论(0) 推荐(0) 编辑
摘要:在Spark中,一个应用程序要想被执行,肯定要经过以下的步骤: 从这个路线得知,最终一个job是依赖于分布在集群不同节点中的task,通过并行或者并发的运行来完成真正的工作。由此可见,一个个的分布式的task才是Spark的真正执行者。下面先来张task运行框架整体的对Spark的task运行有个大 阅读全文
posted @ 2018-06-21 10:48 大葱拌豆腐 阅读(2520) 评论(0) 推荐(1) 编辑
摘要:1、Shuffle流程 spark的shuffle过程如下图所示,和mapreduce中的类似,但在spark2.0及之后的版本中只存在SortShuffleManager而将原来的HashShuffleManager废弃掉(但是shuffleWriter的子类BypassMergeSortShuf 阅读全文
posted @ 2018-06-20 20:50 大葱拌豆腐 阅读(1441) 评论(0) 推荐(0) 编辑
摘要:什么时候需要 shuffle writer 假如我们有个 spark job 依赖关系如下 我们抽象出来其中的rdd和依赖关系: E < n , C <--n D n F--s , A < s B <--n `-- G 对应的划分后的RDD结构为: 最终我们得到了整个执行过程: 中间就涉及到shuf 阅读全文
posted @ 2018-06-19 23:50 大葱拌豆腐 阅读(63309) 评论(2) 推荐(7) 编辑
摘要:引言 Checkpoint 到底是什么和需要用 Checkpoint 解决什么问题: Checkpoint 运行原理图 Checkpoint 源码解析 1、RDD.iterator 方法,它会先在缓存中查看数据 (内部会查看 Checkpoint 有没有相关数据),然后再从 CheckPoint 中 阅读全文
posted @ 2018-06-19 14:44 大葱拌豆腐 阅读(815) 评论(0) 推荐(0) 编辑
摘要:一、概述 本文将介绍ResourceManager在Yarn中的功能作用,从更细的粒度分析RM内部组成的各个组件功能和他们相互的交互方式。 二、ResourceManager的交互协议与基本职能 1、ResourceManager交互协议 在整个Yarn框架中主要涉及到7个协议,分别是Applica 阅读全文
posted @ 2018-06-19 14:09 大葱拌豆腐 阅读(15247) 评论(1) 推荐(2) 编辑
摘要:概述 checkpoint 的机制保证了需要访问重复数据的应用 Spark 的DAG执行图可能很庞大,task 中计算链可能会很长,这时如果 task 中途运行出错,那么 task 的整个需要重算非常耗时,因此,有必要将计算代价较大的 RDD checkpoint 一下,当下游 RDD 计算出错时, 阅读全文
posted @ 2018-06-19 10:48 大葱拌豆腐 阅读(928) 评论(0) 推荐(0) 编辑
摘要:1、sql语句的模块解析 当我们写一个查询语句时,一般包含三个部分,select部分,from数据源部分,where限制条件部分,这三部分的内容在sql中有专门的名称: 当我们写sql时,如上图所示,在进行逻辑解析时会把sql分成三个部分,project,DataSource,Filter模块,当生 阅读全文
posted @ 2018-06-19 09:46 大葱拌豆腐 阅读(1389) 评论(0) 推荐(0) 编辑
摘要:1.提交应用程序 在提交应用程序的时候,用到 spark-submit 脚本。我们来看下这个脚本: 可以看出来 spark-class 脚本才是真正的提交程序的,spark-submit 脚本只是在其上封装一层,并传参 org.apache.spark.deploy.SparkSubmit 给它。这 阅读全文
posted @ 2018-06-15 22:19 大葱拌豆腐 阅读(653) 评论(0) 推荐(0) 编辑
摘要:1.Spark 属性Spark应用程序的运行是通过外部参数来控制的,参数的设置正确与否,好与坏会直接影响应用程序的性能,也就影响我们整个集群的性能。参数控制有以下方式:(1)直接设置在SparkConf,通过参数的形式传递给SparkContext,达到控制目的。(通过set()方法传入key-va 阅读全文
posted @ 2018-06-15 22:02 大葱拌豆腐 阅读(448) 评论(0) 推荐(0) 编辑
摘要:SparkSQL数据源:从各种数据源创建DataFrame 因为 spark sql,dataframe,datasets 都是共用 spark sql 这个库的,三者共享同样的代码优化,生成以及执行流程,所以 sql,dataframe,datasets 的入口都是 sqlContext。 可用于 阅读全文
posted @ 2018-06-15 18:57 大葱拌豆腐 阅读(524) 评论(0) 推荐(0) 编辑
摘要:一个job的生命历程 (1)所有的action算子都会触发一个job的调度,经过多次不同的runjob重载后停在这里调度 submitJob (2)调用eventProcessLoop方法,并发送 JobSubmitted 消息给DAGSchedulerEventProcessLoop(DAGSch 阅读全文
posted @ 2018-06-15 00:00 大葱拌豆腐 阅读(657) 评论(0) 推荐(0) 编辑
摘要:mr的shuffle mapShuffle 数据存到hdfs中是以块进行存储的,每一个块对应一个分片,maptask就是从分片中获取数据的 在某个节点上启动了map Task,map Task读取是通过k-v来读取的,读取的数据会放到环形缓存区,这样做的目的是为了防止IO的访问次数,然后环形缓存区的 阅读全文
posted @ 2018-06-14 23:41 大葱拌豆腐 阅读(5739) 评论(0) 推荐(0) 编辑
摘要:1.诊断内存的消耗 在Spark应用程序中,内存都消耗在哪了? 1.每个Java对象都有一个包含该对象元数据的对象头,其大小是16个Byte。由于在写代码时候,可能会出现这种情况:对象头比对象本身占有的字节数更多,比如对象只有一个int的域。一般这样设计是不合理的,造成对象的“浪费”,在实际开发中应 阅读全文
posted @ 2018-06-14 22:21 大葱拌豆腐 阅读(422) 评论(0) 推荐(0) 编辑
摘要:Spark 的shuffle 服务是spark的核心,本文介绍了非ExternalShuffleClient的方式,看BlockService的整个架构。ShuffleClient是整个框架的基础,有init方法和fetchBlock两个方法。 BlockFetchingListener接口,onB 阅读全文
posted @ 2018-06-14 21:47 大葱拌豆腐 阅读(1719) 评论(0) 推荐(0) 编辑
摘要:对性能消耗的原理详解 在分布式系统中,数据分布在不同的节点上,每一个节点计算一部份数据,如果不对各个节点上独立的部份进行汇聚的话,我们计算不到最终的结果。我们需要利用分布式来发挥Spark本身并行计算的能力,而后续又需要计算各节点上最终的结果,所以需要把数据汇聚集中,这就会导致Shuffle,这也是 阅读全文
posted @ 2018-06-14 21:28 大葱拌豆腐 阅读(666) 评论(0) 推荐(0) 编辑
摘要:一、概述 将公司集群升级到Yarn已经有一段时间,自己也对Yarn也研究了一段时间,现在开始记录一下自己在研究Yarn过程中的一些笔记。这篇blog主要主要从大体上说说Yarn的基本架构以及其各个组件的功能。另外,主要将Yarn和MRv1做详细对比,包括Yarn相对于MRv1的各种改进。最后,大概说 阅读全文
posted @ 2018-06-14 18:12 大葱拌豆腐 阅读(4804) 评论(1) 推荐(2) 编辑
摘要:Hadoop的MapReduce的Map Task和Reduce Task都是进程级别的;而Spark Task则是基于线程模型的。 多进程模型和多线程模型 所谓的多进程模型和多线程模型,指的是同一个节点上多个任务的运行模式。无论是MapReduce和Spark,整体上看都是多进程的:MapRedu 阅读全文
posted @ 2018-06-14 17:20 大葱拌豆腐 阅读(1978) 评论(0) 推荐(0) 编辑
摘要:本文主要简述spark checkpoint机制,快速把握checkpoint机制的来龙去脉,至于源码可以参考我的下一篇文章。 1、Spark core的checkpoint 1)为什么checkpoint? 分布式计算中难免因为网络,存储等原因出现计算失败的情况,RDD中的lineage信息常用来 阅读全文
posted @ 2018-06-14 16:50 大葱拌豆腐 阅读(1542) 评论(0) 推荐(0) 编辑
摘要:简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Google File System)Google 文件系统。 HDFS有很多特点: ① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复 阅读全文
posted @ 2018-06-14 14:49 大葱拌豆腐 阅读(222) 评论(0) 推荐(0) 编辑
摘要:HDFS的工作机制 概述 HDFS集群分为两大角色:NameNode、DataNode NameNode负责管理整个文件系统的元数据 DataNode 负责管理用户的文件数据块 文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上 每一个文件块可以有多个副本,并 阅读全文
posted @ 2018-06-14 14:42 大葱拌豆腐 阅读(397) 评论(0) 推荐(0) 编辑
摘要:Spark SQL支持两种RDDs转换为DataFrames的方式 使用反射获取RDD内的Schema 当已知类的Schema的时候,使用这种基于反射的方法会让代码更加简洁而且效果也很好。 通过编程接口指定Schema 通过Spark SQL的接口创建RDD的Schema,这种方式会让代码比较冗长。 阅读全文
posted @ 2018-06-13 21:06 大葱拌豆腐 阅读(391) 评论(0) 推荐(0) 编辑
摘要:环境: Spark2.1.0 、Hadoop-2.7.5 代码运行系统:Win 7在运行Spark程序写出文件(savaAsTextFile)的时候,我遇到了这个错误: 查到的还是什么window远程访问Hadoop的错误,最后查阅官方文档HADOOP-11064 后来在网上找到解决方案是:由于ha 阅读全文
posted @ 2018-06-13 09:25 大葱拌豆腐 阅读(5348) 评论(1) 推荐(0) 编辑
摘要:一:准备数据源 在项目下新建一个student.txt文件,里面的内容为: 二:实现 Java版: 1.首先新建一个student的Bean对象,实现序列化和toString()方法,具体代码如下: 2.转换,具体代码如下 scala版本: 注:1.上面代码全都已经测试通过,测试的环境为spark2 阅读全文
posted @ 2018-06-12 14:20 大葱拌豆腐 阅读(4007) 评论(0) 推荐(0) 编辑
摘要:MapReduce 是现今一个非常流行的分布式计算框架,它被设计用于并行计算海量数据。第一个提出该技术框架的是Google 公司,而Google 的灵感则来自于函数式编程语言,如LISP,Scheme,ML 等。 MapReduce 框架的核心步骤主要分两部分:Map 和Reduce。当你向MapR 阅读全文
posted @ 2018-06-12 14:11 大葱拌豆腐 阅读(279) 评论(0) 推荐(0) 编辑
摘要:朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别。 朴素贝叶斯分类的正式定义如下: 1、设 为一个 阅读全文
posted @ 2018-06-12 13:53 大葱拌豆腐 阅读(2167) 评论(0) 推荐(0) 编辑
摘要:在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,git 仓库的基本结构。 git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin maste 阅读全文
posted @ 2018-06-12 11:50 大葱拌豆腐 阅读(141) 评论(0) 推荐(0) 编辑
摘要:git的服务器端(remote)端包含多个repository,每个repository可以理解为一个项目。而每个repository下有多个branch。"origin"就是指向某一个repository的指针。服务器端的"master"(强调服务器端是因为本地端也有master)就是指向某个re 阅读全文
posted @ 2018-06-12 11:48 大葱拌豆腐 阅读(209) 评论(0) 推荐(0) 编辑
摘要:一 Git简介 1.1 Git 特点 Git是一种非常流行的分布式版本控制系统,它和其他版本控制系统的主要差别在于Git只关心文件数据的整体是否发生变化,而大多数版本控制系统只关心文件内容的具体差异,这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了 阅读全文
posted @ 2018-06-12 11:45 大葱拌豆腐 阅读(281) 评论(0) 推荐(0) 编辑
摘要:增删改查工具类 测试用例 阅读全文
posted @ 2018-06-08 17:29 大葱拌豆腐 阅读(1462) 评论(1) 推荐(0) 编辑
摘要:背景 Kafka实时记录从数据采集工具Flume或业务系统实时接口收集数据,并作为消息缓冲组件为上游实时计算框架提供可靠数据支撑,Spark 1.3版本后支持两种整合Kafka机制(Receiver-based Approach 和 Direct Approach),具体细节请参考文章最后官方文档链 阅读全文
posted @ 2018-06-08 17:19 大葱拌豆腐 阅读(4078) 评论(0) 推荐(0) 编辑
摘要:转载自:https://yq.aliyun.com/articles/60194 摘要: 这篇文章的主旨在于让你了解Spark UI体系,并且能够让你有能力对UI进行一些定制化增强。在分析过程中,你也会深深的感受到Scala语言的魅力。 前言 有时候我们希望能对Spark UI进行一些定制化增强。并 阅读全文
posted @ 2018-06-07 22:26 大葱拌豆腐 阅读(999) 评论(0) 推荐(0) 编辑
摘要:转载自:https://yq.aliyun.com/articles/60196 摘要: Spark 事件体系的中枢是ListenerBus,由该类接受Event并且分发给各个Listener。MetricsSystem 则是一个为了衡量系统的各种指标的度量系统。Listener可以是Metrics 阅读全文
posted @ 2018-06-07 22:18 大葱拌豆腐 阅读(521) 评论(0) 推荐(0) 编辑
摘要:在项目开发中在很多地方都要做单元测试,在做Spark项目时使用Scala开发.所以总结一下Scala中的单元测试: 在Maven pom文件中添加依赖: 运行: 使用Intelij IDEA,把光标点击在方法名那一行上,右键,run。 阅读全文
posted @ 2018-06-07 17:37 大葱拌豆腐 阅读(4332) 评论(0) 推荐(0) 编辑
摘要:问题描述:在IDEA中的一个Project在运行某个module里面的类的时候报了如下错误: 经过排查发现这个问题是在项目中不同的module设置了不同版本的编译器造成的 把后面的jdk的版本统一设置成一个版本即可 阅读全文
posted @ 2018-06-04 14:41 大葱拌豆腐 阅读(250) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示