一、前言
YARN/MRv2在处理请求时采用了基于事件驱动机制的异步编程模型SEDA,如下图所示:
事件通过Dispather中一个HandlerThread分发给该事件对应的EventHandlerService来处理。每种事件对应一种EventHandler。未被EventHandler处理的事件,会放在EventQueue中等待被处理。
SEDA(Staged Event Driven Architecture)是加州大学伯克利分校研究的一套优秀的高性能互联网服务器架构模型。其设计目标是:支持大规模并发处理、简化系统开发、支持处理监测、支持系统资源管理。其综合了多线程服务器和事件驱动并发处理这两种并发处理编程模型的优势。本文先对这两种被广泛使用的网络服务器架构模型进行介绍。
二、多线程服务器(Threaded Server)
工作原理:
对于每一个request,dispatcher会为其创建并分配一个线程。该线程负责这个请求的处理。这种方式 又名(Thread-per-request)。
优点:
执行粒度是整个完整的处理流程。处理逻辑清晰,容易开发。
缺点:
当随着处理请求不断增加,导致并发执行的线程数量太多。过多的线程数量导致系统在线程调度和资源争用上的开销过大。引起系统性能急剧下降。导致系统处理能力下降。
改进措施:
线程池(Bounded Thread Pools)
系统最多只能创建一定数量的线程。当所有线程都饱和运行时,新到达的处理请求只能等待,或者被抛弃。
缺点:
执行粒度仍然是完整的处理流程。难以检测系统性能瓶颈的根源以及进行相应调整
三、事件驱动并发处理(Event-Driver Concurrency)
将处理流程分割成多个步骤,每一个步骤都实现为一个有限状态机(FSM)。
工作原理:
所有的处理请求会作为Event进入系统。由Scheduler负责传递给相应FSM。FSM的处理结果也以Event形式输出给Scheduler。新的Event会再次被Scheduler进行转发给下一个FSM。直至处理完成。
优点:
1、随着处理量的增加,系统负荷是以线形增长。当达到系统饱和处理能力后。系统的处理能力不会下降。
2、由于将各个处理步骤独立实现,可以很容易的进行系统监测和调整。
缺点:
Scheduler的设计和实现过于复杂。针对于不同的应用和系统的逻辑变更需要不同的实现。
四、SEDA架构
(近似于Event-Driven Concurrency,但是没有其中的Scheduler)
将每一个处理步骤独立为一个Stage。
Stage结构:
1、 一个接受输入的Event Queue;
2、 一个应用开发者编写的Event Handler;
3、 一个Controller用于对执行过程进行控制。包括并发线程数量,批处理数量,…;
4、 一个Thread Pool用于并发处理;
Stage的输入通过Event Queue获得。Stage的输出会以Event形式推送到其他Stage的Event Queue中。Stage之间的这种连接关系由应用开发人员指定。
带来的问题:Event Queue尽管减少了模块间的耦合性,但是会降低响应速度。
五、总结
SEDA架构将应用的整个处理过程分割为多个步骤即Stage。
1)每个Stage可以独立进行开发。
2)Stage之间通过Event Queue来进行通信,可以降低耦合性。可以以很小的成本来适应将来的系统逻辑变化。
3)系统提供了标准的资源控制,使得应用开发人员只需要专注于实现Event Handler的内部逻辑。而无须关注多线程、资源共享、…
4)可以在运行时对于每一个Stage的运行情况进行监测以及调整。
六、参考文献
http://larryzhu.bokee.com
http://sourceforge.net/projects/seda/
- 大小: 13.3 KB
- 大小: 20.7 KB
- 大小: 26.4 KB
- 大小: 24.9 KB
- 大小: 26.2 KB
分享到:
相关推荐
YARN(MRv2)搭建
yarn-v0.23.2.tar.gz 在安装ambari,源码编译的时候下载的文件有问题 手动下载 地址 https://github.com/yarnpkg/yarn/releases/download/v0.23.2/yarn-v0.23.2.tar.gz
脚本使用:vim编辑脚本,按照自己的配置修改主机号,我的是hadoop1、2是NN;hadoop2、3是Spark Master;hadoop3还是RM;hadoop4、5、6是DN、NM、Spark Worker。编辑完成后在满足“前提”的任意一台主机运行均可。 ...
yarn-v1.22.5.tar.gz
一种Yarn框架下的异步双随机梯度下降算法
官网直接安装的不支持vite2+vue3的 主要修复: 1.build或者dev项目时不报错,兼容vite2,vue3; 2.加入deep监听watch,直接在父组件中修改图表中的config参数即可完成图表中的数据变更。 yarn npm cnpm pnpm可通用...
yarn编码,实现Application列表查询,Application的kill操作。以及Job的查询,map和reduce个数查询
SPARK2_ON_YARN-2.4.0 jar包下载
yarn-workspace-plugin-since
详细介绍了Hadoop2.x的资源管理框架yarn,内容丰富,很有帮助。
异步函数编程实用程序的存储库。 异步FP 异步功能编程的实用程序集合。 @ unional / async-context 用于函数编程的安全,类型安全的异步上下文。 import { AsyncContext } from '@unional/async-context' const ...
YARN配置、启动与验证 YARN配置、启动与验证 序号 任务名称 任务一 YARN组件参数配置 任务二 MapReduce组件参数配置 任务三 配置SSH无密钥登录(slave1为主节点) 任务四 分发YARN与MapReduce配置文件 任务五 启动...
Yarn编码获取Application列表,编程实现application的信息,kill application操作,获取job信息,maven打包操作。
npm install -g yarn yarn install 安装失败,使用官方下载的yarn.lock文件
这将使git存储库中的.yarn/cache不存在。 它使用并重写历史记录,因此使用后果自负。 它的工作方式是先将带有--mirror标志的--mirror到临时路径中。 然后,它将计算.yarn/cache中文件的git对象ID列表,并将其删除。...
现在官网下载缓慢,这里可以直接下载安装,所以分享给大家,以供直接下载,版本号 yarn-1.0.2.msi
yarn 前端打包工具指定配置文件
YARN Essentials
tf-yarn是我们在Criteo建立的Python库,用于在Hadoop / YARN集群上训练TensorFlow模型。 可以在找到介绍性博客文章。 它支持在一个或多个具有不同分配策略的工作器上运行,并且可以仅使用几行代码就可以在CPU或GPU...
优先纱线 如果项目具有yarn.lock,请将npm install更改为yarn。 命令行界面 $ npm install --global ...[2/4] :delivery_truck: Fetching packages... [3/4] :link: Linking dependencies... [4/4] :page_with_curl: