executor

spark on yarn的提交流程

徘徊边缘 提交于 2019-12-15 16:20:27
spark on yarn cline 模式 在YARN Client模式下,Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存。 ResourceManager接到ApplicationMaster的资源申请后会分配container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程,Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。 spark on yarn cluster模式 在YARN Cluster模式下,任务提交后会和ResourceManager通讯申请启动ApplicationMaster

mybatis源码探索笔记-5(拦截器)

余生颓废 提交于 2019-12-15 13:12:22
前言   mybatis中拦截器主要用来拦截我们在发起数据库请求中的关键步骤。其原理也是基于代理模式,自定义拦截器时要实现Interceptor接口,并且要对实现类进行标注,声明是对哪种组件的指定方法进行拦截。mybatis的四大组件 Executor,ParameterHandler,ResultSetHandler,StatementHandler 都可以创建拦截器,分别有其自己的用途。由于拦截器是偏应用型的工具,所以文末会使用拦截Executor的query方法自定义一个模拟一个针对mysql数据库的简易分页插件来说明如何使用拦截器 正文   1.拦截器的声明     mybatis拦截器需要实现一个org.apache.ibatis.plugin.Interceptor接口,我们可以看下      public interface Interceptor { Object intercept(Invocation invocation) throws Throwable; default Object plugin(Object target) { return Plugin.wrap(target, this); } default void setProperties(Properties properties) { // NOP } }   可以看到有三个方法

spark之spark-submit详解

情到浓时终转凉″ 提交于 2019-12-15 08:36:25
spark-submit命令 查看 spark-submit 命令帮助: [ hadoop@master root ] $ spark-submit Usage: spark-submit [ options ] < app jar | python file | R file > [ app arguments ] Usage: spark-submit --kill [ submission ID ] --master [ spark:// .. . ] Usage: spark-submit --status [ submission ID ] --master [ spark:// .. . ] Usage: spark-submit run-example [ options ] example-class [ example args ] Options: --master MASTER_URL spark://host:port, mesos://host:port, yarn, k8s://https://host:port, or local ( Default: local [ * ] ) . --deploy-mode DEPLOY_MODE Whether to launch the driver program locally ( "client" )

Spark集群三种部署模式的区别

社会主义新天地 提交于 2019-12-15 02:42:53
目前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

分布式任务调度平台XXL-JOB

二次信任 提交于 2019-12-14 23:37:13
以前带我的人说过,最好的学习就是看官方文档,个人也有4个T的学习视频,但是会发现讲的都是入门,有的也比较浅。 官方文档比较官方,也比较权威,打开xxl-job的官网,写的贼详细,有些人喜欢收博客,不喜欢看官网,因此就直接复制过来了, 过段时间会参考文档,自己来一遍。 一、简介 1.1 概述 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 1.2 社区交流 社区交流 1.3 特性 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效; 3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA; 4、执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA; 5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址; 6、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务; 7、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等; 8

concurrent.futures模块

假装没事ソ 提交于 2019-12-14 12:43:38
class concurrent.futures.Executor Executor是一个抽象类,它提供了 异步执行调用的方法。它不能直接使用,但可以通过它的两个子类ThreadPoolExecutor或者ProcessPoolExecutor进行调用。 我们可以将相应的tasks直接放入线程池/进程池,不需要维护Queue来操心死锁的问题,线程池/进程池会自动帮我们调度。 Future可以把它理解为一个在未来完成的操作,这是异步编程的基础,传统编程模式下比如我们操作queue.get的时候,在等待返回结果之前会产生阻塞,cpu不能让出来做其他事情,而Future的引入帮助我们在等待的这段时间可以完成其他的操作。 1.多线程ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor,ALL_COMPLETED,ProcessPoolExecutor,wait,as_completed,FIRST_COMPLETED import requests import time urls = ["http://127.0.0.1:8000/index", "http://127.0.0.1:8000/stuTable/"] def load_url(url, timeout): print(f"{url}

spark学习

懵懂的女人 提交于 2019-12-14 04:21:57
总是学了就忘记,spark都学了几遍了 总是深入不进去 唉 头疼 这里再次学习一遍 谁有更好的深入学习spark的方法给推荐推荐 面试了大数据,盘点几个被问到的问题: spark一定会把中间结果放在内存吗?当然不是 可以是内存,也可以是磁盘 spark包括work和master work和master之间的沟通通过网络RPC进行交流沟通 拷贝到其他节点 for i in {5..7}; do scp -r /bigdata/spark/conf/spark-env.sh node-$i:$PWD; done spark是移动计算,而不移动数据 因为大量数据移动成本大 spark是Scala 编写 spark包本身有Scala编译器和库 但spark是运行在jvm上的 需要安装jdk 利用zookeeper实现高可用集群 zookeeper用来1选举 2保存活跃的master信息 3 保存worker的资源信息和资源使用情况(为了故障切换转移) 在env.sh中添加export SPARK_DAEMON_JAVA_OPTS="-Dspark .deploy.recoveryMode=ZOOKEEPER xxxzookeeper相关信息" 高可用的spark需要手动启动另一个(standby)spark-master 并不会随着spark-all.sh 启动master

spark调优(二):资源调优

穿精又带淫゛_ 提交于 2019-12-14 00:47:27
转发学习自美团技术团队: https://tech.meituan.com 建议继续阅读之前先对这篇文章的内容有一定了解: Apache Spark 内存管理详解 推荐阅读: spark调优(一):开发调优 资源调优概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 1、Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core

docker安装xxl-job

好久不见. 提交于 2019-12-13 18:11:59
一 安装mysql root@localhost tmp]# docker run -itd --name xxl-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.40 Unable to find image 'mysql:5.6.40' locally Trying to pull repository docker.io/library/mysql ... 5.6.40: Pulling from docker.io/library/mysql be8881be8156: Pull complete c3995dabd1d7: Pull complete 9931fdda3586: Pull complete bb1b6b6eff6a: Pull complete a65f125fa718: Pull complete 62fa8db7a5dc: Pull complete ea8988c5d951: Pull complete a14d36079892: Pull complete ae927d273de4: Pull complete 7cd17abd57c5: Pull complete adc2c9e19981: Pull complete Digest: sha256

What is the right way to use Java executor?

不羁的心 提交于 2019-12-13 00:52:10
问题 I am using Java executor in the following way, but not sure if every line is necessary and if this is the correct way to use it : ExecutorService executor=Executors.newFixedThreadPool(30); ... int N=200; CountDownLatch doneSignal=new CountDownLatch(N); for (int i=0;i<N;i++) executor.execute(new Test_Runner(doneSignal,...)); doneSignal.await(); executor.shutdown(); while (!executor.isTerminated()) { Thread.sleep(1000); } // Blocks until all tasks have completed execution after a shutdown