基于kubernetes的hdfs-hbase部署方法及装置与流程

文档序号:17924558发布日期:2019-06-15 00:19阅读:848来源:国知局
基于kubernetes的hdfs-hbase部署方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种基于kubernetes的hdfs-hbase部署方法及装置。



背景技术:

由于大数据行业应用需求日益增长,未来越来越多的研究和应用领域将需要使用大数据并行计算技术,大数据技术将渗透到每个涉及到大规模数据和复杂计算的应用领域。不仅如此,以大数据处理为中心的计算技术将对传统计算技术产生革命性的影响,广泛影响计算机体系结构、操作系统、数据库、编译技术、程序设计技术和方法、软件工程技术、多媒体信息处理技术、人工智能以及其他计算机应用技术,并与传统计算技术相互结合产生很多新的研究热点和课题。

在大数据的环境下,传统关系型数据库已经无法满足当前日益庞大的数据存储和检索需求。为满足不同应用的需求,各类非关系型数据库(nosql)解决方案纷纷涌现。nosql具备扩展性强,并发性能好、数据模型灵活等优势,能够很好的应付各类大数据场景。hbase属于nosql的一种,是apache基金会实现大数据存储的一种开源版本,具有高性能、高并发、可伸缩等优点,业界已经将hbase应用于各个领域。

hbase是一个构建在hdfs上的分布式列存储系统。hbase是列存储的非关系数据库。传统数据库mysql等,数据是按行存储的。其没有索引的查询将消耗大量i/o并且建立索引和物化视图需要花费大量时间和资源。因此,为了满足面向查询的需求,数据库必须被大量膨胀才能满足性能要求。

hbase的部署依赖于zookeeper和hadoophdfs。hbase集群本身的组件包括master和regionserver。master主要负责管理regionserver,regionserver负责具体数据块的读写操作,数据最终都持久化到了hdfs中。

容器是轻量级的操作系统级虚拟化,可以让我们在一个资源隔离的进程中运行应用及其依赖项。运行应用程序所必需的组件都将打包成一个镜像并可以复用。执行镜像时,它运行在一个隔离环境中,并且不会共享宿主机的内存、cpu以及磁盘,这就保证了容器内进程不能监控容器外的任何进程。

docker是一个开源的容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括vms(虚拟机)、baremetal、openstack集群和其他的基础应用平台。

kubernetes是google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,利用kubernetes能方便地管理跨机器运行容器化的应用,它以集群的方式运行,管理调度跨机器的容器并解决docker跨机器容器之间的通信问题。

传统部署方法步骤如下:

1选取目标服务器后,设置集群的免秘钥访问,并为服务器安装jdk等依赖环境,修改对应环境变量

2将安装包拷贝到各目标服务器,修改hbase-env.sh、hbase-site.xml等hbase配置

3启动hbase

目前较广泛的容器部署方法步骤如下:

1生成已经建立秘钥的基础系统镜像,修改所需的配置,通过dockerfile在原基础镜像上生成docker镜像;

2遴选合适的服务器,并将该镜像拷贝到对应服务器上;

3在每一台服务器上拉起容器,待容器正常启动后,获取所有容器ip并修改hbase集群中的每一个容器的/etc/hosts文件;

传统的安装方式会有如下缺陷:

由于现有方式需要将安装包逐台拷贝到服务器上,并配置所有服务器的hostname、hosts、免密码登录、环境变量以及hbase的基础软件配置,此过程繁琐易错;针对不同需求的集群配置文件难以复用。

由于现有的hbase部署方式需要对每个服务器进行单独安装并修改配置,多个regionserver进程共同占用同一服务器时势必会导致cpu、内存、网络带宽、磁盘等资源的竞争消耗,同时在复杂的人工安装配置中很容易出现错误。

现有容器部署方式会有如下缺陷:

现有方案中均需要实现按照条件人工遴选服务器,本发明能够根据既定算法自动选出最适合cpu、内存资源要求的服务器。

现有方案可以看出,需要待容器正常启动,确定各容器所用的ip后,再人工进入容器内部修改每一个容器的/etc/hosts文件,这表示在容器重启后者更换ip后,该容器所承载的节点无法自动连接到集群,需要人工修改每一个容器中该容器的ip信息。



技术实现要素:

本发明实施例提供一种基于kubernetes的hdfs-hbase部署方法及装置,用以解决现有技术中的问题。

本发明实施例提供一种基于kubernetes的hdfs-hbase部署方法,包括:

安装平台系统,所述平台系统包括:管理页面、计算层、镜像仓库、kubernetes模块、以及巡检系统,其中,所述计算层与所述kubernetes模块和所述巡检系统分别通过接口进行交互;

计算层通过kubernetes模块获取服务器信息,打包基础镜像,并在所述镜像仓库中保存hbase基础配置;

在用户创建hbase应用时,计算层通过管理页面获取用户输入的需求信息,修改hbase基础配置,遴选服务器并打标签,并根据本次hbase部署的需求信息,生成yaml文件,并调用所述kubernetes模块;

所述kubernetes模块按照所述yaml文件要求部署并启动hbase集群,并将所述hbase集群添加到巡检队列中;

所述巡检系统对所述巡检队列进行轮询。

优选地,所述需求信息具体包括:所需服务器信息、资源要求、以及配置信息。

优选地,所述yaml文件具体包括:资源限制信息、及其标签要求、以及存储路径信息。

优选地,打包基础镜像具体包括:

