随笔分类 -  Apache Spark

Spark的使用及源码走读
摘要:图的并行化处理一直是一个非常热门的话题,这里头的重点有两个,一是如何将图的算法并行化,二是找到一个合适的并行化处理框架。Spark作为一个非常优秀的并行处理框架,将一些并行化的算法移到其上面就成了一个很自然的事情。 Graphx是一些常见图算法在Spark上的并行化实现,同时提供了丰富的API接口。本文就Graphx的代码架构及pagerank在graphx中的具体实现做一个初步的学习。 阅读全文
posted @ 2014-06-11 11:01 徽沪一郎 阅读(6278) 评论(0) 推荐(1) 编辑
摘要:在新近发布的spark 1.0中新加了sql的模块,更为引人注意的是对hive中的hiveql也提供了良好的支持,作为一个源码分析控,了解一下spark是如何完成对hql的支持是一件非常有趣的事情。 阅读全文
posted @ 2014-06-04 11:19 徽沪一郎 阅读(5638) 评论(1) 推荐(0) 编辑
摘要:Hive是基于Hadoop的开源数据仓库工具,提供了类似于SQL的HiveQL语言,使得上层的数据分析人员不用知道太多MapReduce的知识就能对存储于Hdfs中的海量数据进行分析。由于这一特性而收到广泛的欢迎。 Hive的整体框架中有一个重要的模块是执行模块,这一部分是用Hadoop中MapReduce计算框架来实现,因而在处理速度上不是非常令人满意。由于Spark出色的处理速度,有人已经成功将HiveQL的执行利用Spark来运行,这就是已经非常闻名的Shark开源项目。 在Spark 1.0中,Spark自身提供了对Hive的支持。本文不准备分析Spark是如何来提供对Hive的支持的,而只着重于如何搭建Hive On Spark的测试环境。 阅读全文
posted @ 2014-05-30 08:44 徽沪一郎 阅读(6164) 评论(0) 推荐(5) 编辑
摘要:在即将发布的spark 1.0中有一个新增的功能,即对sql的支持,也就是说可以用sql来对数据进行查询,这对于DBA来说无疑是一大福音,因为以前的知识继续生效,而无须去学什么scala或其它script. 一般来说任意一个sql子系统都需要有parser,optimizer,execution三大功能模块,在spark中这些又都是如何实现的呢,这些实现又有哪些亮点和问题?带着这些疑问,本文准备做一些比较深入的分析。 阅读全文
posted @ 2014-05-27 16:10 徽沪一郎 阅读(8933) 评论(1) 推荐(1) 编辑
摘要:“spark已经比较头痛了,还要将其运行在yarn上,yarn是什么,我一点概念都没有哎,再怎么办啊。不要跟我讲什么原理了,能不能直接告诉我怎么将spark在yarn上面跑起来,I'm a dummy, just told me how to do it.” 如果你和我一样是一个对形而上的东西不是太感兴趣,而只纠结于怎么去做的话,看这份guide保证不会让你失望, :)。 阅读全文
posted @ 2014-05-19 18:30 徽沪一郎 阅读(4458) 评论(0) 推荐(0) 编辑
摘要:本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了。但到了Spark上面,事情似乎不这么简单,按照spark officical document上的来做,总会出现这样或那样的编译错误,让人懊恼不已。 阅读全文
posted @ 2014-05-16 16:44 徽沪一郎 阅读(5769) 评论(4) 推荐(3) 编辑
摘要:Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准。其主要职责将是分布式计算集群的管理,集群中计算资源的管理与分配。 Yarn为应用程序开发提供了比较好的实现标准,Spark支持Yarn部署,本文将就Spark如何实现在Yarn平台上的部署作比较详尽的分析。 阅读全文
posted @ 2014-05-15 10:48 徽沪一郎 阅读(6467) 评论(1) 推荐(0) 编辑
摘要:在Spark源码走读系列之2中曾经提到Spark能以Standalone的方式来运行cluster,但没有对Application的提交与具体运行流程做详细的分析,就这些问题,本文做了一个比较详细的分析,并对在standalone模式下,Master节点是如何实现HA这一问题做出解答。 阅读全文
posted @ 2014-05-12 12:09 徽沪一郎 阅读(7442) 评论(0) 推荐(0) 编辑
摘要:Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数据读取为例,讲述清楚存储子系统中各部件的交互关系。 阅读全文
posted @ 2014-05-08 13:37 徽沪一郎 阅读(5941) 评论(2) 推荐(0) 编辑
摘要:在流数据的处理过程中,为了保证处理结果的可信度(不能多算,也不能漏算),需要做到对所有的输入数据有且仅有一次处理。在Spark Streaming的处理机制中,不能多算,比较容易理解。那么它又是如何作到即使数据处理结点被重启,在重启之后这些数据也会被再次处理呢? 阅读全文
posted @ 2014-05-02 19:05 徽沪一郎 阅读(5545) 评论(1) 推荐(0) 编辑
摘要:Spark Streaming能够对流数据进行近乎实时的速度进行数据处理。采用了不同于一般的流式数据处理模型,该模型使得Spark Streaming有非常高的处理速度,与storm相比拥有更高的吞吐能力。 本篇简要分析Spark Streaming的处理模型,Spark Streaming系统的初始化过程,以及当接收到外部数据时后续的处理步骤。 阅读全文
posted @ 2014-04-25 21:22 徽沪一郎 阅读(7614) 评论(0) 推荐(1) 编辑
摘要:本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何返回。 阅读全文
posted @ 2014-04-23 15:07 徽沪一郎 阅读(11578) 评论(0) 推荐(4) 编辑
摘要:本文以wordCount为例,详细说明spark创建和运行job的过程,涉及的内容有spark运行环境的搭建,如何将spark以local cluster模式运行,同时大体勾勒出job在提交过程中的函数调用路径。 阅读全文
posted @ 2014-04-21 17:33 徽沪一郎 阅读(15369) 评论(1) 推荐(1) 编辑
摘要:在对Spark的源码进行具体的走读之前,如果想要快速对Spark的有一个整体性的认识,阅读Matei Zaharia做的Spark论文是一个非常不错的选择。 在阅读该论文的基础之上,再结合Spark作者在2012 Developer Meetup上做的演讲Introduction to Spark Internals,那么对于Spark的内部实现会有一个比较大概的了解。 有了上述的两篇文章奠定基础之后,再来进行源码阅读,那么就会知道分析的重点及难点。 阅读全文
posted @ 2014-04-15 11:36 徽沪一郎 阅读(24391) 评论(6) 推荐(12) 编辑
摘要:Scala越来越流行, Spark也愈来愈红火, 对spark的代码进行走读也成了一个很普遍的行为。不巧的是,当前java社区中很流行的ide如eclipse,netbeans对scala的支持都不算太好。在这种情况下不得不想到编辑器之神emacs,利用emacs+ensime来打造scala编程环境。 本文讲述的步骤全部是在arch linux上,其它发行版的linux视具体情况变通。 阅读全文
posted @ 2014-04-11 16:49 徽沪一郎 阅读(7407) 评论(2) 推荐(0) 编辑