Spark
文章平均质量分 55
snail_gesture
Machine Learning|Deep Learning|BigData
展开
-
Spark到底解决了什么根本性的技术问题?
1.背景: 在spark出现之前,hadoop的迅速发展,hadoop分布式集群,把编程简化为自动提供 位置感知性调度,容错,以及负载均衡的一种模式,用户就可以在普通的PC机上运行超大集群运算,hadoop有一个非常大的问题:hadoop是基于流处理的,hadoop会从(物理存储)hdfs中加载数据,然后处理之后再返回给物理存储hdfs中,这样不断的读取与写入,占用了大量的IO,后来hadoop出原创 2015-11-06 22:30:52 · 3589 阅读 · 0 评论 -
使用Java和Scala在IDE中开发DataFrame实战
本篇博文我将使用Java和Scala两种语言实战DataFrame,创建DataFrame的时候,DataFrame可以来源于其他RDD,也可以来自于Hive表,或者其他数据来源。一般基于数据来源直接构造DataFrame。例如JSON文件,那么读取JSON文件的时候就会自动创建DataFrame。 SQLContext操作数据SQL的时候:有一个弊端就是,只支持SQL一种方言。 但是如果使用H原创 2016-05-02 22:18:11 · 1356 阅读 · 0 评论 -
解密Spark SQL与DataFrame的本质
本篇博文主要讲解内容如下: 1. Spark SQL与DataFrame 2. RDD与DataFrame 3. Spark SQL企业级最佳实践 一:Spark SQL与DataFrame 1. Spark SQL非常强大主要体现在一下几点:a) 可以处理一切存储介质和各种格式的数据(可以方便的扩展Spark SQL的功能来支持更多类型原创 2016-05-02 11:56:01 · 2149 阅读 · 0 评论 -
Spark SQL数据加载和保存实战
一:前置知识详解: Spark SQL重要是操作DataFrame,DataFrame本身提供了save和load的操作, Load:可以创建DataFrame, Save:把DataFrame中的数据保存到文件或者说与具体的格式来指明我们要读取的文件的类型以及与具体的格式来指出我们要输出的文件是什么类型。 二:Spark SQL读写数据代码实战:import org.apache.原创 2016-04-18 12:33:42 · 12884 阅读 · 0 评论 -
Spark Tungsten(钨丝计划)内存详解
一:Tungsten中到底什么是Page? 1. 在Spark其实不存在Page这个类的。Page是一种数据结构(类似于Stack,List等),从OS层面上讲,Page代表了一个内存块,在Page里面可以存放数据,在OS中会存放很多不同的Page,当要获得数据的时候首先要定位具体是哪个Page中的数据,找到该Page之后从Page中根据特定的规则(例如说数据的offset和length)取出数原创 2016-03-14 09:58:00 · 2362 阅读 · 0 评论 -
Spark Tungsten-sort Based Shuffle 分析
本篇博客主要是对Tungsten-sort Based Shuffle简单分析,因为钨丝计划还没有成熟,所以这里不会太详细的介绍。 一:使用Tungsten功能 1, 如果想让您的程序使用Tungsten的功能,可以配置: Spark.Shuffle.Manager = tungsten-sort Spark在钨丝计划下要管理两种类型的内存存储方式:堆内和堆外。为了管理他们,所以搞了一原创 2016-03-13 16:37:24 · 906 阅读 · 0 评论 -
钨丝计划初探
本篇博文主要讲解内容如下: 1. 钨丝计划的产生的原因 2. 钨丝计划内幕详解 安排: 钨丝计划主要分为三篇博文进行详解,本博文主要是对钨丝计划进行介绍,先从理论的角度来理解钨丝计划。 一:“钨丝计划”产生的本质原因 1, Spark作为一个一体化多元化的(大)数据处理通用平台,性能一直是其根本性的追求之一,Spark基于内存迭代(部分基于磁盘迭代)的模型极大的原创 2016-03-12 12:21:50 · 1519 阅读 · 0 评论 -
Spark schedule资源调度分配详解
一:任务调度与资源调度的区别 1. 任务调度:是通过DAGScheduler,TaskScheduler,SchedulerBackend等进行的作业调度; 2. 资源调度:是指应用程序如何获得资源; 3. 任务调度时在资源调度的基础上进行的,没有资源调度那么任务调度就成为了无源之水,无本之木。 二:资源调度内幕天机揭秘 1. 因为Master负责资源管理和调度,所以资源调度的方法原创 2016-03-05 12:39:34 · 5620 阅读 · 1 评论 -
Spark Sort-Based Shuffle详解
一:为什么需要Sort-Based Shuffle? 1, Shuffle一般包含两个阶段任务: 第一部分:产生Shuffle数据的阶段(Map阶段,额外补充,需要实现ShuffleManager中的getWriter来写数据(数据可以通过BlockManager写到Memory,Disk,Tachyon等,例如想非常快的Shuffle,此时可以考虑把数据写在内存中,但是内存不稳定,所以可以考原创 2016-03-05 08:05:46 · 6341 阅读 · 0 评论 -
Spark Shuffle详解
一:到底什么是Shuffle? Shuffle中文翻译为“洗牌”,需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算。 二:Shuffle可能面临的问题?运行Task的时候才会产生Shuffle(Shuffle已经融化在Spark的算子中了)。 1, 数据量非常大,从其他各台机器收集数据占用大量网络。 2, 数据如何分类,即如何Partit原创 2016-03-04 16:19:09 · 7383 阅读 · 0 评论 -
Spark性能优化(3)
一:数据结构优化为啥要优化数据结构?减少内存使用,避免JVM由于语法特性导致的额外内存开销。1. Java的对象:对象头是16个字节(例如指向对象的指针等元数据信息),如果对象中只有一个int的property,则此时会占据20个字节,也就是说对象的元数据占用了大部分的空间,所有在封装数据的时候尽量不要使用对象!例如说使用JSON格式来封装数据;2. J原创 2016-02-29 19:55:47 · 520 阅读 · 0 评论 -
Spark性能优化(2)
一:Task性能优化 1. 慢任务的性能优化:可以考虑减少每个Partition处理的数据量,同时建议开启任务推测spark.speculation可以进行任务推测。最快完成的任务就会被采纳 慢任务出现的原因?任务倾斜,硬件故障。因为处理逻辑一样的话,时间差很多那么硬件就可能出现故障。Driver上有一个定时器不断的查看有没有慢任务。 2. 尽量减少Shuffle,例如我们要尽量减少gro原创 2016-02-29 16:40:45 · 624 阅读 · 0 评论 -
Spark性能优化(1)
一:Spark性能优化核心基石 1, Spark是采用Master-Slaves的模式进行资源管理和任务执行的管理: a) 资源管理:Master-Workers,在一台机器上可以有多个Workers,可以通过Spark-env.sh可以让每台host上有若干的Worker; b) 任务执行:Driver-Executors,在一台机器上Driver只有一个,当在一台机器上分配多个Wor原创 2016-02-29 16:12:55 · 849 阅读 · 0 评论 -
BlockManager初始化和注册,BlockManager核心方法详解
本篇博文的重要内容如下: 1. BlockManager的注册和初始化 2. BlockManager里面的重要函数详细介绍 先对一些基本概念名词介绍: Block是Spark数据处理的时候最小单位 一:BlockManager初始化 1. BlockManager的实例对象调用initializes的时候才能正常工作。原创 2016-02-20 00:04:07 · 2679 阅读 · 0 评论 -
BlockManager架构原理源码解析
本篇博文的主要内容如下: 1. BlockManager运行实例 2. BlockManager原理流程图 3. BlockManager源码解析 一:BlockManager运行实例观察 从Application启动的角度来观察BlockManager1. 在Application启动的时候还在SparkEnv中注册Bl原创 2016-02-19 23:33:03 · 1350 阅读 · 0 评论 -
Spark源码解读-TaskScheduler源码详解
简要: 本篇博文主要讨论的内容如下: 1. TaskScheduler与SchedulerBackend 2. FIFO与FAIR两种调度模式彻底解密 3. Task数据本地性资源分配源码实现 总体底层任务调度的过程如下: 1. DAGScheduler会把TaskSet通过submitTasks提交给TaskSchedul原创 2016-02-15 22:14:30 · 1454 阅读 · 0 评论 -
使用Java实战RDD和DataFrame转换操作
一:RDD与DataFrame转换 1. 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数据的,例如Person,而Person有name,id等,而record是不知道这些的,但是变成DataFrame背后一定知道,通过反射的方式就可以了解到背后这些元数据,进而转换成DataFrame。 如何反射? Scala: 通过case class映射,在case cl原创 2016-05-02 22:23:08 · 5186 阅读 · 0 评论 -
Java实战RDD与DataFrame动态转换操作
在企业中目前应用比较多的就是动态转换。动态的意思:是指提前不知道RDD中的每个record的列的个数,以及列的内容,只有在运行的时候才会知道,Row代表table中的一行数据。 实战代码如下:package com.dt.spark.SparkApps.sql;/** * 打印结果: [1,Spark,7] [2,Hadoop,10] [3,Fl原创 2016-05-03 08:50:49 · 5956 阅读 · 0 评论 -
Spark SQL基于网站Log的综合案例实战
本篇博文我们将手动添加数据,这个功能非常有用,我们可以根据自己的需要创造出满足自己需要的数据格式及内容,而且数据不需要清洗,话不多说,代码实战。package com.dt.spark.SparkApps.sql.project;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.原创 2016-05-03 11:08:27 · 1012 阅读 · 0 评论 -
Spark架构设计和运行机制简述
基本概念介绍: Driver : 是用户编写的数据处理逻辑,这个逻辑包含用户创建的SparkContext SparkContext:是用户逻辑与Spark集群主要的交互接口,它会和Cluster Manager进行交互,负责计算资源的申请等。 Cluster Manager:资源管理器,负责集群资源的管理和调度,支持的有:Standalone,Mesos和YARN。也可以不原创 2015-11-07 18:52:36 · 1195 阅读 · 0 评论 -
动手实战创建RDD的三种方式
1.通过已经存在的scala集合2.通过hdfs,hbase等 从 hadoop中的hdfs读取数据。 toDebugString可以查看RDD创建的过程 1.首先要从hadoop中读取数据,因此会有mapred.FileInputFormat,共有88个文件 2.hadoopRDD就把物理层分片转化成逻辑层分片。 3.MaPartitionsRDD就可以把读取原创 2015-11-08 11:37:16 · 1716 阅读 · 0 评论 -
Spark RDD中Transformation的map、flatMap、mapPartitions、glom详解
Ma(func) 返回一个新的分布式数据集,该数据集由每一个输入元素经过func函数转换后组成。 由上可以看出,每一个分片中每一个元素都要经过f函数,将原来元素转成新元素u。 V1,V2,V3组成一个集合,经过flatMap之后就会将原来的几个集合合并成一个集合,产生新的RDD。 它会以整个分区为输入函数,也就是说这个函数是作用于整个分区的。应用在连接数据库, 使用mapParti原创 2015-11-08 16:37:12 · 2626 阅读 · 0 评论 -
Spark RDD中Transformation的groupBy、partitionBy、cogroup详解
先对每个RDD中的数据进行分组,如: V1,V2会分为一组, 形成K,依次类推。 对RDD进行分区操作,如果原有的partionRDD和现有的partionRDD是一致的话就不进行分区, 否则会生成ShuffleRDD. 把相同K,后面的V合并成一个集合。原创 2015-11-12 10:31:39 · 5146 阅读 · 0 评论 -
Spark RDD中Transformation的filter、distinct、cartesian、union详解
filter是一个过滤操作,每一个V的值都要经过f函数,满的会留下,产生最终结果。 作用是:去除RDD中相同的元素 两个partions做笛卡尔积 把两个RDD联合起来,两个RDD里面的数据类型一定要相同原创 2015-11-11 22:02:59 · 1150 阅读 · 0 评论 -
Spark RDD中Transformation的mapValues、subtract、sample、takeSample详解
针对于(K,V)形式的类型只对V进行操作 计算差的一种函数 去除两个RDD中相同的元素,不同的RDD将保留下来 是对RDD集合中进行采样的结果是:获取RDD的子集。 fraction =0.5 保留分片的50%也就是一半 和Sample的区别是:takeSample返回的是最终的结果集合。原创 2015-11-11 22:20:30 · 2428 阅读 · 0 评论 -
Spark RDD中Transformation的combineByKey、reduceByKey,join详解
对相同K,把V合并成一个集合. 把相同的K,的V进行reduce操作,就是把V相加 首先,第一步先对两个RDD进行cogroup操作,也就是把每个RDD中的元素构成集合,然后再合并成一个集合,第二步是:进行笛卡尔积.原创 2015-11-12 10:35:33 · 1657 阅读 · 0 评论 -
Spark为啥比hadoop速度快?
1.统一的RDD抽象和操作,基于该抽象一个栈就可以轻松的处理实时流计算,SQL交互式查询,机器学习和图计算等。 基于统一的技术堆栈,使得Spark称为大数据通用计算平台。 2.基于内存的迭代式计算 回顾下hadoop中经典处理过程: MapReduce在每次执行时都要从磁盘读取数据,计算完毕后都要把数据存放到磁盘上。 比如:机器学习的时候原创 2015-11-02 22:19:06 · 7275 阅读 · 0 评论 -
Spark中的combineByKey
Spark中的combineByKey时间 2015-01-23 21:35:00 逸思原文 http://zhangyi.farbox.com/post/combinebykey-in-spark主题 软件开发在数据分析中,处理Key,Value的Pair数据是极为常见的场景,例如我们可以针对这样的数据进行分组、聚合或者将两个包含Pair数据的RDD根据key转载 2015-11-29 16:04:50 · 762 阅读 · 0 评论 -
第34课:Stage划分和Task最佳位置算法源码彻底解密
简介: 一:Stage划分算法解密 二:Task任务本地性算法实现 一:Stage划分算法解密 1.Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后原创 2016-02-14 11:49:38 · 2101 阅读 · 0 评论 -
第33课:Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕
简要: 本篇博文主要讨论的内容如下; 1. Executor工作原理 2. ExecutorBackend注册源码解密 3. Executor实例化及具体如何工作 前置知识: 为啥Worker不直接启动Executor,而是启动另一个线程来启动Executor? 1. Worker是管理当前机器资源的,当当前机器的资源发生改变的时候,会将消息汇报给Master的。 2原创 2016-02-12 01:23:31 · 2318 阅读 · 0 评论 -
Spark Streaming大规模流式处理
1.1概述: Spark Streaming架构概述和原理 Spark Streaming案例集锦 源码分析与性能优化1.2 Spark Streaming架构概述和原理 What is Spark Streaming? 是规模的,可伸缩的,实时流处理。 Spark Streaming的数据来源除了上述kafka,flume,HD原创 2015-11-21 22:19:41 · 3174 阅读 · 0 评论 -
Spark Streaming性能优化系列-如何获得和持续使用足够的集群计算资源?
一:数据峰值的巨大影响 1. 数据确实不稳定,例如晚上的时候访问流量特别大 2. 在处理的时候例如GC的时候耽误时间会产生delay延迟二:Backpressure:数据的反压机制 基本思想:根据上一次计算的Job的一些信息评估来决定下一个Job数据接收的速度。 如何限制Spark接收数据的速度? Spark Streaming在接收数据的时候必须把当前的数据接收完毕才能接原创 2016-06-17 15:23:29 · 7558 阅读 · 2 评论 -
SparkStreaming on Kafka之Kafka解析和安装实战
本篇博文将从以下方面组织内容: 1. Kafka解析 2. 消息组件Kafka 3. Kafka安装 实验搭建所需要的软件: kafka_2.10-0.9.0.1 Zookeeper集群已经安装好。在上一篇博文有安装步骤,不清楚的朋友可以参考下。 一:Kafka解析 1. Kafka是生产者和消费者模式原创 2016-05-08 10:13:49 · 4632 阅读 · 0 评论 -
Spark搭建HA详解
实验环境: zookeeper-3.4.6 Spark:1.6.0 简介: 本篇博客将从以下几点组织文章: 一:Spark 构建高可用HA架构 二:动手实战构建高可用HA 三:提交程序测试HA一:Spark 构建高可用HA架构 Spark本身是Master和Slave,而这这里的 Master是指Spark资源调度和分配。负责整个集群的资源调度和分配。 Worke原创 2016-05-07 11:30:55 · 8962 阅读 · 2 评论 -
Spark源码解读-Taskscheduler源码解析
简要: 本篇博文主要讨论的内容如下; 1. Taskscheduler工作原理 2. Taskscheduler源码解密 前置知识: 一:TaskScheduler原理解密 1. DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler的,这符合面向对象中依赖抽象而不依赖具体的原创 2016-02-15 21:46:03 · 1049 阅读 · 0 评论