executor

Mybatis框架分析

邮差的信 提交于 2020-03-23 05:47:18
摘要 本篇文章只是个人阅读mybatis源码总结的经验或者个人理解mybatis的基本轮廓,作为抛砖引玉的功能,希望对你有帮助,如果需要深入了解细节还需亲自去阅读源码。 mybatis基本架构 mybatis的源码应该算是比较容易阅读的,首先mybatis核心功能就是执行Sql语句,但在其基础上又有许多增强的地方(动态Sql,ORM等)。看一个框架的时候,第一步是对整个框架有一个大体的了解。例如mybatis,我们可以从初始化到完成一个sql请求为主线,看一下涉及了哪些类。我个人总结了一下,mybatis的框架主要的核心类有4个 Configuration Configuration就是用于解析、保存、处理Mybatis的配置内容,包括了 mybatis基本配置,例如支持数据库中的字段支持下标转驼峰mapUnderscoreToCamelCase=true等等,参看 Mybatis配置说明 SqlMapper管理,也就是通过xml或者注解写的一些sql映射。相关的类可以查看源码中MappedStatement类。 创建类,Configuration还有一些创建类的功能,例如Executor、StatementHandler。这个2个类后面还会说到 小节Configuration 总结Configuration的功能,当然

CompletableFuture使用

最后都变了- 提交于 2020-03-19 17:31:12
3 月,跳不动了?>>> 一、CompletableFuture简介 https://my.oschina.net/u/2307176/blog/3196557 之前分析过FutureTask,FutureTask实现了Future接口,作为一个Task存在的,其本身是不管理线程池执行过程的,只是借助了Future的特性来来控制我们的任务,例如取消任务、设置超时时间获取任务执行结果。 CompletableFuture实现了Future和CompletionStage,表示异步计算的中不同阶段,可以对这些阶段进行组合。CompletableFuture会将任务委托给线程池处理,我们可以指定线程池Executor,也可以使用默认的ForkJoinPool,任务一般是Runnable、Supplier、Consumer、Function的实现。 二、使用ComletableFuture 我们根据功能分类,大概有三类方法:同步方法、带Async且指定Executor的异步方法,带Async使用默认ForkJoinPool的异步方法 1.创建ComletableFuture // 构造方法 public CompletableFuture() {} // 创建一个已经完成的CompletableFuture public static <U> CompletableFuture<U>

Netty源码—一、server启动(1)

淺唱寂寞╮ 提交于 2020-03-16 05:26:12
说明:netty源码系列是基于4.1.25版本的netty源码的 Netty作为一个Java生态中的网络组件有着举足轻重的位置,各种开源中间件都使用Netty进行网络通信,比如Dubbo、RocketMQ。可以说Netty是对Java NIO的封装,比如ByteBuf、channel等的封装让网络编程更简单。 在介绍Netty服务器启动之前需要简单了解两件事: reactor线程模型 linux中的IO多路复用 reactor线程模型 关于reactor线程模型请参考 这篇文章 ,通过不同的配置Netty可以实现对应的三种reactor线程模型 reactor单线程模型 reactor多线程模型 reactor主从多线程模型 // reactor单线程模型,accept、connect、read、write都在一个线程中执行 EventLoopGroup group = new NioEventLoopGroup(1); bootStrap.group(group); // reactor多线程,accept在bossGroup中的一个线程执行,IO操作在workerGroup中的线程执行 EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new

Spark配置参数

ぐ巨炮叔叔 提交于 2020-03-14 21:37:56
以下是整理的Spark中的一些配置参数,官方文档请参考 Spark Configuration 。 Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置 环境变量:可以通过每个节点的 conf/spark-env.sh 脚本设置。例如IP地址、端口等信息 日志配置:可以通过log4j.properties配置 Spark属性 Spark属性控制大部分的应用程序设置,并且为每个应用程序分别配置它。这些属性可以直接在 SparkConf 上配置,然后传递给 SparkContext 。 SparkConf 允许你配置一些通用的属性(如master URL、应用程序名称等等)以及通过 set() 方法设置的任意键值对。例如,我们可以用如下方式创建一个拥有两个线程的应用程序。 val conf = new SparkConf() .setMaster("local[2]") .setAppName("CountingSheep") .set("spark.executor.memory", "1g") val sc = new SparkContext(conf) 动态加载Spark属性 在一些情况下,你可能想在 SparkConf 中避免硬编码确定的配置。例如

面试之线程池底层剖析

