
Spark
文章平均质量分 93
wbj0110
这个作者很懒,什么都没留下…
展开
-
Spark - 大数据Big Data处理框架
Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右。 Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了Cache来保存中间计算结果,并能适时主动推Map/Reduce任务,第三代就是Spark倡导的流Streaming。 Spark兼容Hadoop的APi,能够读写Hadoop的HDFS HBAS...原创 2014-07-08 11:58:55 · 179 阅读 · 0 评论 -
Spark源码系列(四)图解作业生命周期
这一章我们探索了Spark作业的运行过程,但是没把整个过程描绘出来,好,跟着我走吧,let you know! 我们先回顾一下这个图,Driver Program是我们写的那个程序,它的核心是SparkContext,回想一下,从api的使用角度,RDD都必须通过它来获得。 下面讲一讲它所不为认知的一面,它和其它组件是如何交互的。 Driver向Master注册Application...原创 2015-02-26 15:19:09 · 104 阅读 · 0 评论 -
Spark源码系列(五)分布式缓存
这一章想讲一下Spark的缓存是如何实现的。这个persist方法是在RDD里面的,所以我们直接打开RDD这个类。 def persist(newLevel: StorageLevel): this.type = { // StorageLevel不能随意更改 if (storageLevel != StorageLevel.NONE && newLevel !=...原创 2015-02-27 15:51:24 · 122 阅读 · 0 评论 -
Spark源码系列(六)Shuffle的过程解析
Spark大会上,所有的演讲嘉宾都认为shuffle是最影响性能的地方,但是又无可奈何。之前去百度面试hadoop的时候,也被问到了这个问题,直接回答了不知道。 这篇文章主要是沿着下面几个问题来开展: 1、shuffle过程的划分? 2、shuffle的中间结果如何存储? 3、shuffle的数据如何拉取过来? Shuffle过程的划分 Spark的操作模型是基于RDD的,当调用R...原创 2015-02-27 15:51:39 · 162 阅读 · 0 评论 -
Apache Spark源码走读之1 -- Spark论文阅读笔记
楔子 源码阅读是一件非常容易的事,也是一件非常难的事。容易的是代码就在那里,一打开就可以看到。难的是要通过代码明白作者当初为什么要这样设计,设计之初要解决的主要问题是什么。 在对Spark的源码进行具体的走读之前,如果想要快速对Spark的有一个整体性的认识,阅读Matei Zaharia做的Spark论文是一个非常不错的选择。 在阅读该论文的基础之上,再结合Spark作者在2012 De...原创 2015-03-16 12:51:34 · 111 阅读 · 0 评论 -
Apache Spark源码走读之2 -- Job的提交与运行
概要 本文以wordCount为例,详细说明spark创建和运行job的过程,重点是在进程及线程的创建。 实验环境搭建 在进行后续操作前,确保下列条件已满足。 下载spark binary 0.9.1 安装scala 安装sbt 安装java 启动spark-shell 单机模式运行,即local模式 local模式运行非常简单,只要运行以下命令即可,假设当前目录是$SP...原创 2015-03-16 13:02:25 · 114 阅读 · 0 评论 -
Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何返回。 准备 spark已经安装完毕 spark运行在local mode或local-cluster mode local-cluster mode local-cluster模式也称为伪分布式,可以使用如下指令运行 ...原创 2015-03-17 18:20:47 · 121 阅读 · 0 评论 -
详细探究Spark的shuffle实现
Background 在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。Spark作为MapReduce框架的一种实现,自然也实现了shuffle的逻辑,本文就深入研究Spark的shuffle是如何实现的,有什么优缺点,与Hadoop Map...原创 2015-03-17 19:14:08 · 138 阅读 · 0 评论 -
Spark on Yarn:性能调优
1. 调优经验 应该说,Spark开发中,具体采用什么调优方法去优化性能,需要根据具体算法和实现而定,适合我们这个问题的方法不一定就适合其他问题,但希望我们的经验可以让其他人少踩点坑,更多的调优方法还可以参考官方文档中的 Configuration 和 Tuning 部分。 (1)配置项的使用 熟悉Hadoop开发的同学应该对配置项不陌生。根据不同问题,调整不同的配置项参数,是比较基本的...原创 2014-08-26 15:13:15 · 350 阅读 · 0 评论 -
Hadoop、Spark、HBase与Redis的适用性讨论
最近在网上又看到有关于Hadoop适用性的讨论[1]。想想今年大数据技术开始由互联网巨头走向中小互联网和传统行业,估计不少人都在考虑各种“纷繁复杂”的大数据技术的适用性的问题。这儿我就结合我这几年在Hadoop等大数据方向的工作经验,与大家讨论一下Hadoop、Spark、HBase及Redis等几个主流大数据技术的使用场景(首先声明一点,本文中所指的Hadoop,是很“狭义”的Hadoop,...原创 2014-09-02 13:36:50 · 690 阅读 · 0 评论 -
Spark SQL & Spark Hive编程开发, 并和Hive执行效率对比
Spark SQL也公布了很久,今天写了个程序来看下Spark SQL、Spark Hive以及直接用Hive执行的效率进行了对比。以上测试都是跑在YARN上。 首先我们来看看我的环境: 3台DataNode,2台NameNode,每台机器20G内存,24核 数据都是lzo格式的,共336个文件,338.6 G 无其他任务执行 如果想及时了解Spark、Hadoop或者Hbas...原创 2014-09-02 14:10:28 · 496 阅读 · 0 评论 -
迭代计算的一些开源框架
迭代计算是一种通过多次循环得出结果的计算方式,一般需要将上一次计算的结果代入到下一步的计算中去。当计算数据和计算规模都比较小时,可以在单机上实现计算过程;但是当数据集变大或者计算复杂度上升时,在单机上就可能无法完成计算了。在互联网企业中,各种数据挖掘,信息检索等计算用例,由于抽取的数据集较大,往往都是进行分布式的迭代计算。 MapReduce框架能够很好的处理大规模的数据计算,但是在实现...原创 2014-04-24 09:27:00 · 354 阅读 · 0 评论 -
Hadoop vs Spark性能对比
基于Spark-0.4和Hadoop-0.20.2 1. Kmeans 数据:自己产生的三维数据,分别围绕正方形的8个顶点 {0, 0, 0}, {0, 10, 0}, {0, 0, 10}, {0, 10, 10}, {10, 0, 0}, {10, 0, 10}, {10, 10, 0}, {10, 10, 10} Point number 189,918,08...原创 2014-04-25 07:55:57 · 149 阅读 · 0 评论 -
类Hadoop的高效分布式计算系统Spark
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算...原创 2014-04-25 07:56:22 · 143 阅读 · 0 评论 -
Spark源码系列(三)作业运行过程
作业执行 上一章讲了RDD的转换,但是没讲作业的运行,它和Driver Program的关系是啥,和RDD的关系是啥? 官方给的例子里面,一执行collect方法就能出结果,那我们就从collect开始看吧,进入RDD,找到collect方法。 def collect(): Array[T] = { val results = sc.runJob(this, (iter...原创 2015-02-26 15:18:50 · 138 阅读 · 0 评论 -
Spark源码系列(二)RDD详解
1、什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。 RDD的全名是Resilient Distributed Dataset,意思是容错的分布式数据集,每一个RDD都会有5个特征: 1、有一个分片列表。就是能被切分,和hadoop一样的,能够切分的数据才能并行计算。 2、有一个...原创 2015-02-26 15:18:33 · 112 阅读 · 0 评论 -
Spark源码系列(一)spark-submit提交作业过程
前言 折腾了很久,终于开始学习Spark的源码了,第一篇我打算讲一下Spark作业的提交过程。 这个是Spark的App运行图,它通过一个Driver来和集群通信,集群负责作业的分配。今天我要讲的是如何创建这个Driver Program的过程。 作业提交方法以及参数 我们先看一下用Spark Submit提交的方法吧,下面是从官方上面摘抄的内容。 # Run on a...原创 2015-02-26 15:18:16 · 121 阅读 · 0 评论 -
Spark:一个高效的分布式计算系统
概述 什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要...原创 2014-07-08 13:26:06 · 102 阅读 · 0 评论 -
spark出现GC overhead limit exceeded和java heap space
spark执行任务时出现java.lang.OutOfMemoryError: GC overhead limit exceeded和java.lang.OutOfMemoryError: java heap space 最直接的解决方式就是在spark-env.sh中将下面两个参数调节的尽量大 export SPARK_EXECUTOR_MEMORY=6000M expor...原创 2015-01-21 10:50:57 · 315 阅读 · 0 评论 -
Spark Core源码分析: RDD基础
RDD RDD初始参数:上下文和一组依赖 Java代码 abstract class RDD[T: ClassTag]( @transient private var sc: SparkContext, @transient private var deps: Seq[Dependency[_]] ) extends Ser...原创 2015-01-26 09:31:07 · 107 阅读 · 0 评论 -
Spark Core源码分析: Spark任务执行模型
DAGScheduler 面向stage的调度层,为job生成以stage组成的DAG,提交TaskSet给TaskScheduler执行。 每一个Stage内,都是独立的tasks,他们共同执行同一个compute function,享有相同的shuffledependencies。DAG在切分stage的时候是依照出现shuffle为界限的。 Java代码 ...原创 2015-01-26 09:31:25 · 141 阅读 · 0 评论 -
Spark Core源码分析: Spark任务模型
概述 一个Spark的Job分为多个stage,最后一个stage会包括一个或多个ResultTask,前面的stages会包括一个或多个ShuffleMapTasks。 ResultTask执行并将结果返回给driver application。 ShuffleMapTask将task的output根据task的partition分离到多个buckets里。一个ShuffleMa...原创 2015-01-26 09:31:41 · 136 阅读 · 0 评论 -
Spark源码分析之-scheduler模块
Background Spark在资源管理和调度方式上采用了类似于Hadoop YARN的方式,最上层是资源调度器,它负责分配资源和调度注册到Spark中的所有应用,Spark选用Mesos或是YARN等作为其资源调度框架。在每一个应用内部,Spark又实现了任务调度器,负责任务的调度和协调,类似于MapReduce。本质上,外层的资源调度和内层的任务调度相互独立,各司其职。本文对于Spar...原创 2015-01-30 09:04:06 · 147 阅读 · 0 评论 -
Spark源码分析之-deploy模块
Deploy模块整体架构 deploy模块主要包含3个子模块:master, worker, client。他们继承于Actor,通过actor实现互相之间的通信。 Master:master的主要功能是接收worker的注册并管理所有的worker,接收client提交的application,(FIFO)调度等待的application并向worker提交。 Worker:wo...原创 2015-01-30 09:05:01 · 274 阅读 · 0 评论 -
Lambda表达式让Spark编程更容易
近日,Databricks官方网站发表了一篇博文,用示例说明了lambda表达式如何让Spark编程更容易。文章开头即指出,Spark的主要目标之一是使编写大数据应用程序更容易。Spark的Scala和Python接口一直很简洁,但由于缺少函数表达式,Java API有些冗长。因此,随着Java 8增加了lambda表达式,他们更新了Spark的API。Spark 1.0将提供Java 8 l...原创 2014-08-01 15:41:30 · 186 阅读 · 0 评论 -
Spark - 大数据Big Data处理框架
Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右。 Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了Cache来保存中间计算结果,并能适时主动推Map/Reduce任务,第三代就是Spark倡导的流Streaming。 Spark兼容Hadoop的APi,能够读写Hadoop的HDFS HB...原创 2014-08-04 10:01:05 · 133 阅读 · 0 评论 -
Spark:一个高效的分布式计算系统
概述 什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需...原创 2014-08-04 13:17:11 · 145 阅读 · 0 评论 -
Spark – 内存计算
wget http://mirrors.cnnic.cn/apache/incubator/spark/spark-0.8.0-incubating/spark-0.8.0-incubating-bin-hadoop1.tgz tar -zxvf spark-0.8.0-incubating-bin-hadoop1.tgz mv spark-0.8.0-incubating-bin-had...原创 2014-03-19 08:53:09 · 241 阅读 · 0 评论 -
Spark源码分析之-Storage模块
Storage模块整体架构 Storage模块主要分为两层: 通信层:storage模块采用的是master-slave结构来实现通信层,master和slave之间传输控制信息、状态信息,这些都是通过通信层来实现的。 存储层:storage模块需要把数据存储到disk或是memory上面,有可能还需replicate到远端,这都是由存储层来实现和提供相应接口。 而其他模块若要和s...原创 2015-02-25 15:13:02 · 151 阅读 · 0 评论 -
详细探究Spark的shuffle实现
Shuffle Shuffle是MapReduce框架中的一个特定的phase,介于Map phase和Reduce phase之间,当Map的输出结果要被Reduce使用时,输出结果需要按key哈希,并且分发到每一个Reducer上去,这个过程就是shuffle。由于shuffle涉及到了磁盘的读写和网络的传输,因此shuffle性能的高低直接影响到了整个程序的运行效率。 下面这幅图清晰...原创 2015-02-25 15:13:24 · 147 阅读 · 0 评论 -
Spark源码分析--资源调度机制
[java] view plain copy /* *schedule()解决了spark资源调度的问题 */ rivate def schedule() { //首先判断,master状态不是ALIVE的话,直接返回 //也就是说,stanby master是不会进行application等资源调度的 if (...原创 2016-06-15 11:55:33 · 225 阅读 · 0 评论