大数据集群准实时container资源分配监控分析方法与流程

文档序号:18009394发布日期:2019-06-25 23:48阅读:358来源:国知局
大数据集群准实时container资源分配监控分析方法与流程

本公开涉及大数据后台优化技术领域,具体涉及一种用于监控分析大数据集群的容器(container)资源分配的方法、装置、计算设备和存储介质。



背景技术:

当前随着各行业业务创新与发展,尤其是互联网、金融、通信等行业,其数据类型、数据量、计算量出现爆发式增长。大数据与云服务技术此时应运而生。在大数据与云服务上有针对不同业务和计算环境的大规模集群存储、计算服务,其资源分配与资源消耗是大数据与云服务的重要的核心考核指标。因此,需要一种能够高效及时地监控分析大数据环境下的资源分配的技术。



技术实现要素:

有鉴于此,本公开主要提供了一种基于hadoop、yarn、hive、presto、hcharts开源技术实现的大数据环境下对yarncontainer资源分配的准实时监控分析方法,且支持历史趋势分析。

根据本公开的第一方面,提供了一种用于监控和分析大数据集群的容器资源分配的方法,包括:产生容器资源分配日志;解析容器资源分配日志,并将解析的容器资源分配按照结构化存储到分布式文件系统;创建映射到所述结构化的容器资源分配的数据库表;部署分布式查询引擎以访问所述数据库表;以及在web端呈现由所述分布式查询引擎访问的容器资源分配,用于监控和分析。

在一个实施例中,所述方法可以适用于hadoop和yarn的环境,并且产生容器资源分配日志可以包括:由resourcemanager接收提交的应用程序;由resourcemanager为applicationmanager申请容器资源,并与nodemanager通信,以启动applicationmanager;在从resourcemanager获得容器资源后,由applicationmanager与nodemanager通信,以启动任务和执行应用程序;在任务完成后,由applicationmanager向resourcemanager注销容器资源,结束应用程序;以及由resourcemanager记录容器资源分配到yarn日志文件。

在一个实施例中,解析容器资源分配日志可以包括使用脚本进行解析,将容器分配数量写入本地,并且存储到分布式文件系统可以包括将本地数据上传到集群hdfs。

在一个实施例中,所述数据库表可以是hive表,其位置可以指向所述集群hdfs目录。

在一个实施例中,部署分布式查询引擎还可以包括部署presto引擎并配置catloghive.properties信息,使得presto引擎能够访问所述hive表。

在一个实施例中,呈现容器资源分配可以包括使用可视化工具进行呈现,提供容器资源分配的历史趋势、同比分析、环比分析、同步预警和环比预警中的至少一个。

根据本公开的第二方面,提供了一种用于监控和分析大数据集群的容器资源分配的装置,包括:日志产生单元,被配置为产生容器资源分配日志;日志解析存储单元,被配置为解析容器资源分配日志,并将解析的容器资源分配按照结构化存储到分布式文件系统;数据表单元,被配置为创建映射到所述结构化的容器资源分配的数据库表;查询引擎单元,被配置为部署分布式查询引擎以访问所述数据库表;以及监控分析单元,被配置为在web端呈现由所述分布式查询引擎访问的容器资源分配,用于监控和分析。

在一个实施例中,所述装置可以适用于hadoop和yarn的环境,并且日志产生单元还可以被配置为:由resourcemanager接收提交的应用程序;由resourcemanager为applicationmanager申请容器资源,并与nodemanager通信,以启动applicationmanager;在从resourcemanager获得容器资源后,由applicationmanager与nodemanager通信,以启动任务和执行应用程序;在任务完成后,由applicationmanager向resourcemanager注销容器资源,结束应用程序;以及由resourcemanager记录容器资源分配到yarn日志文件。

在一个实施例中,日志解析存储单元还可以被配置为:使用脚本进行解析,将容器分配数量写入本地,并且存储到分布式文件系统包括将本地数据上传到集群hdfs。

在一个实施例中,所述数据库表可以是hive表,其位置指向所述集群hdfs目录。

在一个实施例中,所述查询引擎单元还可以被配置为部署presto引擎并配置catloghive.properties信息,使得presto引擎能够访问所述hive表。

在一个实施例中,监控分析单元还可以被配置为:使用可视化工具进行呈现,以及提供容器资源分配的历史趋势、同比分析、环比分析、同步预警和环比预警中的至少一个。

根据本公开的第三方面,提供了一种计算设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据本公开的第一方面所述的方法。

