spark源码分析

Spark开发环境搭建和作业提交

假如想象 提交于 2019-11-29 04:46:41
本次实验要求 JDK安装配置:1.8以上版本 Scala安装配置:Scala 2.11 Intellij IDEA:下载最新版本 参考链接: Spark 开发环境|Spark开发指南 https://taoistwar.gitbooks.io/spark-developer-guide/spark_base/spark_dev_environment.html IDEA中使用Maven开发Spark应用程序 https://blog.csdn.net/yu0_zhang0/article/details/80112846 使用IntelliJ IDEA配置Spark应用开发环境及源码阅读环境 https://blog.tomgou.xyz/shi-yong-intellij-ideapei-zhi-sparkying-yong-kai-fa-huan-jing-ji-yuan-ma-yue-du-huan-jing.html IDEA导入一个已有的项目: 欢迎界面有Import Project,如果在项目中使用下面步骤, 1.File----->Close Project. 2.在欢迎界面点击Import Project. 一、企业开发Spark作业方式 1.Spark开发测试 IDEA通过Spark Local模式开发(不能远程提交到集群) Spark Shell交互式分析

Spark源码分析调试环境搭建

你说的曾经没有我的故事 提交于 2019-11-29 04:24:26
目前常用的Spark版本有三种Cloudera、HDP和Apache,源码的获取方式可以在各自官网下载。本文选择Apache版本。 搭建环境所需要的工具如下: CentOS 7 maven 3.5.0 Java 1.8.0 Scala 2.12.2 IntelliJ IDEA2017.1.2 本人选择在服务器上进行编译和调试,机器配置为至强CPU(56核)、内存256G。 下载源码 首先将 apache/spark fork到自己的github仓库,接着再IDEA上通过VCS->Checkout from Version Control->Github 中选择刚刚fork下来到本地 配置本地maven 本文选择使用自己搭建的maven仓库,Spark源码自带的maven会从官方镜像上下载所需的依赖,此步骤会比较耗时,设置为本地maven仓库后,速度会大幅提升。设置方法如下图所示 编译Spark源码 选择的最新版的Spark,目前是2.3.0。编译Spark源码,使用自己安装的maven进行编译,其中-T参数是设置编译的线程数,这里设置的是20 mvn -T 5 -DskipTests clean package 经过12分钟的等待,Spark源码编译完成,如下图所示 接着可以通过运行下spark-shell来测试一下编译结果 ./bin/spark-shell

SPARK 知识地图

泪湿孤枕 提交于 2019-11-28 23:20:16
1 Table of Contents spark 总揽 spark core spark sql spark mllib spark graphx spark streaming 2 spark 总揽 spark官网:https://spark.apache.org/ spark 资料集中营,覆盖各种视频,论文,博客,ppt: https://spark.apache.org/documentation.html spark jira:https://issues.apache.org/jira/browse/SPARK/?selectedTab=com.atlassian.jira.jira-projects-plugin:issues-panel spark developer list: http://apache-spark-developers-list.1001551.n3.nabble.com/ spark user list:http://apache-spark-user-list.1001560.n3.nabble.com/ spark Screencast Tutorial Videos: https://spark.apache.org/screencasts/1-first-steps-with-spark.html https://spark

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节②

点点圈 提交于 2019-11-28 20:59:14
三、你为什么需要Spark; 你需要Spark的十大理由: 1, Spark是可以革命Hadoop的目前唯一替代者 ,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoop and Spark 可以看出在Spark特别擅长的领域其速度比Hadoop快120倍以上! 2,原先支持Hadoop的四大商业机构纷纷宣布支持Spark,包含 知名Hadoop解决方案供应商Cloudera 和 知名的Hadoop供应商MapR ; 3,Spark是继Hadoop之后,成为替代Hadoop的下一代云计算大数据核心技术,目前SPARK已经构建了自己的整个大数据处理生态系统,如流处理、图技术、机器学习、NoSQL查询等方面都有自己的技术,并且是Apache顶级Project,可以预计的是2014年下半年到2015年在社区和商业应用上会有爆发式的增长。 4,国外一些大型互联网公司已经部署了Spark。甚至连Hadoop的早期主要贡献者Yahoo现在也在多个项目中部署使用Spark;国内的淘宝、优酷土豆、网易、Baidu、腾讯等已经使用Spark技术用于自己的商业生产系统中,国内外的应用开始越来越广泛。Spark正在逐渐走向成熟,并在这个领域扮演更加重要的角色。 5,不得不提的是Spark的“One stack to rule

从源码看Spark读取Hive表数据小文件和分块的问题

孤者浪人 提交于 2019-11-28 07:57:21
原文链接: https://mp.csdn.net/postedit/82423831 使用Spark进行数据分析和计算早已成趋势,你是否关注过读取一张Hive表时Task数为什么是那么多呢?它跟什么有关系呢? 最近刚好碰到这个问题,而之前对此有些模糊,所以做了些整理,希望大家拍砖探讨 前言 有同事问到, Spark 读取一张Hive表的数据Task有一万多个,看了Hive表分区下都是3MB~4MB的小文件,每个Task只处理这么小的文件,实在浪费资源浪费时间。而我们都知道Spark的Task数由partitions决定,所以他想通过repartition(num)的方式来改变分区数,结果发现读取文件的时候Task数并没有改变。遂问我有什么参数可以设置,从而改变读取Hive表时的Task数,将小文件合并大文件读上来 > 本文涉及源码基于 Spark 2.0.0和Hadoop2.6.0,不同版本代码可能不一致,需自己对应。此外针对TextInputFormat格式的Hive表,其他格式的比如Parquet有Spark自己的高效实现,不在讨论范围之内 分析 Spark读取Hive表是通过HadoopRDD扫描上来的,具体可见 org.apache.spark.sql.hive.TableReader类,构建HadoopRDD的代码如下 val rdd = new HadoopRDD(

