spark
文章平均质量分 51
靖-Drei
这个作者很懒,什么都没留下…
展开
-
SparkStreaming wordcount demo
流数据统计,将每隔10s内的数据做一次单词统计package com.streamingimport org.apache.spark.streaming._import org.apache.spark.streaming.StreamingContext._import org.apache.spark.SparkContextimport org.apache.spark.api.jav原创 2016-06-06 17:26:30 · 977 阅读 · 0 评论 -
Spark性能优化第五季
一:性能优化之数据本地性1,数据本地性对分布式系统的性能而言是一件最为重要的事情(之一),程序运行本身包含代码和数据两部分,单机版本一般情况下很少数据本地性的问题(因为数据在本地),但是对于单机版本的程序由于数据本地性有PROCESS_LOCAL和NODE_LOCAL之分,所以我们还是尽量的让数据处于PROCESS_LOCAL;Spark作为分布式系统更加注意数据本地性,在Spark中数据本地性分为翻译 2016-05-16 11:27:02 · 1568 阅读 · 0 评论 -
Spark性能优化第四季
一:Spark性能调优之序列化1,之所以进行序列化,最重要的原因是内存空间有限(减少GC的压力,最大化的避免Full GC的产生,因为一旦产生Full GC则整个Task处于停止状态!!!)、减少磁盘IO的压力、减少网络IO的压力;2,什么时候会必要的产生序列化或反序列化呢?发生磁盘IO和网络通讯的时候会序列化和反序列化,更为重要的考虑序列化和反序列化的时候有另外两种情况:A)Persist(Che翻译 2016-05-16 10:44:14 · 1119 阅读 · 0 评论 -
Spark性能优化第三季
一:Spark程序数据结构的优化1,Java的对象:对象头是16个字节(例如指向对象的指针等元数据信息),如果对象只有一个int的property,则此时会占据20字节,也就是说对象的元数据占用了大部分的空间,所有在封装数据的时候尽量不要使用对象!例如说使用JSON格式来封装数据;2,Java中的基本的数据类型会自动的封箱操作,例如int会自动变成Integer,这会额外增加对象头的空间占用;3,J翻译 2016-05-16 09:45:20 · 595 阅读 · 0 评论 -
Spark性能优化第二季
一:Task性能优化1,慢任务(数据倾斜或机器故障)的性能优化:可以考虑减少每个partition处理的数据量,同时建议开启spark.speculation;2,尽量减少Shuffle,例如我们要减少groupByKey的操作,因为groupByKey会要求通过网络拷贝(Shuffle)所有的数据,有限考虑使用reduceByKey,因为会首先reduce locally;再例如在进行join操作翻译 2016-05-16 09:38:51 · 614 阅读 · 0 评论 -
Spark性能优化第一季
一:Spark性能优化核心基石1, Spark是采用Master-Slaves的模式进行资源管理和任务执行的管理:a) 资源管理:Master-Workers,在一台机器上可以有多个Workers;b) 任务执行:Driver-Executors,当在一台机器上分配多个Workers的时候那么默认情况下每个Worker都会为当前运行的应用程序分配一个Executor,但是我们可以修改配置来让每个Wo翻译 2016-05-16 09:34:40 · 880 阅读 · 0 评论 -
Spark RPC
一:Spark 1.6RPC解析1,Spark 1.6推出RpcEnv,RPCEndpoint,PRCEndpointRef为核心的新型架构下的RPC通信方式,就目前的实现而言,其底层依旧是Akka;2,Akka是基于Actor的分布式消息通信系统,而在Spark 1.6中封装了Akka,提供更高层的Rpc实现,目的是移除对Akka的依赖,为了扩展和自定义Rpc打下基础;二:RPCEnv解析1,Rp翻译 2016-05-16 09:25:25 · 930 阅读 · 0 评论 -
Spark Broadcast内幕解密
一:Broadcast彻底解析1,Broadcast就是将数据从一个节点发送到其他的节点上;例如Driver上有一张表,而Executor中的每个并行的Task(100万个Task)都要查询这张表,那我们通过Broadcast方式就只需要往每个Executor把这张表发送一次就行了,Executor中的每个Task查询这张唯一的表,而不是每次执行的时候都从Driver获得这张表!2,这就好像Serv翻译 2016-05-16 09:07:24 · 1590 阅读 · 0 评论 -
CheckPoint运行原理
一、Checkpoint到底是什么?1,Spark在生产环境下经常会面临Tranformations的RDD非常多(例如一个Job中包含1万个RDD)或者具体Tranformation产生的RDD本身计算特别复杂和耗时(例如计算时长超过1个小时),此时我们必须考虑对计算结果数据的持久化;2,Spark是擅长多步骤迭代,同时擅长基于Job的复用,这个时候如果能够对曾经计算的过程产生的数据进行复用,就可翻译 2016-05-15 23:37:28 · 3767 阅读 · 0 评论 -
CacheManager运行原理流程图和源码详解
一:CacheManager分析:1,CacheManager管理的是缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存;2,CacheManager需要通过BlockManager来操作数据;3.当Task运行的时候会调用RDD的compute方法进行计算,而compute方法会调用iterator方法:/** * Internal method to this RDD; will rea翻译 2016-05-15 23:30:26 · 1673 阅读 · 0 评论 -
BlockManager初始化和注册解密、BlockManagerMaster工作解密、BlockTransferService解密、本地数据读写解密、远程数据读写解密
1. BlockManager的注册和初始化 2. BlockManager里面的重要函数详细介绍 一:BlockManager初始化 1. BlockManager的实例对象调用initializes的时候才能正常工作。 启动initializes方法又两个作用:BlockTransferService(网络通信),ShuffleClient/** * Initializ翻译 2016-05-15 23:23:42 · 10765 阅读 · 0 评论 -
BlockManager原理和源码解密
一、BlockManager运行实例观察从Application启动的角度来观察BlockManager;1,在Application启动时会在SparkEnv中注册BlockManagerMaster以及MapOutputTracker,其中a) BlockManagerMaster:对整个集群的Block数据进行管理的;b) MapOutputTracker:跟踪所有mapper的输出的;2,B翻译 2016-05-15 22:58:05 · 3049 阅读 · 1 评论 -
Task执行内幕与结果处理解密
1.当Driver中的CoarseGrainedSchedulerBackend给CoarseGrainedExecutorBackend发送LaunchTask之后,CoarseGrainedExecutorBackend在收到LaunchTask消息后,首先会反序列化TaskDescription:val taskDesc = ser.deserialize[TaskDescription](d翻译 2016-05-15 22:48:46 · 1208 阅读 · 0 评论 -
Scala函数式编程
函数的参数是函数,函数的返回值是函数-高阶函数,scala与java最大区别。 函数与变量,地位同等函数赋值给变量:函数名称+空格+下划线 左边的函数,进行右边的加工 匿名函数 参数名称+类型和=和>指向函数的实现体 函数参数是函数 第一个参数:函数类型:输入是String类型,返回是Unit类型 第二个参数:字符串 没有返回值,返回一个过程Unit 将第二个参数传入第一个函数的参数翻译 2016-05-04 18:06:36 · 5672 阅读 · 0 评论 -
Spark性能优化第六季
一:Shuffle性能调优1,问题:Shuffle output file lost?真正的原因是GC导致的!!!如果GC尤其是Full GC产生通常会导致线程停止工作,这个时候下一个Stage的Task在默认情况下就会尝试重试来获取数据,一般重试3次每次重试的时间为5s,也就是说默认情况下15s内如果还是无法抓到数据的话,就会出现Shuffle output file lost等情况,进而会导致T翻译 2016-05-16 11:30:17 · 666 阅读 · 0 评论 -
SparkStreaming 删选含有error的行
筛选流数据中所有含error的行package com.streamingimport org.apache.spark.SparkConfimport org.apache.spark.streaming.Secondsimport org.apache.spark.streaming.StreamingContextobject PrintError { def main(args:原创 2016-06-06 17:21:53 · 1262 阅读 · 0 评论 -
SparkStreaming 打印输出demo
1.nc -lk 9999-l 使用监听模式,管控传入的资料。 本机开启9999端口 一个server对应一个client,多了可能出问题,也就是下次起sparkstreaming任务时,必须先关了这个端口,重开2.提交sparkstreaming任务package com.streamingimport org.apache.spark.streaming.Secondsimpo原创 2016-06-06 17:15:56 · 4874 阅读 · 0 评论 -
spark读取redis数据(交互式,scala单机版,java单机版)
交互式第一步:向redis中添加数据 第二步:将jedis jar包放入~/lib目录下,开启spark服务 第三步:通过spark-shell读取redis数据,并做相应处理 scala单机版package com.testimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport red原创 2016-05-23 11:03:16 · 12034 阅读 · 1 评论 -
HA下的Spark集群工作原理解密
active master挂掉时;不能像集群提交作业,但是不影响正在运行的作业,原因只要是程序运行之前已经将资源分配给作业(粗粒度模式),任务在worker运行。active master挂掉时; 切换standby master的是需要去zookeeper拿元数据(所有的Worker Driver Application),<-恢复集群状态是到zookeeper中拿的;此时被选中的leader从s翻译 2016-05-09 16:00:45 · 625 阅读 · 0 评论 -
WordCount过程详解
1.HDFS中存储(分布式)数据 helloSpark.txt 2.从HDFS上读取分布式文件并且以数据分片的方式,存在于集群之中 HadoopRDD: 多台机器上 图转自地址 图转自地址翻译 2016-05-09 15:45:19 · 1252 阅读 · 0 评论 -
Spark运行原理和RDD解密
1.实战解析Spark运行原理 交互式查询(shell,sql) 批处理(机器学习,图计算) 首先,spark是基于内存的分布式高效计算框架,采用一栈式管理机制,同时支持流处理,实时交互式出,批处理三种方式,Spark特别支持迭代式计算,因此,他对机器学习,图计算具有较强的支持,为此他提供了机器学习和图计算接口。 (1)分布式:Distributed Computation 分布式多台机器翻译 2016-05-06 11:22:55 · 4069 阅读 · 0 评论 -
Spark性能优化第十季之全球独家揭秘Spark统一内存管理
一:Memory Manager在Spark 1.6 版本中,memoryManager 的选择是由spark.memory.useLegacyMode=false决定的。如果采用1.6之前的模型,这会使用StaticMemoryManager来管理,否则使用新的UnifiedMemoryManager,我们先看看1.6之前,对于一个Executor,内存都有哪些部分构成:1,ExecutionMe翻译 2016-05-17 16:53:33 · 2187 阅读 · 0 评论 -
Spark集群搭建与测试
1.虚拟机与Linux Spark+Tachyon+HDFS(HDFS擅长迭代运算,Tachyon基于内存分布式系统) Spark是一个计算框架,需要相应的存储框架。目前是基于下面三种存储: 1.Hadoop的HDFS 2.S3,也就是云存储 3.Tychyon(业界在越来越多使用) Spark+Tachyon+HDFS,将来是黄金组合 Tychyon是基于内存的分布式存储(分布式内存翻译 2016-05-05 18:13:55 · 923 阅读 · 0 评论 -
Scala模式匹配、类型系统与Spark源码阅读
java switch-case(对值) scala不仅对值,而且可以对类型,集合(map,list元数据匹配),object,class scala大量使用模式匹配(match case)Scala的模式匹配,与Java的switch case的区别:1.不仅可以匹配值,可以匹配类型2.可以匹配数组的集合 相同数组、长度相同的数组、以某个元素开头的数组 对于长度相同的数组,会进行自动变量赋翻译 2016-05-05 15:11:48 · 3672 阅读 · 0 评论 -
Spark性能优化第九季之Spark Tungsten内存使用彻底解密
一:Tungsten中到底什么是Page? 1.在Spark其实不存在Page这个类的。Page是一种数据结构(类似于Stack,List等),从OS层面上讲,Page代表了一个内存块,在Page里面可以存放数据,在OS中会存放很多不同的Page,当要获得数据的时候首先要定位具体是哪个Page中的数据,找到该Page之后从Page中根据特定的规则(例如说数据的offset和length)取出数据翻译 2016-05-16 15:02:03 · 3195 阅读 · 1 评论 -
Spark性能优化第八季之Spark Tungsten-sort Based Shuffle
一:使用Tungsten功能 1, 如果想让您的程序使用Tungsten的功能,可以配置: Spark.Shuffle.Manager = tungsten-sort Tungsten中文blogTungsten英文blogSpark在钨丝计划下要管理两种类型的内存存储方式:堆内和堆外。为了管理他们,所以搞了一个Page。 堆外:指针直接指向数据本身。 堆内:指针首先指向Obje翻译 2016-05-16 14:47:01 · 1037 阅读 · 0 评论 -
Spark性能优化第七季之Spark 钨丝计划
一:“钨丝计划”产生的本质原因1,Spark作为一个一体化多元化的(大)数据处理通用平台,性能一直是其根本性的追求之一,Spark基于内存迭代(部分基于磁盘迭代)的模型极大的满足了人们对分布式系统处理性能的渴望,但是有Spark事采用Scala+Java语言编写的所以运行在JVM平台,当然JVM是一个绝对伟大的平台,因为JVM让整个离散的主机融为一体(网络即OS),但是JVM的死穴GC反过来限制了S翻译 2016-05-16 13:35:27 · 3802 阅读 · 0 评论 -
TaskScheduler内幕天机:Spark shell案例,TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解
TaskSchedulerBackend与SchedulerBackendFIFO与FAIR两种调度模式Task数据本地性资源的分配一、TaskScheduler运行过程(Spark-shell角度) 1.启动Spark-shell 当我们spark-shell本身的时候命令终端返回来的主要是ClientEndpoint和SparkDeploySchedulerBakcend。这是因为此时翻译 2016-05-15 22:32:43 · 8630 阅读 · 0 评论 -
Spark系统运行内幕机制循环流程
一、TaskScheduler原理解密 1.DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler的,这符合面向对象中依赖抽象而不依赖的原则,带来底层资源调度器的可插拔性,导致Spark可以运行的众多资源调度器模式上,例如Standalone、Yarn、Mesos、Local、EC2、其它自定义的资源调度器。在Standalone的模式下,我们聚焦于Ta翻译 2016-05-15 21:49:48 · 1582 阅读 · 0 评论 -
Stage划分和Task最佳位置算法
1.Stage划分算法解密 Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application钟可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行 2.Stage划分的已经就是宽依赖,什么产生宽依赖?例如reduceByKey,翻译 2016-05-15 21:00:33 · 1350 阅读 · 0 评论 -
从Spark 架构中透视Job
spark-shell中默认情况下没有任何的Job默认的资源分配方式:在每个Worker上为当前程序分配一个ExecutorBackend进行,且默认情况下会最大化的使用Cores和Memory在一个Executor中一次性最多能够运行多少并发的Task取决于当前Executor能够使用的Cores的数量88个任务具体分配给谁 主要取决于数据本地性 并行度也是被继承的线程是否关系具体运行什么代码?翻译 2016-05-13 23:56:33 · 485 阅读 · 0 评论 -
Spark倒排,求中位数,CountOnce
倒排序 输入: id1 spark hadoop id2 scala spark id3 java hadoop spark id4 scala java id5 the spark id6 the hadoop and spark id7 hadoop Flink storm spark 输出: Flink id7 scala id2 id4 spark id1 id2 i翻译 2016-05-13 23:43:36 · 3138 阅读 · 1 评论 -
Spark Top N
基本TopN(Scala版)package com.dt.spark.cores.scalaimport org.apache.spark.{SparkContext, SparkConf}object TopNBasic {def main (args: Array[String]) {val conf = new SparkConf()conf.setAppName("TopNBasic翻译 2016-05-13 23:35:09 · 1116 阅读 · 0 评论 -
Spark基础排序+二次排序(java+scala)
1.基础排序算法 2.二次排序算法 3.更高级别排序 4.排序算法内幕 1.基础排序算法sc.textFile("/data/putfile.txt").flatMap(_.split(" ")).map(word=>(word,1)).reduceByKey(_+_,1).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair=>(pa翻译 2016-05-13 23:28:10 · 11428 阅读 · 0 评论 -
RDD持久化、广播、累加器
所有的节点host配置一样,可以互相访问 命令:scp /etc/hosts root@node1:/etc/hosts(node1,2,3,4) 常用的Action:reduce,count,saveTextFile,foreach,countByKey 如果想在命令终端中看到执行结果,就必须Collect 凡是Action级别的操作都会触发sc.runJobscval number翻译 2016-05-13 22:54:40 · 712 阅读 · 0 评论 -
RDD实战
RDD操作:Transformation(已有RDD-》新的RDD,数据状态),Action(结果保存到hbase,driver),Controller(persist,cache,checkpoint性能)lazy 延迟执行,步骤越多,优化的空间越大(可以有一些可以合并的操作) collector收集所有RDD中的数组,Collect后Array中就是一个元素,只不过是这个元素是一个Tuple翻译 2016-05-13 21:39:00 · 578 阅读 · 0 评论 -
RDD创建方式(集合,本地,HDFS)
1.RDD创建的几个方式 2.RDD创建实战 3.RDD内幕 第一个RDD:代表了Spark应用程序输入数据的来源 通过Transformation来对RDD进行各种算子的转换,实现算法 RDD创建方式: 1,使用程序中的集合创建RDD; 2,使用本地文件系统创建RDD; 3,使用HDS创建RDD 4,基于DB创建RDD(Oracle,SQL) 5,基于NoSQL,例如HBase翻译 2016-05-13 17:41:36 · 2922 阅读 · 0 评论 -
Spark RDD解密
1.RDD:基于工厂集的应用抽象 MapReduce是基于数据集的:从物理存储上加载数据,然后操作数据 然后写入物理存储设备 基于数据集的操作不适应的场景: 1,不适合于大量的迭代 2,交互式查询 重点是:基于数据流的方式 不能够复用曾经的结果或者中间计算结果 2.RDD内幕解密 3.RDD思考翻译 2016-05-11 14:22:05 · 770 阅读 · 0 评论 -
SCALA_IDE开发Spark程序
IDEA Eclipse 下载scala 下载地址 scala.msi scala环境变量配置 (1)设置SCALA-HOME变量:如图,单击新建,在变量名一栏输入: SCALA-HOME 变量值一栏输入: D:\Program Files\scala 也就是scala的安装目录,根据个人情况有所不同,如果安装在E盘,将“D”改成“E”即可。翻译 2016-05-06 17:54:29 · 9849 阅读 · 7 评论 -
Spark读取HBase内容_Java
Spark读取Hbase中表名为bi_coupon,列簇(column family)为a,column为a,这样对Hbase中数据操作,可通过myRDD来进行,表结构如下: /** * 文件名:Hbase.java * * 创建人:Sundujing - 2393772045@qq.com * * 创建时间:2016年5月12日 下午4:32:03 * * 版权所有:Sunduji原创 2016-05-12 18:01:33 · 6731 阅读 · 0 评论