根据本公开的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令当被计算机执行,使得所述计算机执行根据本公开的第一方面所述的方法。

本公开实现了基于开源技术hadoop集群结合hive、presto、hcharts实现大数据集群环境下yarncontainer分配资源的监控分析方法。该方法使无权访问resourcemanager服务器的情况下,了解yarncontainer分配提供了便捷渠道。并且,该方法屏蔽了数据分析的技术难度,普通运营、运维、研发人员通过web页面即可了解到container资源分配、历史趋势、对比变化情况,由此实现了大数据集群资源队列、集群存储资源使用等方面数据的web可视化监控分析。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示出了根据本公开实施例的用于hadoop集群yarncontainer资源监控分析的架构;

图2示出了根据本公开实施例的可适用于在hadoop和yarn的环境下监控和分析大数据集群的容器资源分配的方法的流程图;

图3示出了通过web端的可视化工具准实时地了解集群资源资源分配随时间变化的示意图;

图4示出了根据本公开实施例的用于监控和分析大数据集群的容器资源分配的装置的示意框图;

图5是示出可以应用本公开的用于监控和分析大数据集群的容器资源分配的方法或装置的示例性系统架构的示意框图;以及

图6是示出用于实现本公开实施例的计算机系统的结构示意图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

本发明主要实现一种基于hadoop、yarn、hive、presto开源技术实现的大数据环境下对yarncontainer资源分配的准实时监控分析方法,且支持历史趋势分析。

在详细描述本公开的具体实施例之前,首先对技术术语进行阐释,以便于更好地理解本公开。

hadoop:hadoop是一个由apache基金会所开发的分布式系统基础架构。hadoop框架的核心设计是hdfs(hadoop分布式文件系统)和mapreduce。hdfs为海量的数据提供了存储,而mapreduce则为海量的数据提供了计算。

大数据:或称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。

yarn:是yetanotherresourcenegotiator,是一种新的hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。目前yarn支持cpu和内存两种资源,且使用了轻量级资源隔离机制cgroups进行资源隔离。

resourcemanager(rm):是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(scheduler)和应用程序管理器(applicationsmanager,asm)。

applicationmaster(am):用户提交的每个应用程序均包含一个am,与rm调度器协商以获取容器资源(用container表示);将得到的任务进一步分配给内部的任务,即,资源的二次分配;与nm通信以启动/停止任务;监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

nodemanager(nm):是每个节点上的资源和任务管理器,一方面,它会定时地向rm汇报本节点上的资源使用情况和各个container的运行状态;另一方面,它接收并处理来自am的container启动/停止等各种请求。

container:也称为容器,是yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、cpu、磁盘、网络等,当am向rm申请资源时,rm为am返回的容器资源便是用container表示。yarn会为每个任务分配一个container,且该任务只能使用该container中描述的资源。

hdfs:hadoop分布式文件系统,其被设计成适合运行在通用硬件上的分布式文件系统。hdfs是一个高度容错性的系统,适合部署在廉价的机器上。hdfs能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

hive:基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为mapreduce任务进行运行。

presto:facebook推出的一个基于java开发的大数据分布式sql查询引擎,可对从数g到数p的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别。单个presto查询可合并来自多个数据源的数据进行统一分析,可以在可期望的响应时间内返回查询结果,

highcharts:是一个用纯javascript编写的一个开源图表库,能够很简单便捷的在web网站或是web应用程序添加有交互性的图表。支持的图表类型有直线图、曲线图、区域图、柱状图、饼状图、散状点图、仪表图、气泡图、瀑布流图等多达20种图表,其中很多图表可以集成在同一个图形中形成混合图。

在现有的大数据环境下,经常采用hadoop与yarn结合来实现集群搭建以及集群资源控制。由于yarncontainer资源的分配信息包含在集群resourcemanager的日志中。resourcemanager的日志存储在resourcemanager服务器本地的磁盘上,而不是hdfs上,默认位置为hadoop安装目录下的logs目录下的,如:

${hadoop_home}/logs/yarn-$(user)-resourcemanager-$(hostname).log

其中,$(user)为启动resourcemanager进程的用户,$(hostname)为resourcemanager进程所在机器的hostname。

因此,目前对大数据集群环境下的yarncontainer的查询方法如下:

具有集群resourcemanager服务器运维权限的人员登录resource-manager服务器后,通过命令访问yarn-*-resourcemanager-*.1og中的日志记录。然而,该日志中包含很多信息,使用命令查看不方便,且只适用于有权限的个别集群运维管理人员。此外,上述内容描述的文件日志位置在部署集群时可以修改默认的存储路径,如:

