slide简介(大数据技术)

2.1SLIDER产生背景
为了解决MR1扩展性差、可靠性差、资源利用率低和无法支持多种计算框架等局限性,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等。
(2)Application
可以运行在YARN中的程序都可以成为Application,包括计算框架MapReduce、内存计算、流计算等;常驻服务,如ApacheHBase、Accumulo及Storm等。其中Slider是运行在YARN中用于Application管理的框架,本质也是Application。
(3)Instances
Application程序在YARN中的一次执行,YARNCluster根据应用配置文件启动的应用实例,实例的状态可以是运行状态或者停止状态,当停止时配置信息或者Instance数据保根据存在HDFS中。同一个Application可以在YARN中同时执行多次(共享相同的服务器)。每个Application
Instance由一个或者多个Componet的集合组成,ApplicationState是Instance的模型,记录每个Instances的正确状态、所需要的资源、运行历史信息等。
(4)Components
Component是ApplicationInstances的组成构件,代表应用的程序的一个运行模块,例如HBase中的HMaster、HRegionServer、RestServer都可以称为Component,其以YARNContainer的形式运行在YARN中。不同的Component可以执行不同的程序或者命令,也可以使用不同的配置选项和参数。
(5)Role
ApplicationMaster为了实现对Component(运行在YARNContainer中)进行管理,需要对Component及其Container的实时运行信息进行记录及更新。Component在ApplicationMaster的映射形式为Role(Server-Siderlogin),其实例化为RoleInstances。SliderAppMaster根据Role的信息进行任务的调度和服务的管理。根据具体的Component不同分为SliderAppMasterRole和ComponentRole。
(6)ServiceRegistry
客户端需要访问运行在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基本组成结构
Slider(YARNApplication)的总体结构仍然是Master/Slave结构,运行在资源管理系统YARN中,SliderAppMaster为Master,SliderAgent为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的交互协议
1)SliderClient与RM之间的协议——ApplicationClientProtocol;SliderClient通过该RPC协议提交应用程序,查询应用程序状态等
2)Admin与RM之间的协议——ResourceManagerAdministrationProtocol;Admin通过该RPC协议更新系统配置文件,比如节点黑白名单,用户队列等。
3)AM与RM之间的协议——ApplicationMasterProtocol;AM通过该RPC协议向RM注册和撤销自己,并为各个任务申请资源
4)AM与NM之间的协议——ContainerManagementProtocol;AM通过该RPC协议要求NM启动或者停止Container,获取各个Container的使用状态等信息
5)NM与RM之间的协议——ResourceTracker;NM通过向该RPC协议向RM注册,并定时发送心跳信息汇报当前节点的资源使用情况和Container运行情况
6)SliderClient与AM之间的协议——SliderClusterProtocol;SliderClient通过该RPC协议请求AM进行App的信息的查询
7)SliderOpUser与AM之间REST协议——ManagementResource、PublisherResource、RegistryResource及ApplicationResource,用户通过该REST协议进行应用信息的查询,服务的操作等
8)SliderAgent与AM之间的REST协议——AgentResource,Agent向AM注册,并实现Agent与AM之间的心跳信息的交互
2.4SLIDER工作流程
通过Slider将常驻服务运行在YARN中,与常规的提交YARNApp(eg,MR)大致相同,分为两个阶段运行该应用程序;第一个阶段是启动SliderAppMaster;第二个阶段是由SliderAppMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。
步骤1:用户通过CLI启动SliderAppMaster,SliderClient通过调用create及start向YARN提交应用请求,分配资源并启动SliderAppMaster,启动过程中从Apppackage中读取所需要的配置信息,初始化服务
步骤2:SliderAppMaster启动后,向YARN申请资源,并启动container
步骤3:Container被激活并启动Agent,SliderAppMaster分配Container后,启动Container,并启动SliderAgent
步骤4:SliderAgent的启动后,从应用程序的描述文件(metainfo.xml)中读取应用的启动脚本及目录
步骤5:SliderAgent向SliderAppMaster注册,通过SliderAppMaster向SliderAMWebApp服务的REST(/agent/register)完成注册
步骤6:SliderAppMaster向SliderAgent发送命令,SliderAgent根据应用程序的描述文件启动对应的脚本,启动对应的服务(Component)
步骤7:SliderAgent与SliderAppMaster进行心跳交互,SliderAgent向SliderAppMaster汇报服务状态及配置等
步骤8:SliderAppMaster通过YARNRegistry向zk中注册服务地址,客户端获取服务地址,并对服务进行信息的查询和操作
2.5小结
本章介绍了Slider的设计理念和基本架构,涉及到的内容较多,包括Slider产生背景、Slider术语解释、Slider架构和通信协议等。从YARN的角度上讲,Slider与MRAppMaster等Application的执行过程相同。在后面几章中,将深入探讨Slider内部实现原理,以便进一步深层次理解Slider。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改小程序swiper 点的样式_高质量的微信小程序样式模板应该长什么样?

