executor

Executor 任务执行器

久未见 提交于 2020-02-28 13:45:00
Executor: 是一个接口 用于执行提交的任务 解耦任务提交和执行(线程的创建及调度) Executor的实现可以根据实际需求延展不同的逻辑:1. 对于提交的任务同步或者异步执行,如下同步执行: class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) { new Thread(r).start(); } 2. 另起线程执行任务,如下: class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) { new Thread(r).start(); } 3. 对于执行的任务添加限制: class SerialExecutor implements Executor { final Queue<Runnable> tasks = new ArrayDeque<Runnable>(); final Executor executor; Runnable active; SerialExecutor(Executor executor) { this.executor = executor; } public synchronized void execute(final

spark-submit参数说明

拥有回忆 提交于 2020-02-28 00:26:37
spark-submit提交 ! 注意 :提交命令写在 shell脚本 中,各个参数之间 不能有注释 ,亲测报错 spark-submit可以提交到spark集群执行,也可以提交到hadoop的yarn集群执行 1.一个最简单的例子,部署 spark standalone 模式后,提交到本地执行。 ./bin/spark-submit \ --master spark://localhost:7077 \ examples/src/main/python/pi.py 2.如果部署 hadoop,并且启动 yarn 后,spark 提交到 yarn 执行的例子如下。   注意,spark 必须编译成支持 yarn 模式,编译 spark 的命令为: ./bin/spark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ --driver-memory 1g \ --executor-memory 1g \ --executor-cores 1 \ --queue thequeue \ examples/target/scala-2.11/jars/spark-examples*.jar 10 spark-submit 详细参数说明 参数名 参数说明 -

spark-submit 参数总结

偶尔善良 提交于 2020-02-28 00:19:01
spark-submit 可以提交任务到 spark 集群执行,也可以提交到 hadoop 的 yarn 集群执行。 1)./spark-shell --help :不知道如何使用,可通过它查看命令帮助,[]中括号里面的表示可选的。 2)重要参数讲解: --master master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local --name 这个是指定你的application name 应用名称。 --jars 这个是用comma逗号分隔的一系列包含driver和executor的环境变量的包。 --conf 这个是指定一些配置的参数。 --driver-* 这个是指定driver的memory、class-path等。 --executor-memory 这个是设置executor端的内存。 --executor-core 指定executor的core资源 --driver-core 指定driver的core资源 --queue 生产上肯定是以队列的方式来提交的 --num-executor 指定executor 执行者的个数 ----------------------------------------------------------------------------- 原文:https://blog.csdn

Java多线程整理