半世苍凉 提交于 2020-03-12 11:29:14
线程池类图 Executor==>ExcutorService==>AbstractExecutorService==>ThreadPoolExecutor来分析一下。 上面url继承类图,线程池的最顶层的接口是Executor,这个接口只有一个方法void execute(Runnable command) ExecutorService继承Executor,新增了submit(Runnable(Callable)),shutDown,shutDownNow等几个主要方法 AbstractExecutorService实现了上面的ExecutorService接口的若干个方法。 ThreadPoolExecutor继承AbstractExecutorService,实现了线程池的一些主要的方法execute(Runnable)。 AbstractExecutorService AbstractExecutorService实现了submit方法,代码如下: submit(Callable task)方法 public <T> Future<T> submit(Callable<T> task) { if (task == null) throw new NullPointerException(); RunnableFuture<T> ftask = newTaskFor

spark的性能优化

倾然丶 夕夏残阳落幕 提交于 2020-03-09 13:13:05
spark性能优化点 一、分配更多的资源 它是性能优化调优的王道,就是增加和分配更多的资源,这对于性能和速度上的提升是显而易见的, 基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调 优的时候,首先第一步,就是要来调节优的资源配置;在这个基础之上,如果说你的spark作业,能够分配的资源达到 了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;那么才是考虑去做后面的这些性能调优的点。 1、分配哪些资源 executor-memory、executor-cores、driver-memory 2、在哪里设置 在实际的生产环境中,提交spark任务时,使用spark‐submit shell脚本,在里面调整对应的参数。 提交任务的脚本: spark‐submit \ ‐‐master spark://node1:7077 \ ‐‐class cn.itcast.WordCount \ ‐‐num‐executors 3 \ 配置executor的数量 ‐‐driver‐memory 1g \ 配置driver的内存(影响不大) ‐‐executor‐memory 1g \ 配置每一个executor的内存大小 ‐‐executor‐cores 3 \ 配置每一个executor的cpu个数 /export/servers

spark调优

徘徊边缘 提交于 2020-03-07 19:15:04
1.分配更多的资源     它是性能优化调优的王道,就是增加和分配更多的资源,这对于性能和速度上的提升是显而易见的, 基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调 优的时候,   首先第一步,就是要来调节优的资源配置;在这个基础之上,如果说你的spark作业,能够分配的资源达到 了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;那么才是考虑去做后面的这些性能调优的点。 2.参数调节到多大才算大      第一种情况:standalone模式 先计算出公司spark集群上的所有资源 每台节点的内存大小和cpu核数, 比如:一共有20台worker节点,每台节点8g内存,10个cpu。 实际任务在给定资源的时候,可以给20个executor、   每个executor的内存8g、每个executor的使用的cpu个数 10。 第二种情况:Yarn 先计算出yarn集群的所有大小,比如一共500g内存,100个cpu; 这个时候可以分配的大资源,比如给定50个executor、每个executor的内存   大小10g,每个executor使用的cpu 个数为2。 使用原则:你能使用的资源有多大,就尽量去调节到大的大小(executor的数量:几十个到上百个不等;executor的 内存;exector的cpu个数

Spark常见问题汇总

*爱你&永不变心* 提交于 2020-03-07 17:41:41
原文地址:https://my.oschina.net/tearsky/blog/629201 摘要:    1 、 Operation category READ is not supported in state standby    2 、配置 spark.deploy.recoveryMode 选项为 ZOOKEEPER    3 、多 Master 如何配置    4 、 No Space Left on the device ( Shuffle 临时文件过多)    5 、 java.lang.OutOfMemory, unable to create new native thread    6 、 Worker 节点中的 work 目录占用许多磁盘空间    7 、 spark-shell 提交 Spark Application 如何解决依赖库    8 、Spark在发布应用的时候,出现连接不上master问题    9 、开发spark应用程序(和Flume-NG结合时)发布应用时可能出现org.jboss.netty.channel.ChannelException: Failed to bind to: /192.168.10.156:18800    10 、 spark-shell 找不到hadoop so问题解决    11 、ERROR XSDB6

Azkaban 安装

我怕爱的太早我们不能终老 提交于 2020-03-05 04:35:01
Azkaban安装部署 准备工作 Azkaban Web服务器 azkaban-web-server-2.5.0.tar.gz Azkaban执行服务器 azkaban-executor-server-2.5.0.tar.gz MySQL 目前azkaban只支持 mysql,需安装mysql服务器,本文档中默认已安装好mysql服务器,并建立了 root用户,密码 root. 下载地址:http://azkaban.github.io/downloads.html Oozie == azkaban 安装 将安装文件上传到集群,最好上传到安装 hive、sqoop的机器上,方便命令的执行 在当前用户目录下新建 azkabantools目录,用于存放源安装文件.新建azkaban目录,用于存放azkaban运行程序 azkaban web服务器安装 解压azkaban-web-server-2.5.0.tar.gz 命令: tar –zxvf azkaban-web-server-2.5.0.tar.gz 将解压后的azkaban-web-server-2.5.0 移动到 azkaban目录中,并重新命名 webserver 命令: mv azkaban-web-server-2.5.0 ../azkaban cd ../azkaban mv azkaban-web-server-2

Azkaban2.5.0安装

女生的网名这么多〃 提交于 2020-03-05 04:32:39
1、Azkaban安装部署 azkaban-web-server-2.5.0.tar.gz azkaban-executor-server-2.5.0.tar.gz azkaban-sql-script-2.5.0.tar.gz 2、安装 将安装文件上传到集群,最好上传到安装 spark,hive、sqoop的机器上,方便命令的执行   mkdir azkaban azkaban web服务器安装 解压azkaban-web-server-2.5.0.tar.gz   tar –zxvf azkaban-web-server-2.5.0.tar.gz 将解压后的azkaban-web-server-2.5.0 移动到 azkaban目录中,并重新命名 server   mv azkaban-web-server-2.5.0 ../azkaban cd ../azkaban mv azkaban-web-server-2.5.0 server azkaban 执行服器安装 解压azkaban-executor-server-2.5.0.tar.gz   tar –zxvf azkaban-executor-server-2.5.0.tar.gz 将解压后的azkaban-executor-server-2.5.0 移动到 azkaban目录中,并重新命名 executor   mv