常用的网站推广的方式方法,郑州企业网站开发,外贸公司年终总结,如何申请域名做网站2.1SLIDER产生背景 为了解决MR1扩展性差、可靠性差、资源利用率低和无法支持多种计算框架等局限性#xff0c;Apache社区将其升级了计算框架MRv2。Hadoop将资源管理功能抽象成了一个独立的通用系统YARN 在以MapReduce为核心的软件栈中#xff0c;资源管理系统YARN是可插拔的Apache社区将其升级了计算框架MRv2。Hadoop将资源管理功能抽象成了一个独立的通用系统YARN 在以MapReduce为核心的软件栈中资源管理系统YARN是可插拔的比例选择Mesos替代YARN一旦MapReduce接口改变所有的资源管理系统的实现均需要跟着改变。但是以YARN为核心的软件栈则不同所有框架都需要实现YARN定义的对外接口以允许在YARN之上从而形成一个以YARN核心的生态系统。 在YARN中可以运行MapReduce、Spark这样的短作业也可以部署向Tomcat、MySQL这种长服务。YARN根据各种计算框架、应用的负载或者需求去调整各自占用的资源实现集群资源共享计弹性收缩。 开发者为了使YARN支持自己的计算框架或者服务需要编写组件Client客户端和ApplicationMaster向YARN申请资源、任务调度与容错、网络容错并且要监控各个任务状态等细节对开发者要求过高而且每增加一个框架或者服务都要重新编写相对应的组件重复工作如果想将已有服务运行在YARN中需要修改服务的代码以与YARN框架兼容代价较大。 为了解决这个问题Apache社区推出了Slider其源于Hoya一个尝试将HBase运行在YARN中的项目。ApacheSlider目前是孵化项目可以使用户在不对已存在服务进行任务修改的情况下部署到YARN集群中并提供部署、管理及扩展等操作。 同时Slider可以在集群中部署多版本、异构的应用每个应用可以根据需求配置不同的参数在运行过程中动态的扩展或者减少资源的应用并且对失败的进程透明的回复。在YARN中每个应用都以Application的形式运行每个进程都运行在Container中Container目录中包含了应用的配置、脚本和数据等在YARN中运行应用可以使应用充分整合Hadoop生态系统例如Hadoop数据计算/存储资源及安全、管理和操作能力。 2.2SLIDER基础知识 为了便于下面分析ApacheSlider本小节对Slider涉及的术语进行比较全面的介绍。 1)YARN YARN是Hadoop2.0中的资源管理系统它是一个通用的资源管理模块可为各类应用程序进行资源管理和调度。YARN不仅局限于MR一种框架使用也可以提供其他框架比如TEZ、Spark及Storm等。 2Application 可以运行在YARN中的程序都可以成为Application包括计算框架MapReduce、内存计算、流计算等常驻服务如ApacheHBase、Accumulo及Storm等。其中Slider是运行在YARN中用于Application管理的框架本质也是Application。 3Instances Application程序在YARN中的一次执行YARNCluster根据应用配置文件启动的应用实例实例的状态可以是运行状态或者停止状态当停止时配置信息或者Instance数据保根据存在HDFS中。同一个Application可以在YARN中同时执行多次共享相同的服务器。每个Application Instance由一个或者多个Componet的集合组成ApplicationState是Instance的模型记录每个Instances的正确状态、所需要的资源、运行历史信息等。 4Components Component是ApplicationInstances的组成构件代表应用的程序的一个运行模块例如HBase中的HMaster、HRegionServer、RestServer都可以称为Component其以YARNContainer的形式运行在YARN中。不同的Component可以执行不同的程序或者命令也可以使用不同的配置选项和参数。 5Role ApplicationMaster为了实现对Component运行在YARNContainer中进行管理需要对Component及其Container的实时运行信息进行记录及更新。Component在ApplicationMaster的映射形式为RoleServer-Siderlogin其实例化为RoleInstances。SliderAppMaster根据Role的信息进行任务的调度和服务的管理。根据具体的Component不同分为SliderAppMasterRole和ComponentRole。 6ServiceRegistry 客户端需要访问运行在YARN中的服务但是客户端可能运行在集群外而且运行在YARN中的服务是随机分配到各个主机上不可预测而且端口也是随机的为了解决这些问题需要引入服务注册Service Registry。服务的注册的方式很多包括ZK、DNS、FloatingIPAddress、LDAP等。 当前Slider使用的方式是YARNServiceRegistry将YARNApplication的binding信息发布到ZK中包括IPC端口,Service-aware URL及配置等客户端从ZK中获取所需要的访问信息。对于ServiceRegistry除了ZK有很多的替代方式如ApacheCurator、HelixService Registry,TwillRegistry等以后会进行详述。 2.3SLIDER基本架构 Slider将分布式应用以YARNApplication的形式运行在YARN中其基本设计思想是将分布式应用的服务进程以Container的形式运行在YARN资源管理系统中客户端通过与YARN的交互来对应用进行管理。 2.3.1Slider基本组成结构 SliderYARNApplication的总体结构仍然是Master/Slave结构运行在资源管理系统YARN中SliderAppMaster为MasterSliderAgent为Slave。SliderAppMaster向RM申请资源并要求NM启动SlliderAgent进程Agent根据服务的定义启动相对应的Component。 图2-3描述了Slider的基本组成结构Slider主要由SliderAppMaster、SliderAgent和AppComponent由LinuxService启动可以是Docker或者JVM程序等不同程序Agent启动在Container中但是Component进程由Linux系统启动可能会不属于Cotainer。
图2-3Apache Slider的基本架构 根据app的配置解析并生成Application的启动计划SliderAppMaster根据计划向YARN申请Container(对应一个Component)。在ApplicationInstance启动后监控其运行状态并当服务的Component因异常停止后自动恢复。 SliderAppMaster申请到Container后在Container中启动SliderAgent进程Agent向SliderAppMaster注册并发送心跳信息Agent根据心跳响应获取SliderAppMaster发送的命令并执行包括服务的启动、停止及其他操作。 每个applicationinstance有一个或者多个Component的集合每个Component有不同的程序或者命令使用的配置和参数也会不同例如HBaseHMaster component会通过SliderAgent启动HMasterJVM。当前SliderAgent也支持DockerApp的启动。 与SliderAppMaster及YARN通过REST或者RPC通信对外提供CLI和底层API来操作Application 2.3.2Slider通信协议 通信协议是Slider各个组件的大动脉了解不同组件之间的通信协议有助于更深入的学习Slider框架其中RPC协议是连接各个组件的“大动脉”对于RPC通信双方有一端是Client另一端是Server且Client总是主动连接Server因此YARN中的组件采用的是pull-based通信模型。另外SliderAppMaster对外提供REST通信方式主要用于与SliderAgent的心跳与注册过程采用的Pull-based通信模型。如图2-4所示实线箭头指向的组件是RPCServer而箭头尾部的组件是RCPClient虚线箭头指向RESTServer虚线箭尾指向RESTClient端由以下部分组成
图2-4ApacheSlider的交互协议 1SliderClient与RM之间的协议——ApplicationClientProtocol;SliderClient通过该RPC协议提交应用程序查询应用程序状态等 2Admin与RM之间的协议——ResourceManagerAdministrationProtocolAdmin通过该RPC协议更新系统配置文件比如节点黑白名单用户队列等。 3AM与RM之间的协议——ApplicationMasterProtocolAM通过该RPC协议向RM注册和撤销自己并为各个任务申请资源 4AM与NM之间的协议——ContainerManagementProtocolAM通过该RPC协议要求NM启动或者停止Container获取各个Container的使用状态等信息 5NM与RM之间的协议——ResourceTrackerNM通过向该RPC协议向RM注册并定时发送心跳信息汇报当前节点的资源使用情况和Container运行情况 6SliderClient与AM之间的协议——SliderClusterProtocolSliderClient通过该RPC协议请求AM进行App的信息的查询 7SliderOpUser与AM之间REST协议——ManagementResource、PublisherResource、RegistryResource及ApplicationResource用户通过该REST协议进行应用信息的查询服务的操作等 8SliderAgent与AM之间的REST协议——AgentResourceAgent向AM注册并实现Agent与AM之间的心跳信息的交互 2.4SLIDER工作流程 通过Slider将常驻服务运行在YARN中与常规的提交YARNApp(eg,MR)大致相同分为两个阶段运行该应用程序第一个阶段是启动SliderAppMaster第二个阶段是由SliderAppMaster创建应用程序为它申请资源并监控它的整个运行过程直到运行完成。 步骤1用户通过CLI启动SliderAppMasterSliderClient通过调用create及start向YARN提交应用请求分配资源并启动SliderAppMaster启动过程中从Apppackage中读取所需要的配置信息初始化服务 步骤2SliderAppMaster启动后向YARN申请资源并启动container 步骤3Container被激活并启动AgentSliderAppMaster分配Container后启动Container并启动SliderAgent 步骤4SliderAgent的启动后从应用程序的描述文件(metainfo.xml)中读取应用的启动脚本及目录 步骤5SliderAgent向SliderAppMaster注册通过SliderAppMaster向SliderAMWebApp服务的REST(/agent/register)完成注册 步骤6SliderAppMaster向SliderAgent发送命令SliderAgent根据应用程序的描述文件启动对应的脚本启动对应的服务Component 步骤7SliderAgent与SliderAppMaster进行心跳交互SliderAgent向SliderAppMaster汇报服务状态及配置等 步骤8SliderAppMaster通过YARNRegistry向zk中注册服务地址客户端获取服务地址并对服务进行信息的查询和操作 2.5小结 本章介绍了Slider的设计理念和基本架构涉及到的内容较多包括Slider产生背景、Slider术语解释、Slider架构和通信协议等。从YARN的角度上讲Slider与MRAppMaster等Application的执行过程相同。在后面几章中将深入探讨Slider内部实现原理以便进一步深层次理解Slider。