现在不懂技术的小白若想快速制作自己的小程序,一般是通过小程序模板来实现。通过在模板上添加自己的图片、文字、商品等等,可以很简单地生成一个小程序。不过要想把小程序做得好看,你得找高质量的小程序样式模板才行。那么高质量的微信小程序…

spark简介(大数据技术)

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——…

python的concat用法_python的concat等多种用法详解

本文为大家分享了python的concat等多种用法,供大家参考,具体内容如下1、numpy中的concatenate()函数:>>> a np.array([[1, 2], [3, 4]])>>> b np.array([[5, 6]])>>> np.concatenate((a, b), axis0)array([[1, …

impala简介(大数据技术)

一、Impala概述 什么是Impala? Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说&#xf…

论蒟蒻的作死程度

各个BT游戏进度记录 I wanna I wanna be the guy 德古拉(为什么我没有连发器……) 车万 东方红魔乡: nomal第四面 东方妖妖梦: 第五面 东方永夜抄: easyGOODENDING nomal第六面 转载于:https://www.cnblogs.com/tt66ea…

猎豹网matlab视频百度云,猎豹网校C++ Primer初级全套视频教程

1_CppPrimer_快速入门2_CppPrimer_基本内置类型3_CppPrimer_习题解答_2-34_CppPrimer_字面值常量5_CppPrimer_变量6_CppPrimer_变量名7_CppPrimer_定义对象8_CppPrimer_声明和定义9_CppPrimer_名字的作用域10_CppPrimer_const限定符11_CppPrimer_引用12_CppPrimer_typedef13_Cp…

elasticsearch简介(大数据技术)

ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将…

python转为字节_将字节转换为python中的位

I am working with Python3.2. I need to take a hex stream as an input and parse it at bit-level. So I usedbytes.fromhex(input_str)to convert the string to actual bytes. Now how do I convert these bytes to bits?解决方案Another way to do this is by using the…

Linux 监控数据库资源占用

1.用xshell连接远程服务器,登录用户名和密码 2.进入远程服务器 3.输入top,回车,显示如下图所示 4.Cpu states: cpu状态 0,2,4,6 说明cpu是四核的 IDLE 代表闲置CPU百分比 百分号前面数字越大&#xff…

mysql操作窗口如何设置粘贴,Access6.5在表中复制和粘贴数据

在城市和省份两个字段里有很多重复的内容每次都输入一遍显得非常麻烦我们可以结合复制和粘贴数据两个命令将一个数据块很方便地放到很多位置上去 首先打开Access 的剪贴板单击视图菜单将鼠标移动到工具选项上在工具选项右边弹出一个菜单单击上面的剪贴板命在城市和省份两个字段…

windows下python安装

第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包&am…

ssdp协议_Cotopaxi:使用指定IoT网络协议对IoT设备进行安全测试

cotopaxi是用于IoT设备安全测试的工具集。你可以指定IoT网络协议(如CoAP,DTLS,HTCPCP,mDNS,MQTT,SSDP)进行测试。安装只需从git克隆代码即可:https://github.com/Samsung/cotopaxi要求目前Cotopaxi仅适用于…

ORACLE中数据类型

ORACLE中数据类型 1.在ORACLE中包含有:数值类型 字符串类型 日期类型等等 2.数值类型--- 1)number 在不设置宽度的情况下,默认是38个最大值 如果设置宽度,那么方式:number(2)--表示宽度为2的整型数据类型 如果设置小数…

学习记录 php,PHP进阶篇学习专用记录

print_r和echo有什么不同?答:echo只能输出字符串,或者字符串变量,print_r可以输出任何类型echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值print() 只能打印出简单类型变量的值(如int,string)print_r() 可以…

实例1:python

#有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? #!/usr/bin/python -- coding: UTF-8 -- for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i ! k ) and (i ! j) and (j ! k…

unit类型是什么?_项目中有用过锁吗?能解释一下什么是AQS(AbstractQueuedSynchronizer)吗?...

1 前言 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,如读写锁)。在以前,Java程序是靠synchronized来实现锁功能的,而在Jav…

java 4个系统,JSP系统的四个组成部分

JSP系统的四个组成部分JSP系统主要由四个部分组成:1)数据库连接部分:JSP系统支持常用的几个数据库,包括Oracle、Sybase、MSSQLServer、MySQL和DB2,根据用户选择的数据库类型和用户提供的数据库名称、用户名、密码使用JDBC同数据库…

递归树

用于可视化递归算法的流程。当你知道递归的时间复杂度的公式后,就可以画出递归树,有利于你计算递归算法的时间复杂度。 像这种公式,第一个2说明是二叉树,一分为2;第二个n/2,说明他的儿子们所占用的数据只有…

实例1:python(续)

#有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? d[] for a in range(1,5): for b in range(1,5): for c in range(1,5): if (a!b) and (a!c) and (c!b): d.append([a,b,c]) print (“总数量&#xf…

python灰产_Python学习一周有感

从业至今,搞互联网将近7年了,如今,就连和我大学一个系的媳妇儿,都已经忘记了我是学工商管理的,每次聊天谈起来,都会用她那迷茫的眼神看着我:”你不是学计算机专业的吗?“大学毕业&am…