空扰寡人 提交于 2020-02-27 08:50:24
目录: 1.volatile变量 2.Java并发编程学习 3. CountDownLatch用法 4. CyclicBarrier使用 5.BlockingQueue使用 6.任务执行器Executor 7.CompletionService使用 8.ConcurrentHashMap使用 9.Lock使用 一、 volatile变量   1.volatile原理:volatile的原理实际上是告诉处理器,不要把变量缓存在寄存器或者相对于其他处理器不可见的地方,而是把变量放在主存,每次读写操作都在主存上进行操作。另外,被申明为volatile的变量也不会与其它内存中的变量进行重排序。   2.volatile同步:volatile是同步的一个子集,只保证了变量的可见性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值。相对于同步而言,volatile的优势:a.简易性,可以像使用其他变量一样使用volatile变量;b.volatile变量不会造成线程阻塞;c.如果读操作远远大于写操作,volatile 变量还可以提供优于锁的性能优势。   3.正确使用volatile条件:对变量的写操作不依赖于当前值;该变量没有包含在具有其他变量的不变式中; /* * 对于第一条原则:对变量的写操作不依赖于当前值; * 虽然i++只有一条语句

Dream_Spark-----Spark 定制版:004~Spark Streaming事务处理彻底掌握

て烟熏妆下的殇ゞ 提交于 2020-02-26 22:56:41
Spark 定制版:004~Spark Streaming事务处理彻底掌握 本讲内容: a. Exactly Once b. 输出不重复 注:本讲内容基于 Spark 1.6.1版本(在2016年5月来说是Spark最新版本)讲解。 上节回顾: 上节课 通过案例透视了Spark Streaming Job 架构 和运行机,并结合源码进行了详细解说;同时也了解了Spark Streaming Job的容错机制,包括 Executor 与 Driver两方面的容错机制。 也就是说Job的事务处理,主要是在Executor 与 Driver两个应用中展开 开讲 首先,我们必须知道什么是事务及其一致性? 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使 数据库 从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交

Spark学习四:Spark架构设计和RDD的stage划分

不羁的心 提交于 2020-02-26 00:32:29
文章目录 架构设计 Spark运行基本流程 RDD之间的依赖关系 stage的划分 RDD运行过程 参考网址 架构设计 学习完 Spark学习二:spark基础理论知识 ,我们可以对Spark的一些组件和术语应该有了基本的认识,下面介绍Spark的架构设计。本节内容主要参考 厦门大学林子雨老师的Spark课程 。非常感谢林子雨老师! 如下图所示。 Spark运行架构包括集群资源管理器( Cluster Manager )、运行作业任务的工作节点( Worker Node )、每个应用的任务控制节点( driver program )和每个工作节点上负责具体任务的执行进程( Executor )。其中,集群资源管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。 与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点: 一是利用多线程来执行具体的任务(Hadoop MapReduce采用的是进程模型) (Spark和MapReduce的运行模式在 Spark学习二:spark基础理论知识 里也详细说明过),减少任务的启动开销; 二是Executor中有一个BlockManager存储模块 ,会将内存和磁盘共同作为存储设备,当需要多轮迭代计算时,可以将中间结果存储到这个存储模块里,下次需要时

Tomcat 核心配置

倖福魔咒の 提交于 2020-02-25 19:15:55
tomcat的核心配置在conf/server.xml中。 <Server> 根元素 <Server>即Catalina Servlet组件。 <Server port="8005" shutdown="SHUTDOWN"> 常用属性 Address—Tomcat监听shutdown命令的地址,默认为localhost className—指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer port-Tomcat监听shutdown命令的端口。设置为-1,则禁止通过端口关闭Tomcat,同时shutdown.bat也不能使用 shutdown-通过指定的地址(Address)、端口(port)关闭Tomcat所需的字符串。 shutdown属性使用示例 启用Telnet:(Telnet是windows自带的与其它主机通信的程序) win+s,输入telnet,匹配“启用或关闭windows功能”,回车,勾选telent 命令行输入 telnet 启动Telnet 输入 telnet localhost 8005 连接到指定主机(此处为本地主机) 输入 SHUTDOWN 即可关闭Tomcat 输入 quit 可退出Telnet <Server>有3个子元素:<Listener>、

MyBatis的深入原理分析之1-架构设计以及实例分析

久未见 提交于 2020-02-24 20:23:54
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。 一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的 chenjc_it 所写的博文 原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! 1.接口层---和数据库交互的方式 MyBatis和数据库的交互有两种方式: a.使用传统的MyBatis提供的API; b. 使用Mapper接口 1.1.使用传统的MyBatis提供的API 这是传统的传递 Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession 对象完成和数据库的交互; MyBatis 提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和 MyBatis 自身配置信息的维护操作。 上述使用 MyBatis 的方法,是创建一个和数据库打交道的 SqlSession 对象,然后根据 Statement Id 和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,

Java并发包——线程池

北慕城南 提交于 2020-02-24 13:33:05
Java并发包——线程池 摘要:本文主要学习了Java并发包中的线程池。 部分内容来自以下博客: https://www.cnblogs.com/dolphin0520/p/3932921.html https://blog.csdn.net/luzhen1012/article/details/79230091 https://www.cnblogs.com/wxgblogs/p/5469208.html https://blog.csdn.net/seasonLai/article/details/82624236 https://www.jianshu.com/p/7b1546a3b85b 线程池相关类和接口 Executor Executor是一个顶层接口,在它里面只声明了一个execute方法,返回值为void,参数为Runnable类型。 该方法用来在接下来的某个时刻执行提交的command任务。由于Executor不同的实现,执行的时候可能在一个新线程中或由一个线程池里的线程执行,还可以是由调用者线程执行。 1 public interface Executor { 2 void execute(Runnable command); 3 } ExecutorService ExecutorService接口继承了Executor接口,并声明了一些方法。 1

vipshop saturn executor 的job 管理

前提是你 提交于 2020-02-23 21:18:32
首先订正下quickstart 的做法:saturn 的job 同时保存在数据库及zookeeper上,修改job不能只修改zookeeper上的数据,都应该通过console的rest api或者界面实现。 executor 不连接数据库,所有对job的修改都是通过zookeeper watcher触发的。 先上一个zookeeper 截图: saturn对job的watcher分布在很多类中,跟踪分析要注意这一点; 对应新增加job是通过watch $jobs来实现的,具体代码在InitNewJobService的如下代码: class InitNewJobListener implements TreeCacheListener { @Override public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception { if (event == null) { return; } ChildData data = event.getData(); if (data == null) { return; } String path = data.getPath(); if (path == null || path.equals(JobNodePath.ROOT)) {