zoukankan      html  css  js  c++  java
  • 基于Hadoop YARN之上的PaaS构想

    前言


    在Hadoop YARN发展早期,社区曾经讨论过在YARN之上提供PaaS服务。当时业界已经有很多企业提供付费模式的PaaS服务,作为当时已经被大量使用在公司企业内部的Hadoop系统,自然我们可以提出这样一个大胆的想法;为什么不可以在YARN之上构建PaaS云服务呢?不过遗憾的是,这个建议最终没有被实现,停留在了当年的讨论中。但是这并不妨碍我们去了解它的一个设计思路,以及构想。

    PaaS服务


    PaaS概念


    首先,我们还是得重新提一下PaaS这个概念,尽管说这个概念被提出在很多年以前了。PaaS的全称为Platform as a Service,平台即服务,即把平台服务器作为对外服务的一种商业模式。对于用户来说,使用PaaS服务可以免去用户对于服务器,硬件,网络这种底层服务结构的工作,使得用户将更多的重心放在其自身应用之上。

    PaaS的基本架构


    对于PaaS的架构模式,它的基本架构可以分为3层:

    • 第一,客户端层,简单的可以理解为提供给客户端用户使用的应用相关命令。
    • 第二,系统核心结构层。这层里面主要包括客户端应用请求转发处理,服务健康状况监控,主要服务的控制。
    • 第三,应用服务层。这层包括,应用运行时环境,运行所在的容器,支持多租户的运行模式等等。

    下面是PaaS的一个基本架构图,和上面提到的会有略微的差别:


    这里写图片描述

    这里要额外1个比较重要的角色:

    Router:这是一个请求路由的角色,它主要做1个事情,将用户的应用请求转发到它对应的应用服务器里去。所以在其内部需要维护一份,应用对应用服务实例列表的映射关系。

    如果将相关的周边服务全部包括进来,PaaS的基本架构可以用下图来表示:


    这里写图片描述

    标明一点,上图显示的数据关系存储以及块存储,并不是指对外开放的存储服务,而是为了保存应用配置信息,以及war包这种运行文件的。

    OK,理解了这些基本概念后,我们再来谈谈基于Hadoop YARN之上的PaaS构想,就会好理解很多了。

    YARN之上的PaaS构想


    为什么这里我们会提出在YARN之上构建PaaS的设想呢?有下面几点原因:

    • YARN对于底层硬件没有特别的要求,普通常规化的服务器通过集群的形式对外提供整体服务,这与PaaS的服务形式一致。
    • 很多企业自身内部已经部署并在使用Hadoop集群。在上面直接做PaaS,迁移成本比较低,包括数据,应用等等。
    • YARN的3层结构(YARN client,YARN Core,Application应用层)和PaaS的3层结构也能够对应上。
    • Hadoop自身作为Java框架应用,对于目前大多数的Java开发者来说,无需过高学习成本。

    下面我们来聊聊基于YARN之上的PaaS构想。思路构想的一个核心点就是把PaaS中的关键服务对等于YARN中的服务。

    PaaS的容器====>YARN里的Container容器
    PaaS里的主控制器====>YARN里的ResourceManager服务
    PaaS涉及用户的应用执行包存储====>Hadoop HDFS提供的文件系统服务

    有了上面3个角色外,其实还少了1个关键的角色:路由控制角色,这个确实需要我们额外去设计的,先给出YARN之上的PaaS架构图:


    这里写图片描述

    上图中有几层关联关系,需要我们去了解的:

    1.用户用命令行启动application应用,向RM发送请求,RM启动AppMaster。
    2.AppMaster再向RM申请多个Container。这里会做一个额外的步骤,新启动的Container会注册[Container, Application]这样的关系在Zookeeper里面。表明这些Container对应的是具体Application实例的。
    3.Router Proxy代理会向Zookeeper中获取对应Container–>Application信息,将用户发来的应用请求转发到对应的Container执行容器中。

    大体是这样一个过程。上面所有关于Container容器的健康管理工作还是依赖于RM内部本身的机制来做。

    为什么这里要额外引进Zookeeper做状态存储呢而不是直接保存到RM中呢?

    两点原因:
    1.这层映射关系可能会非常多。
    2.把这层关系独立出去,可以与原本RM的管理区分开来,后续的改进调整也会比较容易一些。

    以上就是YARN之上的PaaS构想,期待这块后续的进展吧。

    参考资料


    [1].https://blog.csdn.net/everlasting_188/article/details/79661203
    [2].https://issues.apache.org/jira/browse/YARN-153. PaaS on YARN: an YARN application to demonstrate that YARN can be used as a PaaS

  • 相关阅读:
    51nod1260
    51nod1327
    51nod1342
    51nod1479
    LOJ6088
    51nod1634
    51nod1778
    JAVA循环结构学校上机经常遇到的几题 笔记
    B. The Number of Products(Codeforces Round #585 (Div. 2))
    A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题
  • 原文地址:https://www.cnblogs.com/bianqi/p/12183604.html
Copyright © 2011-2022 走看看