executor

Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?

雨燕双飞 提交于 2019-12-05 06:22:16
Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?   如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容。正如标题一样,本篇文章最最核心的要点就是 SqlSession实现数据库操作的源码解析。但按照惯例,我这边依然列出如下的问题: 1、 SqlSession 是如何被创建的? 每次的数据库操作都会创建一个新的SqlSession么?(也许有很多同学会说SqlSession是通过 SqlSessionFactory.openSession() 创建,但这个答案按照10分制顶多给5分) 2、 SqlSession与事务(Transaction)之间的关系? 在同一个方法中,Mybatis多次请求数据库,是否要创建多个SqlSession? 3、 SqlSession是如何实现数据库操作的?    本章内容就是围绕着上面三个问题进行解析,那么带着问题去看源码吧! 一、SqlSession 的创建    在学习Mybatis时,我们常常看到的 SqlSession 创建方式是 SqlSessionFactory.openSession() ,那么我们就拿此作为切入点,先来看看 SqlSessionFactory.openSession() 的方法源码(注意 是

Spark理论总结

限于喜欢 提交于 2019-12-05 06:13:57
一,Spark专业术语 1,Application 指的是用户编写的Spark应用程序、代码,包含了Driver功能代码和分布在集群中多个节点运行的Executor代码。 Spark应用程序,由一个或者多个job组成(因为代码中可能会调用多次Action)每个job就是一个RDD执行一个Action. 2,Driver Program Spark中的Driver即运行在Application的main函数并创建的SparkContext,其中创建SparkContext的目的是为了准备Spark应用的运行环境。 在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请,任务的分配和监控等。 SparkContext向RM或者Master申请资源,运行Executor进程(线程池),当Executor部分运行完成后,Driver负责向SparkContext关闭。 3,Cluster Manager 指的是在集群上获取资源的外部服务,常用的有 Standalone,Spark原生的资源管理器,由Master负责资源的分配。 Hadoop Yarn,由yarn中的ResourceManager负责资源的分配。 4,Worker计算节点 集群中的节点,可以分配资源并运行Executor进程。

mybatis源码分析之05一级缓存

≡放荡痞女 提交于 2019-12-05 05:22:08
首先需要明白,mybatis的一级缓存就是指SqlSession缓存,Map缓步! 通过前面的源码分析知道mybatis框架默认使用的是DefaultSqlSession,它是由DefaultSqlSessionFactory创建的,下面是源码 private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) { Transaction tx = null; try { final Environment environment = configuration.getEnvironment(); final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment); tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit); final Executor executor = configuration.newExecutor(tx, execType); return

NioEventLoop的创建

六月ゝ 毕业季﹏ 提交于 2019-12-05 03:01:04
NioEventLoop的创建 NioEventLoop是netty及其重要的组成部件,它的首要职责就是为注册在它上的channels服务,发现这些channels上发生的新连接、读写等I/O事件,然后将事件转交 channel 流水线处理。使用netty时,我们首先要做的就是创建NioEventLoopGroup,这是一组NioEventLoop的集合,类似线程与线程池。通常,服务端会创建2个group,一个叫做bossGroup,一个叫做workerGroup。bossGroup负责监听绑定的端口,接受请求并创建新连接,初始化后交由workerGroup处理后续IO事件。 NioEventLoop和NioEventLoopGroup的类图 首先看看NioEventLoop和NioEventLoopGroup的类关系图 类多但不乱,可以发现三个特点: 两者都继承了ExecutorService,从而与线程池建立了联系 NioEventLoop继承的都是SingleThread,NioEventLoop继承的是MultiThread NioEventLoop还继承了AbstractScheduledEventExecutor,不难猜出这是个和定时任务调度有关的线程池 NioEventLoopGroup的创建 EventLoopGroup bossGroup = new

Mybatis工作流程源码分析