打包hbase的基础镜像;

将内置脚本协同基础系统镜像打包到hbase的基础镜像中。

优选地,所述巡检系统对所述巡检队列进行轮询具体包括:

步骤1,巡检系统对巡检队列中已有的需要校对的hbase进行轮询检查,全量获取集群所包含的容器信息,判断是否与已有记录完全相符;如不相符或无记录,则确定该集群发生了hostname-ip变动或者是新增集群,执行步骤2,如果相符则确定集群未曾发生变动,此hbase集群不需要校对,本次轮询结束;

步骤2,通过kubernetes接口,调用所获取的所有容器内的内置脚本,一次次传入本集群的hostname-ip;内置脚本识别开始结束指令,收到开始指令时创建新的/etc/hosts-bak配置;内置脚本将“开始指令”后“结束指令”前收到的内容写入/etc/hosts-bak文件中;收到结束指令时,用/etc/hosts-bak替换/etc/hosts文件,从而修正容器内配置。

优选地,所述容器信息具体包括:zookeeper容器信息、hdfs-namenode容器信息、以及hbase容器信息。

本发明实施例还提供一种基于kubernetes的hdfs-hbase部署装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述方法的步骤。

采用本发明实施例,相对于传统部署方式,本发明省去了操作系统配置,jdk等依赖环境的安装,系统变量修改等步骤,只需从界面传入少量需求参数或不传入参数,直接生成配置,建立hbase集群,避免了人工修改配置的风险,同时利用容器技术做到了资源隔离,杜绝了进程间的恶性资源竞争。相对于现有容器部署方案,本发明通过需要生成的集群对资源的要求自动遴选服务器,避免了人工遴选不科学的风险;由于本发明中加入了巡检系统,可以自动更新维护容器内的/etc/hosts文件,比现有容器部署方式更安全有保障。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是本发明实施例中系统框架的示意图;

图2是本发明实施例中基于kubernetes的hdfs-hbase部署方法的流程图;

图3是本发明实施例中进行巡检的处理流程图。

具体实施方式

本发明实施例通过容器技术统一整合编排hbase集群安装,使部署更高效,并隔离划分了服务器资源,避免了资源竞争带来的消耗。

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1中展示的系统框架较为清晰,为每台服务器安装docker引擎,底层整体集群通过kubernetes来管理;数据库中录入服务器信息,为计算层提供数据依据。计算层通过kubernetes提供的外置接口进行交互和调用。创建hbase集群的流程如图2所示,系统开始,计算层通过kubernetes获取服务器信息并录入数据库对应表保存,以便界面展示。用户创建hbase应用时,通过界面键入所需服务器信息、资源要求和配置信息,计算层生成启动所需的yaml文件并以均衡原则自动遴选出合理的服务器,通过kubernetes为打标签调度。巡检系统定时查询是否有容器重启或重新调度等,重新生成hbase运行所依赖的/etc/hosts并更新到每个容器中。

对于巡检功能,本发明采用内外互通调用的方式实现,如图3所示:

1、在制作镜像时,将内置脚本协同基础系统镜像打包到hbase的版本镜像中;

2、巡检系统对队列中已有的需要校对的hbase做轮询检查;

3、全量获取集群所包含的容器信息,包含zookeeper容器,hdfs-namenode容器和hbase容器,判断是否与已有记录完全相符;

4、如不相符或无记录,则表明该集群发生了hostname-ip变动或者是新增集群,至第6步

5、相符则说明集群未曾发生变动,此hbase集群不需要校对,本次轮询结束

6、通过kubernetes接口,调用所获取的所有容器内的内置脚本,一次次传入本集群的hostname-ip

7、内置脚本识别开始结束指令,收到开始指令时创建新的/etc/hosts-bak配置;

8、内置脚本将“开始指令”后“结束指令”前收到的内容写入/etc/hosts-bak文件中

9、收到结束指令时,用/etc/hosts-bak替换/etc/hosts文件,从而修正容器内配置。

从上面描述可以看出,本发明实施例能够按租户需求,通过既定算法自动遴选hbase负载均衡最优的服务器并快速安装;一键式修改hbase配置和cpu、内存、磁盘等资源隔离限制,自动配置免密码登录、基础环境变量;自动感知hbase容器集群变动信息并实时更新维护hbase集群包含的所有容器内的配置文件。

综上所述,在现有技术中,hdfs-hbase部署需要对每台机器安装hadoop-hdfs、hbase等安装包,并按需求配置和启动,耗时易错。本发明利用kubernetes将已经镜像化的安装包按需求发布到各服务器并启动对应容器,按照镜像处理好的配置启动程序;使安装更简便,启动更安全。此外,在现有技术中,部署方式在多个hdfs-hbase集群同时占用相同服务器时,会产生较激烈的资源竞争并带来大量损耗,致使性能大幅下降。本发明利用容器技术限制每个容器的资源使用,从而避免竞争及损耗。面对整体服务器集群,传统做法需要人工遴选出合适的服务器,而后将安装包或者镜像文件拷贝到服务器上进行安装执行;本发明可以按照需求由内置算法挑选出最佳部署服务器,确保hbase集群能够散列均匀分布在最合适的服务器上。现有容器部署方案在单个容器重启后,容器ip发生变化,/etc/hosts/配置即告失效,需要对hbase集群中每一个容器修改/etc/hosts以保证hbase集群运行;本发明能够自动感知及更新/etc/hosts,确保在容器重启后无需人工干预自动上线。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1