0. 说明  官方文档  Job Scheduling Spark 调度核心组件: DagScheduler TaskScheduler BackendScheduler 1. DagScheduler direct acycle graph , 有向无环图调度器 高级调度器,面向的是 stage ,为每个 job 计算 stage 的 DAG 图,跟踪 RDD 和 stage 的输出,找出最小的调度策略来执行 job. 该调度器提交 stage 给下层的 Task 调度器,以 taskSet…
第0章 预备知识0.1 Scala0.1.1 Scala 操作符0.1.2 拉链操作0.2 Spark Core0.2.1 Spark RDD 持久化0.2.2 Spark 共享变量0.3 Spark SQL0.3.1 RDD.DataFrame 与 DataSet0.3.2 DataSet 与 RDD 互操作0.3.3 RDD.DataFrame 与 DataSet 之间的转换0.3.4 用户自定义聚合函数(UDAF)0.3.5 开窗函数0.4 Spark Streaming0.4.1 Dst…
0. 说明 [Spark 核心组件示意图] 1. RDD resilient distributed dataset , 弹性数据集 轻量级的数据集合,逻辑上的集合.等价于 list 没有携带数据. 2. 依赖 RDD 的依赖是 子 RDD 上的每个分区和父 RDD 分区数量上的对应关系 Dependency |----ShuffleDependency (宽依赖) |----NarrowDependency (窄依赖:子 RDD 的每个分区依赖少量的父 RDD 分区) |-----One2On…
0. 说明 Spark 下运行job,使用第三方 Jar 包的 3 种方式. 1. 方式一 将第三方 Jar 包分发到所有的 spark/jars 目录下 2. 方式二 将第三方 Jar 打散,和我们自己的 Jar 包打到一起 类似的例子可以参考  在 Spark 集群上运行程序  中的打包部分 3. 方式三 在 spark-submit 命令中,通过 --jars 指定使用的第三方 Jar 包 [案例:使用 spark-shell 执行 taggen] 1. 启动 spark-shell,指定…
0. 说明 在 IDEA 中编写 Spark 代码实现将 JSON 数据转换成标签,分别用 Scala & Java 两种代码实现. 1. 准备 1.1 pom.xml  <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.1.0<…
0. 说明 Spark 在 IDEA 下使用 Scala  & Spark 在 IDEA 下使用 Java 编写 WordCount 程序 1. 准备 在项目中新建模块,为模块添加 Maven 和 Scala 支持 pom.xml 中添加的内容如下 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</…
0. 说明 聚合气温数据,聚合出 MAX . MIN . AVG 1. Spark Shell 实现 1.1 MAX 分步实现 # 加载文档 val rdd1 = sc.textFile("file:///home/centos/temp3.dat") # 压扁 val rdd2 = rdd1.map(line=>{).toInt , arr().toInt)}) # 得到最大值 val rdd3 = rdd2.reduceByKey((a,b)=>if(a > b)…
0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 示意图 1. 实现 1.1 分步实现 # step 加载文档 val rdd1 = sc.textFile("file:///home/centos/wc1.txt") # step 压扁 val rdd2 = rdd1.flatMap(line=>{line.split(" ")}) # step…
Spark Core 1. 概述 Spark 是一种基于内存的快速.通用.可扩展的大数据分析计算引擎 1.1 Hadoop vs Spark 上面流程对应Hadoop的处理流程,下面对应着Spark的处理流程 Hadoop Hadoop 是由 java 语言编写的,在分布式服务器集群上存储海量数据并运行分布式 分析应用的开源框架 作为 Hadoop 分布式文件系统,HDFS 处于 Hadoop 生态圈的最下层,存储着所有的 数 据 , 支持着 Hadoop的所有服务 . 它的理论基础源于Goog…
Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动:      集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资源写入到Master的HashSet数据机构中)     一个 Worker 默认给一个 Application 启动 1 个 Executor,可以设置 --executor-cores num 来启动多个.开机启动时最好设置 spreadOut, 可以在集群中分散启动 executor.   …
1. 什么是Task? 在前面的章节里描写叙述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系能够这样理解: Application: Application是Driver在构建SparkContent的上下文的时候创建的,就像申报员,如今要构建一个能完毕任务的集群,须要申报的是这次须要多少个Executor…
1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系可以这样理解: Application: Application是Driver在构建SparkContent的上下文的时候创建的,就像申报员,现在要构建一个能完成任务的集群,需要申报的是这次需要多少个Executor(可…
不多说,直接上干货! 问题详情 电脑8G,目前搭建3节点的spark集群,采用YARN模式. master分配2G,slave1分配1G,slave2分配1G.(在安装虚拟机时) export SPARK_WORKER_MERMORY=1g  (在spark-env.sh) export JAVA_HOME=/usr/local/jdk/jdk1..0_60 (必须写) export SCALA_HOME=/usr/local/scala/scala- (必须写) export HADOOP_H…
引言 上一节<TaskScheduler源代码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源代码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 假设一个Stage的全部的parent stage都已经计算完毕或者存在于cache中.那么他会调用submitMissingTasks来提交该Stage所包括的T…
使用idea以client方式提交代码到standalone集群非常简单. 1.首先有一个部署好且已经启动的standalone集群 -------------------------------------------------------------------- 2.将应用打包 (这里两种选择,一种是包里只含应用不含依赖,另一种是包里是有依赖的.) 没图说个JB: 可以看到第一个是不带依赖的包,这个包就比较小,第二个就是带依赖的包,比较大. 如果是带依赖的包那么代码里就不用显示指定所需要…
引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向executorActor发送任务消息. 我们要了解Executor的运行机制首先要了解Executor在Driver側的注冊过程.这篇文章先了解一下Application和Executor的注冊过程. 1. Task类及其相关 1.1 Task类 Spark将由Executor运行的Task分为ShuffleMa…
编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本] 1. 开发环境 Jdk 1.7.0_72 Maven 3.2.1 Scala 2.10.6 Spark 1.6.2 Hadoop 2.6.4 IntelliJ IDEA 2016.1.1 2. 创建项目1) 新建Maven项目 2) 在pom文件中导入依赖pom.xml文件内容如下: <?xml version="1.0" encoding="UTF-8"?> &l…
一.Spark-Shell交互式工具 1.Spark-Shell交互式工具 Spark-Shell提供了一种学习API的简单方式, 以及一个能够交互式分析数据的强大工具. 在Scala语言环境下或Python语言环境下均可使用. 启动Spark-Shell                ./bin/spark-shell      本地模式,线程数为1(1个CPU)                ./bin/spark-shell --master                ./bin…
Day1111 Spark任务调度 Spark几个重要组件 Spark Core RDD的概念和特性 生成RDD的两种类型 RDD算子的两种类型 算子练习 分区 RDD的依赖关系 DAG:有向无环图 任务提交 缓存 checkPoint 自定义排序 自定义分区器 自定义累加器 广播变量 Spark Shuffle过程 Spark优化过程 SparkSQL 集成Hive 一.Spark Core 1 Spark任务调度: |->:standalone |->:local |->:Yarn…
day1112 1.spark core复习 任务提交 缓存 checkPoint 自定义排序 自定义分区器 自定义累加器 广播变量 Spark Shuffle过程 SparkSQL 一. Spark Core回顾 1 集群启动 Spark集群启动流程: 1.调用start-alsh脚本,开始启动Master 2.Master启动以后, preStart方法调用了一个定时器,定时的检查超时的Worker. 3.启动脚本会解析slaves配置文件,找到启动Worker的相应节点,开始启动Worke…
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来做的.抛开任何具体的东西,现在考虑下Spark core是个什么东西. 解析rdd 程序就是数据+代码.所以首先,我们需要考虑spark core由什么数据结构构成,一共就三种:rdd,broadcast,accumulator,最重要.最核心的是rdd. rdd可以简单的认为是一个数组,只不过是一…
Spark Core    DAG概念        有向无环图        Spark会根据用户提交的计算逻辑中的RDD的转换(变换方法)和动作(action方法)来生成RDD之间的依赖关系,同时这个计算链也就生成了逻辑上的DAG.        RDD之间的关系可以从两个维度来理解:一个是RDD是从哪些RDD转换而来,也就是RDD的parent RDD(s)是什么:还有就是依赖于parent RDD(s)的哪些Partition(s).这个关系,就是RDD之间的依赖,org.apache.…
Spark集群之yarn提交作业优化案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.启动Hadoop集群 1>.自定义批量管理脚本 [yinzhengjie@s101 ~]$ more `which xzk.sh` #!/bin/bash #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie #EMAIL:y1053419035@qq.com #判断用户是否传参 ];then echo "无…
话说在<Spark源码分析之五:Task调度(一)>一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法.这个方法针对接收到的ReviveOffers事件进行处理.代码如下: // Make fake resource offers on all executors // 在所有的executors上提供假的资源(抽象的资源,也就是资源的对象信息,我是这么理解的) private def makeOffers() { // Filter out exec…
一.作业提交 1.1 spark-submit Spark所有模式均使用spark-submit命令提交作业,其格式如下: ./bin/spark-submit \ --class <main-class> \ # 应用程序主入口类 --master <master-url> \ # 集群的Master Url --deploy-mode <deploy-mode> \ # 部署模式 --conf <key>=<value> \ # 可选配置 .…
一.作业提交 1.1 spark-submit Spark 所有模式均使用 spark-submit 命令提交作业,其格式如下: ./bin/spark-submit \ --class <main-class> \ # 应用程序主入口类 --master <master-url> \ # 集群的 Master Url --deploy-mode <deploy-mode> \ # 部署模式 --conf <key>=<value> \ # 可选…
1.spark在yarn模式下提交作业需要启动hdfs集群和yarn,具体操作参照:hadoop 完全分布式集群搭建 2.spark需要配置yarn和hadoop的参数目录 将spark/conf/目录下的spark-env.sh.template文件复制一份,加入配置: YARN_CONF_DIR=/opt/hadoop/hadoop-2.8.3/etc/hadoop HADOOP_CONF_DIR=/opt/hadoop/hadoop-2.8.3/etc/hadoop 3.将spark整个目…
1.yarn-cluster模式: (1)client客户端提交spark Application应用程序到yarn集群. (2)ResourceManager收到了请求后,在集群中选择一个NodeManager来为应用程序分配container容器,并启动该应用程序的ApplicationMaster. (3)ApplicationMaster 向 ResourceManager 注册,并为各个任务申请container资源. (4)ApplicationMaster申请到资源后,便于对应的N…
Spark组件是基于分布式资源引擎层(Yarn等)和分布式存储层(HDFS等)之上的一个组件,Spark本质上是一个计算引擎,负责计算的,根据不同计算场景划分出了SQL.Streaming.MLib.GraphX.R等模块,这些模块各自处理适合各自特点的计算场景.Spark Core作为Spark技术栈的底层,提供如Spark初始化.数据模型.远程调用.内存模型.存储体系.序列化.安全.Web UI.计算调度体系.广播变量.IO.运行模式等等的核心功能和解决各模块的公共需求,是Spark的核心层…
一.作业提交 1.1 spark-submit Spark 所有模式均使用 spark-submit 命令提交作业,其格式如下: ./bin/spark-submit \ --class <main-class> \ # 应用程序主入口类 --master <master-url> \ # 集群的 Master Url --deploy-mode <deploy-mode> \ # 部署模式 --conf <key>=<value> \ # 可选…