executor

Apache Spark探秘:三种分布式部署方式比较

我的未来我决定 提交于 2020-02-21 08:16:54
目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos 和 spark on YARN ,其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配)。本文将介绍这三种部署方式,并比较其优缺点。 standalone模式 ,即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将stanlone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark

Spark运行模式

帅比萌擦擦* 提交于 2020-02-21 08:16:36
Spark运行模式简介 注:重点是Standalone模式,然后是YARNcluster和YARN client模式。 1. Standalone模式 即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统 。从一定程度上说, 该模式是其他两种的基础 。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将standalone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark standalone与MapReduce比较,会发现它们两个在架构上是完全一致的:   1) 都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决;   2) 各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。不同的是, MapReduce将slot分为map slot和reduce slot,它们分别只能供Map

spark的运行指标监控

房东的猫 提交于 2020-02-17 01:34:33
sparkUi的4040界面已经有了运行监控指标,为什么我们还要自定义存入redis? 1.结合自己的业务,可以将监控页面集成到自己的数据平台内,方便问题查找,邮件告警 2.可以在sparkUi的基础上,添加一些自己想要指标统计 一、spark的SparkListener sparkListener是一个接口,我们使用时需要自定义监控类实现sparkListener接口中的各种抽象方法,SparkListener 下各个事件对应的函数名非常直白,即如字面所表达意思。 想对哪个阶段的事件做一些自定义的动作,变继承SparkListener实现对应的函数即可,这些方法会帮助我监控spark运行时各个阶段的数据量,从而我们可以获得这些监控指标数据 abstract class SparkListener extends SparkListenerInterface {//stage完成的时调用 override def onStageCompleted(stageCompleted: SparkListenerStageCompleted): Unit = { } //stage提交时调用 override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted): Unit = { } override def

Spark on Yarn遇到的几个问题

狂风中的少年 提交于 2020-02-15 04:00:33
本文转自:http://www.cnblogs.com/Scott007/p/3889959.html 1 概述 Spark的on Yarn模式,其资源分配是交给Yarn的ResourceManager来进行管理的,但是目前的Spark版本,Application日志的查看,只能通过Yarn的yarn logs命令实现。 在部署和运行Spark Application的过程中,如果不注意一些小的细节,也许会导致一些问题的出现。 2 防火墙 部署好Spark的包和配置文件,on yarn的两种模式都无法运行,在NodeManager端的日志都是说Connection Refused,连接不上Driver所在的客户端节点,但是客户端的80端口可以正常访问!同时,在日志中有类似信息出现: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory 内存肯定是够的,但就是无法获取资源!检查防火墙,果然客户端只开启的对80端口的访问,其他都禁止了!如果你的程序在运行的时候也有类似连接被拒绝的情况,最好也是先检查下防火墙的配置! 3 Spark Driver程序host的指定 部署完Spark后

设计模式-策略模式

こ雲淡風輕ζ 提交于 2020-02-13 03:41:41
1 概念 策略模式也叫政策模式,是一种比较简单的模式,其定义是 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换 2 概念理解 策略模式使用的是面向对象的继承和多态机制,将算法实现从业务逻辑中剥离出来成为一系列独立的算法类,每个算法实现相同的接口就可以实现相互转换。 策略模式通用类图: Context封装角色 上下文角色,一般持有策略的引用,进行对策略的调用,具体的策略对象也可以从上下文角色中获取所需要的数据,可以将上下文当做参数传入到具体的参数中,具体策略通过回调上下文来获取所需要的数据。 Strategy抽象策略角色 策略、算法家族的抽象,通常为接口,定义每个策略或者算法必须具有的方法和属性。 ConcreteStrategy具体策略角色 实现抽象策略中的操作,该类含有具体的算法。 3 应用场景 多个类存在算法和行为上类似的场景 算法自由切换的场景 屏蔽算法规则的场景 4 优缺点 4.1 策略模式优点 算法可以自由切换 拓展性良好 避免使用多重条件判断 使用了策略模式后,可以由其他模块决定采用何种策略,策略对外提供的访问接口就是封装类。 4.2 策略模式的缺点 策略类数量增多 每个策略都是一个类,复用可能性小,类数量增多 所有策略对外暴露 上层模块需要知道哪些策略选择取调用哪个策略,这违背了迪米特法则,不过这个可以通过工厂模式方法和代理模式或者享元模式来修正这个缺陷。

spark梳理

强颜欢笑 提交于 2020-02-13 01:47:14
​大数据组件,离线用过hadoop,实时用过spark。 Hadoop现在比较稳定了,面试主要就是问Spark。 包括我工作这么多年,都没搞清过底层到底是怎么运行的,但是有些东西 懂的人一说就通了,优化起来也会有思路。 我下面给spark梳理一下。做个基本概要,方便面试。 一、spark运行原理: 1.提交spark任务,构建spark application运行环境,启动sparkContext。 2.sparkContext向资源管理器(可以使Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend(后台监控程序)。 注: a.每个节点可以起一个或多个Executor。 3.Executor向SparkContext申请Task。 注: a.每个Executor由若干core组成,每个Executor的每个core一次只能执行一个Task。 b.每个Task执行的结果就是生产了目标RDD的一个partition。 c.这里的core是虚拟机的core而不是机器的物理CPU核,可以理解为就是Executor的一个工作线程。 d.Task被执行并发度(并发度不等于task数量)=Executor数目*每个Executor核数(=core总个数) e.partition数目在map阶段保持不变

第 6 章 Spark 内存管理

北城余情 提交于 2020-02-12 21:17:41
上篇: 第 5 章 Spark Shuffle解析 Spark 内存管理 在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Driver 的内存管理相对来说较为简单,本节主要对 Executor 的内存管理进行分析,下文中的 Spark 内存均特指 Executor 的内存。 1、堆内和堆外内存规划 作为一个 JVM 进程, Executor 的内存管理建立在 JVM 的内存管理之上,Spark 对 JVM 的堆内(On-heap)空间进行了更为详细的分配,以充分利用内存。同时,Spark 引入了堆外(Off-heap)内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用 。 堆内内存受到JVM统一管理,堆外内存是直接向操作系统进行内存的申请和释放。 堆内内存 堆内内存的大小,由 Spark 应用程序启动时的 –executor-memory 或 spark.executor.memory 参数配置。Executor

第 7 章 Spark 核心组件解析

允我心安 提交于 2020-02-12 21:14:32
上篇: 第 6 章 Spark 内存管理 1、BlockManager数据存储与管理机制 BlockManager是整个Spark底层负责数据存储与管理的一个组件,Driver和Executor的所有数据都由对应的BlockManager进行管理。 Driver上有BlockManagerMaster,负责对各个节点上的BlockManager内部管理的数据的元数据进行维护,比如block的增删改等操作,都会在这里维护好元数据的变更。 每个节点都有一个BlockManager,每个BlockManager创建之后,第一件事即使去向BlockManagerMaster进行注册,此时BlockManagerMaster会为其长难句对应的BlockManagerInfo。 BlockManager运行原理如下图所示: BlockManagerMaster与BlockManager的关系非常像NameNode与DataNode的关系,BlockManagerMaster中保存中BlockManager内部管理数据的元数据,进行维护,当BlockManager进行Block增删改等操作时,都会在BlockManagerMaster中进行元数据的变更,这与NameNode维护DataNode的元数据信息,DataNode中数据发生变化时NameNode中的元数据信息也会相应变化是一致的。

Think In Java 21.2.14 捕获异常

夙愿已清 提交于 2020-02-12 14:24:01
package lime.tij._021._002._014; import java.util.concurrent.*; /** * @Author : Liangmy * @Description : * @Date : Created in 2020/2/6 下午1:58 * @Modified By : * * * 01. 任务 * Thread.yield() : 1. 仅使当前线程从运行状态转到可运行状态,而不是等待或阻塞状态。 * Thread.yield() : 2. 将当前线程的运行机会交给线程池中拥有相同优先级的线程。 * Thread.yield() : 3. 并不能一定保证当前线程由运行状态转到可运行状态。 * Runnable::run() : 当从Runnable导出一个类时,它必须具有run()方法,但是这个run()不会产生任何内在的线程能力。要实现线程行为,你必须显式地将一个任务附着到线程上。 * 02. 线程 * 将Runnable对象转变为工作任务的传统方式是把它提交给一个Thread构造器 * 调用Thread对象的start()方法为该线程执行必需的初始化操作,然后调用Runnable的run()方法,以便在这个新线程中启动该任务。 * 03. 线程池 * Java SE5的java.util.concurrent包中的执行器

图解Spark中CoarseGrainedExecutorBackend的执行流程

喜欢而已 提交于 2020-02-11 06:25:48
Spark在Yarn-Cluster部署模式下,程序在提交之后会依次创建三个进程:SparkSubmit,ApplicationMaster和CoarseGrainedExecutorBackend。本文主要在对源码进行分析之后以图解的方式展示CoarseGrainedExecutorBackend的执行流程。 由上图的执行流程可以看出,CoarseGrainedExecutorBackend进程主要有以下几个作用: (1)向Driver注册Executor进程 (2)在接收到注册成功的message之后,创建Executor对象 (3)接收Driver分配的任务 来源: CSDN 作者: 满岛菜鸟 链接: https://blog.csdn.net/weixin_43616627/article/details/104228805