Kylin 2.0 Spark Cubing 优化改进

若如初见. 提交于 2019-11-27 16:07:53
Kylin 2.0 引入了Spark Cubing beta版本,本文主要介绍我是如何让 Spark Cubing 支持 启用Kerberos的HBase集群,再介绍下Spark Cubing的性能测试结果和适用场景。 Spark Cubing 简介 在简介Spark Cubing之前,我简介下MapReduce Batch Cubing。所谓的MapReduce Batch Cubing就是利用MapReduce 计算引擎 批量计算Cube,其输入是Hive表,输出是HBase的KeyValue,整个构建过程主要包含以下6步: 建立Hive的大宽表; (MapReduce计算) 对需要字典编码的列计算列基数; (MapReduce计算) 构建字典; (JobServer计算 or MapReduce计算) 分层构建Cuboid; (MapReduce计算) 将Cuboid转为HBase的KeyValue结构(HFile); (MapReduce计算) 元数据更新和垃圾回收。 详细的Cube生成过程可以参考 Apache Kylin Cube 构建原理 。 而Kylin 2.0的Spark Cubing就是在Cube构建的第4步替换掉MapReduce。 如下图,就是将5个MR job转换为1个Spark job: (注: 以下两个图片引自 Apache Kylin 官网的blog

IntelliJ IDEA Spark源码分析

笑着哭i 提交于 2019-11-27 05:07:22
在对 Spark 有了一定使用经验后,为了能够跟进 Spark 源代码的开发进展,对其源代码进行详细的阅读分析,本文详细说明了如何使用 IntelliJ IDEA 从 Github 上导入最新的 Spark 源代码,并对其进行编译。 准备工作 首先你的系统中需要安装了 JDK 1.6+,并且安装了 Scala。之后下载最新版的 IntelliJ IDEA 后,首先安装(第一次打开会推荐你安装)Scala 插件,相关方法就不多说了。至此,你的系统中应该可以在命令行中运行 Scala。我的系统环境如下: 1. Mac OS X(10.9.5) 2. JDK 1.7.71 3. Scala 2.10.4 4. IntelliJ IDEA 14 另外,最后还是建议大家开始先使用 pre-built 的 Spark,对 Spark 的运行、使用方法有所了解,编写了一些 Spark 应用程序后再展开源代码的阅读,并尝试修改源码,进行手动编译。 从 Github 导入 Spark 工程(下次有更新直接更新即可) 打开IntelliJ IDEA 后,在菜单栏中选择 VCS→Check out from Version Control→Git,之后在 Git Repository URL 中填入 Spark 项目的地址,并指定好本地路径,如下图所示。 点击该窗口中的的 Clone 后,开始从

spark shuffle写操作三部曲之SortShuffleWriter

牧云@^-^@ 提交于 2019-11-26 17:39:54
提出问题 1. shuffle过程的数据是如何传输过来的,是按文件来传输,还是只传输该reduce对应在文件中的那部分数据? 2. shuffle读过程是否有溢出操作?是如何处理的? 3. shuffle读过程是否可以排序、聚合?是如何做的? 。。。。。。 概述 在 spark shuffle的写操作之准备工作 中的 ResultTask 和 ShuffleMapTask 看到了,rdd读取数据是调用了其 iterator 方法。 计算或者读取RDD org.apache.spark.rdd.RDD#iterator源码如下,它是一个final方法,只在此有实现,子类不允许重实现这个方法: 思路:如果是已经缓存下来了,则调用 org.apache.spark.rdd.RDD#getOrCompute 方法,通过底层的存储系统或者重新计算来获取父RDD的map数据。否则调用 org.apache.spark.rdd.RDD#computeOrReadCheckpoint ,从checkpoint中读取或者是通过计算来来获取父RDD的map数据。 我们逐一来看其依赖方法: org.apache.spark.rdd.RDD#getOrCompute 源码如下: 首先先通过Spark底层的存储系统获取 block。如果底层存储没有则调用 org.apache.spark.rdd.RDD

小白如何学习大数据开发,大数据学习路线是怎样的?

蓝咒 提交于 2019-11-26 15:07:57
零基础的同学学习大数据开发不能急于求成,要分阶段分步骤来一步步完成,分享一下大数据的学习路线是什么?小白该怎么学习大数据呢,大概可以分为四步: 第一个阶段:了解大数据的基本概念 首先,学习一门课程的时候,要对这门课程有一个简单的了解,比如说,要先学习这门课程的 一些专业的术语,学习一些入门概念知道这么课程是做什么的,主要的学习知识有哪些。那么 学习大数据就必须知道什么是大数据,一般大数据的运用领域是那些,避免自己在对大数据一 无所知的情况下就开始盲目学习。大数据学习资料分享群868847735 第二个阶段:学习计算机的编程语言 对于零基础的小伙伴们来说,开始入门可能并不是那么容易,需要学习大量的理论知识,阅读 枯燥的教材。因为要掌握一门计算机编程语言,还是很难的。大家都知道计算机编程语言有很 多,比如:R,C++,Python,Java等等。 第三阶段:大数据有关的学习课程 经过了前两阶段的基础学习后,我们对编程语言也基本掌握了,接下来就可以进行大数据部分 的课程学习了。在这里小编要特别提醒大家:行业真正大数据,82%主讲都是hadoop、 spark生态体系、storm实时开发,初学者请务必认清你要学的是不是真正大数据! 第四个阶段:项目实战阶段 实战训练可以帮助我们更好的理解所学的内容,同时对相关知识加强记忆。在以后的实际运用 中,可以更快的上手