/datal/yarn-logs/yarn-*-resourcemanager-*.log。

然而,本领域技术人员在实现container资源监控分析的过程中,发现存在如下问题:

1)原始日志文件需要特殊权限才能查看,

2)日志文件内容繁多,对于container查询统计不便,

3)集群软件运维、平台运营、网络运维各类人员没有统一查询界面;

4)没有历史趋势,不便于分析集群各时段的container消耗分布

图1示出了根据本发明实施例的用于hadoop集群yarncontainer(容器)资源监控分析的架构100。

首先,描述container资源分配日志的产生过程。在hadoop(2.x以上版本)集群中,采用yarn管理集群cpu与内存资源。具体地,yarn提供以下组件:一个全局的资源管理器resourcemanager101、resourcemanager的每个节点代理nodemanager102、表示每个应用的applicationmaster103,其中,每个applicationmaster可以拥有多个container在nodemanager上运行。

例如,在一个实施例中,yarn业务应用程序被提交到resourcemanager101上。这时,resourcemanager101为应用程序applicationmaster103申请container资源,并与nodemanager102通信,以启动applicationmaster103。其中,container封装了hadoop集群上某个节点上一定量的资源(例如,cpu和内存两类资源),是yarn中资源的抽象。接下来,applicationmaster103与resourcemanager101通信,为要执行的任务申请资源,获取资源后,与nodemanager102通信,启动对应的任务。最后,任务运行完成后,applicationmaster103向resourcemanager101注销资源,应用程序运行结束。

在上述过程中,resourcemanager可以记录container资源分配日志到yarnlog日志文件中,例如,通过从applicationmaster103和nodemanager102接收消息,由此产生容器资源分配日志文件yarnlog104,在该日志文件中包括与container资源分配有关的信息。

接下来,将详细描述根据本发明实施例的一系列操作以便准实时地监控分析container资源分配的过程。

首先,可以在resourcemanager101所在服务器上编写程序来解析yarnlog日志中的container资源分配与完成的日志内容,并且按照结构化存储到hadoop集群中的hdfs105上。

以shell程序脚本解析yarnlog日志的方法举例如下:

while[1]

do

d=`date+%d`

h=`date+%h`

m=`date-d′-1min′+%m`

tmp=$h:$m:

cat/data1/yarn-logs/yarn-yarn-resourcemanager-16088.hadoop.test.local.log|

grep$tmp|grep″amallocatedcontainer″|wc-1>>allocated.log

sleep30

done;

该脚本将日志文件中的container分配数量写入到resourcemanager101的服务器本地。之后使用例如hadoopput命令,将本地数据上传到集群hdfs105上。

然后,可以创建hive表106,该hive表的location指向上述hdfs105的文件目录,也就是说将解析得到的contain资源分配数据映射到hive表。

在hadoop集群中部署presto引擎106,并配置cataloghive.properties信息,使presto引擎106可以访问hive表106。

然后,提供web端监控分析服务108。例如,可以使用java引用开源报表软件highcharts(也称为hcharts),利用presto通过jdbc实现高效快速的访问hive表数据。具体地,可以通过hcharts配置yarncontainer的分配历史趋势、同比分析、环比分析、同比预警、环比预警。

最后,集群运营、集群运维、集群软件研发等用户可以通过web端监控分析服务准实时地了解到集群资源分配情况,根据该情况衡量集群资源消耗吞吐量,业务请求集中时间范围,调整集群资源分配策略。

图2示出了根据本公开实施例的可适用于在hadoop和yarn的环境下监控和分析大数据集群的容器资源分配的方法200的流程图。方法200包括:步骤210,产生容器资源分配日志;步骤220,解析容器资源分配日志,并将解析的容器资源分配按照结构化存储到分布式文件系统;步骤230,创建映射到所述结构化的容器资源分配的数据库表;步骤240,部署分布式查询引擎以访问所述数据库表;以及步骤250,在web端呈现由所述分布式查询引擎访问的容器资源分配。

具体地,方法200可以适用于hadoop和yarn的环境,相应地,产生容器资源分配日志可以包括:应用程序被提交到resourcemanager;resourcemanager为applicationmanager申请容器资源,并与nodemanager通信,以启动applicationmanager;applicationmanager在从resourcemanager获得容器资源后,与nodemanager通信,以启动任务和执行应用程序;在任务完成后,applicationmanager向resourcemanager注销容器资源,结束应用程序;以及,resourcemanager记录容器资源分配到yarn日志文件

