摘要:
Executor是Spark执行任务的进程,Spark启动Executor过程包括如下步骤: 1)使用Spark-submit提交到集群,Master收到RequesSubmitDriver请求。 2)Master调用scheduler把Driver程序发送到worker端执行。 3)Driver执 阅读全文
摘要:
任务调度部件TaskScheduler TaskScheduler负责tasks的提交和请求调度,是任务调度的client端。创建TaskScheduler时会获取master配置,配置部署模式,创建TaskSchedulerImpl和SchedulerBackend。 TaskSchedulerI 阅读全文
摘要:
Spark是最为流行的分布式计算框架,这篇文章简要介绍spark 1.X版本任务调度的基本部件及其原理,包括SparkContext,SparkEnv,Executor,TaskScheduler,DAGScheduler以及其他部件。本文参考自《深入理解Spark》(by耿嘉安)一书。 1 Spa 阅读全文
摘要:
事务是有一系列对系统中数据进行访问与更新的操作组成的一个基本的程序逻辑执行单元。引入事务的概念有两个目的,第一,事务对多个并发访问的应用程序进行隔离,防止彼此干扰,第二,事务为数据库操作序列提供了一个失败回复的方法,同时如果数据库处于异常状态,事务提供了保持一致性的方法。 事务具有最基本的四个特性: 阅读全文
摘要:
Alluxio是一种基于内存的分布式文件系统,支持不同的缓存替换策略,来替换内存中的文件快。Alluxio中的文件时以文件块形式组织,其中文件通过自己实现的inode数据结构记录文件属性并索引。 下面首先介绍几种不同的缓存策略,这些缓存策略被广泛的应用在web,数据库,文件系统中。 1 基于访问频率 阅读全文
摘要:
PriorityQueue,即优先队列。优先队列具有以下特性:每次出队操作,取出的元素都是整个队列值最小的,元素比较可以通过实现自定义的构造器(Comparator),并传入优先队列的构造函数实现。Java 的priorQueue 通过小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值)实 阅读全文
摘要:
String preProcess(String s) { String res = "$#"; for (int i = 0; i p(n,0); s = preProcess(s1); int mx = 0, id = 0; for (int i = 0; i i ? min(p[2*id], mx - i) : 1; while(... 阅读全文
摘要:
//八数码问题 typedef int State[9]; const int maxstate = 1000000; State st[maxstate], goal//所有转换的状态和终点状态 int dist[maxstate]; const int dx[] = {-1, 1, 0, 0}; const int dy[] = {0, 0, -1, 1}; int bfs() { ... 阅读全文
摘要:
1 增广路算法处理最大流问题 主要思路是通过BFS遍历网络,将每次的可改进量从最优路径中删除,直到无可改进量为止。每次的可改进量累加,就是最终网络最大流 下面是Dinic算法 2 Bellman-Ford算法解决最小费用最大流问题 和增广路算法不同的是需要统计每次增广算法增加的费用,保证在最大流前提 阅读全文