。_饼干妹妹 提交于 2019-12-05 02:11:02
1.简介   MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录《摘自mybatis官网》。   mybatis在我们开发中经常使用,所以搞清楚mybatis的工作流程还是比较重要的,下面就开始我们的分析。 2.Mybatis中的核心对象 2.1mybatis使用示例 public static void main(String[] args) throws IOException { //1.创建sqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); //2.创建会话 SqlSession session = sqlSessionFactory.openSession(); try { //3.获取mapper代理对象 BlogMapper

大数据组件——spark

旧城冷巷雨未停 提交于 2019-12-04 23:18:29
spark的yarn-cluster模式 1. 程序提交作业到ResourceManager,请求启动ApplicationMaster 2. ResourceManager会分配container,在某个NodeManager上面启动ApplicationMaster,相当于Driver 3. ApplicationMaster启动后,会和ResourceMananger通讯,请求container来启动executor 4. ResourceManager会提供一些container给ApplicationMaster用来启动executor 5. ApplicationMaster会连接其他NodeManager来启动executor 6. executor启动后会向ApplicationMaster反向注册 spark的yarn-client模式 1. yarn-client,区别在于driver是在本地客户端上运行的,相应的ApplicationMaster只是作为一个Executor启动器,并没有相应的Driver进程 yarn-cluster yarn-client driver运行在AM中 driver运行在client客户端 日志分布在各个节点上,需要登录到某个节点才能看到日志 比较适合于调试,日志存在客户端,可以直接查看到各种日志 client断开的话

spark运行参数设置

孤街浪徒 提交于 2019-12-04 23:16:08
num-executors 参数说明:该参数用于设置Spark作业总共要用多少个Executor进程来执行。Driver在向YARN集群管理器申请资源时,YARN集群管理器会尽可能按照你的设置来在集群的各个工作节点上,启动相应数量的Executor进程。这个参数非常之重要,如果不设置的话,默认只会给你启动少量的Executor进程,此时你的Spark作业的运行速度是非常慢的。 参数调优建议:每个Spark作业的运行一般设置 50~100 个左右的Executor进程比较合适,设置太少或太多的Executor进程都不好。设置的太少,无法充分利用集群资源;设置的太多的话,大部分队列可能无法给予充分的资源。 executor-memory 参数说明:该参数用于设置每个Executor进程的内存。Executor内存的大小,很多时候直接决定了Spark作业的性能,而且跟常见的JVM OOM异常,也有直接的关联。 参数调优建议:每个Executor进程的内存设置 4G~8G 较为合适。但是这只是一个参考值,具体的设置还是得根据不同部门的资源队列来定。可以看看自己团队的资源队列的最大内存限制是多少,num-executors乘以executor-memory,就代表了你的Spark作业申请到的总内存量(也就是所有Executor进程的内存总和),这个量是不能超过队列的最大内存量的。此外

JAVA CONCURRENCY EXECUTORS 介绍Java并发处理线程池

我怕爱的太早我们不能终老 提交于 2019-12-04 18:51:51
I would make a fool out of myself if I tell you that util.concurrent APIs kicks cheetah's ass when the classes are available since 2004. However, there are some cool features which I would like to revisit. Concurrency experts, now is the time for you to close this window. All others, stay tight for the fun ride. Thou shall not forget your roots Executor is the root interface with a single execute method. Anything that implements a Runnable interface can passed as a parameter. Silly Executor, however, has no support for Callable though. Good news : ExecutorService interface, which extends

spark项目技术点整理

不羁的心 提交于 2019-12-04 18:01:41
spark项目技术点整理 1.性能调优:    1>分配更多的资源: 性能调优的王道就是分配和增加更多的资源。写完一个spark作业后第一个要是调节最优的资源配置,能够分配的资源达到你的能力范围的顶端后,才是考虑以后的性能调优。    2>分配那些资源: executor,cpu per executor,memory per executor.,driver memory    3>在哪里分配: 在提交spark作业时,用spark脚本,里面调整参数    /usr/local/spark/bin/spark-submit \   --class.cn.spark.sparktest.core.WordCountCluster \   --num-executor 3 \   --driver-memory 100m \   --executor-memory 100m \   --executor-core \   /usr/localSparkTest-0.0.1SNAPHOT-jar-with-dependencies.jar \    4>调节多大合适:   spark standalone:根据公司集群配置,如每台可以提供4G内存,2个cpu core;20台机器:一个作业同时提交:executor:20,4g内存,2个cpu core ,平均每个executor。  

spark executor memory cut to 1/2

社会主义新天地 提交于 2019-12-04 16:32:24
I am doing a spark-submit like this spark-submit --class com.mine.myclass --master yarn-cluster --num-executors 3 --executor-memory 4G spark-examples_2.10-1.0.jar in the web ui, I can see indeed there are 3 executor nodes, but each has 2G of memory. When I set --executor-memory 2G, then ui shows 1G per node. How did it figure to reduce my setting by 1/2? The executor page of the Web UI is showing the amount of storage memory, which is equal to 54% of Java heap by default (spark.storage.safetyFraction 0.9 * spark.storage.memoryFraction 0.6) 来源: https://stackoverflow.com/questions/29191547/spark