在一个实施例中,可以在resourcemanager所在的服务器上使用脚本(例如shell程序脚本)来解析yarn日志文件,由此将容器分配数量写入本地,并且将本地数据上传到hadoop集群的hdfs。

在一个实施例中,为了便于高效及时地获取container资源分配的信息,可以创建hive数据库表来映射hdfs中的日志信息。hive相比于其他数据仓库工具的优点在于,其可以直接使用存储在hadoop文件系统中的数据,以类似sql的查询方式,将sql查询转换为mapreduce的job在hadoop集群上执行。

在一个实施例中,可以配置或部署分布式查询引擎,例如presto,来对接hive表,例如,通过配置catloghive.properties信息,使得presto能够访问hive表。例如,如果配置了hiveconnector,则需要配置一个hivemetastore服务来为presto提供hive元信息(metadata)。

此外,在一个实施例中,还可以使用可视化工具,例如hightcharts,来呈现容器资源分配,并且可以提供容器资源分配的历史趋势、同比分析、环比分析、同步预警和环比预警中的至少一个。

图3示出了用户通过web端的可视化工具准实时地了解集群资源资源分配随时间变化的示意图。

图3中,分别用三种不同的颜色绘制了连续三天的集群资源分配情况,其中,横轴表示一天中的时间(0时至24时),纵轴表示container的分配数量。在一个实施例中,可视化工具提供各种分析组件,以便分析资源分配的历史趋势、同比分析、环比分析、同比预警、环比预警等。

图4示出了根据本公开实施例的用于监控和分析大数据集群的容器资源分配的装置400的示意框图。装置400可以包括日志产生单元410,被配置为产生容器资源分配日志;日志解析存储单元420,被配置为解析容器资源分配日志,并将解析的容器资源分配按照结构化存储到分布式文件系统;数据表单元430,被配置为创建映射到所述结构化的容器资源分配的数据库表;查询引擎单元440,被配置为部署分布式查询引擎以访问所述数据库表;以及监控分析单元450,被配置为在web端呈现由所述分布式查询引擎访问的容器资源分配,用于监控和分析。

在一个实施例中,所述装置400可以适用于hadoop和yarn的环境,并且日志产生单元410还可以被配置为:由resourcemanager接收提交的应用程序;由resourcemanager为applicationmanager申请容器资源,并与nodemanager通信,以启动applicationmanager;在从resourcemanager获得容器资源后,由applicationmanager与nodemanager通信,以启动任务和执行应用程序;在任务完成后,由applicationmanager向resourcemanager注销容器资源,结束应用程序;以及由resourcemanager记录容器资源分配到yarn日志文件。

在一个实施例中,日志解析存储单元420还可以被配置为:使用脚本进行解析,将容器分配数量写入本地,并且可以存储到分布式文件系统包括将本地数据上传到集群hdfs。

在一个实施例中,所述数据库表是hive表,其位置指向所述集群hdfs目录。

在一个实施例中,查询引擎单元440还可以被配置为部署presto引擎并配置catloghive.properties信息,使得presto能够访问所述hive表。

在一个实施例中,监控分析单元450还可以被配置为:使用可视化工具进行呈现,以及提供容器资源分配的历史趋势、同比分析、环比分析、同步预警和环比预警中的至少一个。

基于以上,本公开实现了基于开源技术hadoop集群结合hive、presto、hcharts实现大数据集群环境下yarncontainer分配资源的监控分析方法。该方法使无权访问resourcemanager服务器的情况下,了解yarncontainer分配提供了便捷渠道。并且,该方法屏蔽了数据分析的技术难度,普通运营、运维、研发人员通过web页面即可了解到container资源分配、历史趋势、对比变化情况,由此实现了大数据集群资源队列、集群存储资源使用等方面数据的web可视化监控分析。

需要注意的是,尽管本公开基于hadoop、hive、presto、hcharts等开源技术实现了容器资源的web可视化监控分析,但是可以通过使用其他商业收费产品如(cognos、mstr、bo)进行web可视化监控分析。备选地,也可以采用hbase或mysql等数据库实现数据存储。

图5示出了可以应用本公开的用于监控和分析大数据集群的容器资源分配的方法或装置的示例性系统架构500。

如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505(此架构仅仅是示例,具体架构中包含的组建可以根据申请具体情况调整)。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。

应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图6,其示出了适于用于实现本公开实施例的计算机系统600的结构示意图。图6示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图6所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(cpu)601执行时,执行本公开的系统中限定的上述功能。

需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

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