一种hadoop集群的自动部署系统及方法

文档序号:6385440阅读:460来源:国知局
专利名称:一种hadoop集群的自动部署系统及方法
技术领域
本发明涉及hadoop领域,特别涉及一种hadoop集群的自动部署系统及方法。
背景技术
Hadoop是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed FileSystem),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。目前,hadoop集群采用手动配置,步骤繁琐,效率低下,而且容易出错。特别是在大规模数据中心环境下,无法进行系统动态扩容和收缩等弹性管理。所以,实现hadoop自动配置自动部署是急需解决的问题。当前可实现hadoop自动部署的典型系统有Mesos。Mesos是一个分布式环境的资源管理平台,它使得Hadoop、MP1、Spark作业在统一资源管理环境下执行。Mesos通过Framework (框架)来对hadoop系统进行管理。Framework表示的是一种分布式计算框架。Hadoop使用者通过Job Client提交了作业之后,交由Job Tracker通过心跳信息与Task Tracker进行任务分配,在Job Tracker中会由TaskScheduler分配task到具体的Task Tracker执行,在选择哪个TaskTracker去执行的过程中,Mesos不参与,完全由Hadoop自己的主节点-从节点的框架来做,只是在申请资源的过程中,会通过其中Mesos提供的分配资源模块进行资源的请求,Mesos资源分配模块,会根据当前分布式系统中资源的使用情况,适时地将作业下放到对应TaskTracker所在节点。与此同时,Mesos系统具有以下缺点框架过于复杂,要想支持其它计算框架,不仅需要对于Mesos源码十分熟悉,而且还要对另外的计算框架非常精通,这明显增加了很大的人力成本;MeS0S实现hadoop的相关接口通过SWIG封装成Java对象。总之,要对hadoop的源代码进行改动,增加了开发运维成本;MeS0S对于资源的管理还不够成熟,从节点资源信息只有Mem大小和CPU的个数,管理力度过于粗糙;MeS0S没有对程序有效地监控机制,不能实时地获得程序的运行状态。

发明内容
本发明所要解决的技术问题是提供一种能实现hadoop集群弹性自动部署的方法,且框架简单,能对源代码进行很好的管理,及时地对程序进行有效的监控,实时获得程序的运行状态。为达到上述目的,本发明提供如下的技术方案。一种hadoop集群的自动部署系统,包括命令控制器,用于根据用户需求生成作业描述信息并提交作业;主控器,用于接收并处理所述命令控制器所提交的作业;部署器,用于向所述主控器提供心跳信息,并接收主控器所分配的任务,进而部署相关任务;
存储结构,用于存储用户提交的应用数据、应用的计算结果及日志。进一步的,所述主控器包括作业提交子模块,用于将所述命令控制器生成的作业描述信息作为输入参数,并分析作业描述信息,依据所述作业描述信息进行作业。进一步的,所述部署器包括部署模块,用于部署所述主控器所分配的任务。进一步的,所述部署模块包括环境配置器,用于设置环境变量;资源分配器,用于初始化资源列表,并获取本机详细信息;参数配置器,用于配置所述任务的参数;启动器,用于启动任务产生新的子进程;监控器,用于监控任务的运行状态;清理器,用于清理所述任务运行时产生的所有工作目录及残留信息。进一步的,所述部署模块还包括数据同步器,用于将所述任务中的数据同步到存储结构中。进一步的,所述部署模块还包括数据下载器,用于从所述存储结构中下载数据。一种采用hadoop集群自动部署系统的自动部署方法,包括S1:初始化系统;S2 :用户使用所述命令控制器提交作业;S3 :所述主控器依据S2所提交的作业,对作业进行分析,并以任务的形式对作业进行分配;S4 :所述部署器接收S3所分配的任务进行部署。进一步的,所述SI进一步包括启动所述主控器;所述部署器初始化hadoop集群信息结构;启动作业提交子模块。进一步的,所述S2进一步包括用户根据自身的需求在所述存储结构中建立工作目录;所述命令控制器根据用户的需求生成作业信息表并提交作业。进一步的,所述S3进一步包括所述主控器对所述命令控制器提交的作业进行分析;所述主控器依据对作业的分析结果,以任务的形式对所述作业进行分配。进一步的,所述S4进一步包括主节点部署过程所述部署器接收所述主控器分配的任务;所述环境配置器设置环境变量;所述资源分配器获取所述部署器所在的本机的详细信息;所述数据同步器将部署器所接收到的任务数据同步到所述存储结构中;所述参数配置器配置部署所述任务的相关参数;所述启动器启动该任务;所述监控器监控该任务的执行状态;
任务执行完成后,所述清理器清理执行任务时的所有工作目录及残留信息。进一步的,所述S4进一步包括从节点部署过程所述部署器接收所述主控器分配的任务;所述环境配置器设置环境变量;所述资源分配器获取所述部署器所在的本机的详细信息;所述数据下载器从所述存储结构中下载任务数据;所述参数配置器配置部署所述任务的相关参数;所述启动器启动该任务;所述监控器监控该任务的执行状态;任务执行完成后,所述清理器清理执行任务时的所有工作目录及残留信息。本发明通过设置命令控制器,用于根据用户需求生成作业描述信息并提交作业;主控器,用于接收并处理所述命令控制器所提交的作业描述信息;部署器,用于向所述主控器提供心跳信息,并接收主控器所分配的任务,进而部署相关任务;存储结构,用于存储用户提交的应用数据、应用的计算结果及日志;进一步的,所述部署器内的部署模块设置有环境配置器,资源分配器,参数配置器,数据同步器,启动器,数据下载器,监控器和清理器,能够使hadoop集群的自动部署和回收得以实现,并且能动态监测程序的运行;且该系统的框架结构简单,维护成本低。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种hadoop集群的自动部署系统的总体结构框图。图2为图1中部署模块的结构框图。图3为本发明实施例提供的一种采用hadoop集群的自动部署系统的自动部署方法流程图。图4为图3中SI的详细流程图。图5为图3中S2的详细流程图。图6为图3中S3的详细流程图。图7为图3中S4进一步包括的主节点部署的详细流程图。图8为图3中S4进一步包括的从节点部署的详细流程图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例和附图,对本发明实施例中的技术方案进行清楚、完整地描述。需要说明的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例需要说明的是,本实施例提供的hadoop集群的自动部署系统通过以作业和任务两层结构来对hadoop系统进行管理。作业为系统的一个执行单位,由任务构成。任务为一个应用的执行过程。我们把hadoop集群的部署过程定义为一个作业,其中包括三类任务。第一类任务部署master,可以指定master到任一台机器;第二类任务部署多个slave,由系统任意分配,但不可单独指定部署到的机器,即slave应当部署到不同机器上,不能部署到已经部署过slave的机器上,同样slave部署的机器也是系统分配的,一般来说,是不指定特定机器的。这两类任务的基本流程都是一样的。他们包括在同一个作业内。一台主机一般只运行一个master或是slave。一个机群里只部署一个hadoop集群。如果要部署新的hadoop集群,必须首先删除已存在的hadoop集群。第三类任务是hadoop集群的管理。用户不能越过本系统直接操作hadoop集群,只能使用系统提供的hadoop集群的管理接口。hadoop安装包,默认在存储结构中的/hadoop目录内。如图1所示,本实施例提供的一种hadoop集群的自动部署系统,包括命令控制器,用于根据用户需求生成作业描述信息并提交作业;主控器,用于接收并处理所述命令控制器所提交的作业描述信息;部署器,用于向所述主控器提供心跳信息,并接收主控器所分配的任务,进而部署相关任务(需要说明的是,所述部署器可以为一个也可以为多个,部署器可以部署在实体机中,也可以部署在虚拟机中);存储结构,用于存储用户提交的应用数据、应用的计算结果及日志,在本实施例中优选采用HDFS和Z00KEEPER作为主要存储结构。所述命令控制器负责根据用户需求生成作业描述信息并提交作业;所述命令控制器将调用主控器提供的作业提交接口将作业描述信息发送给主控器,并通过所述作业提交接口接收主控器返回的作业ID。并将应用的可执行文件及数据文件发送到所述存储结构中以作业ID命名的文件夹中,将来也会在此文件夹下获取计算结果及日志。所述作业提交接口在主控器中具体是通过作业提交子模块来实现。所述主控器对外提供的接口包括为命令控制器提供的作业提交接口及为部署器提供的心跳信息接口。主控器负责通过作业提交接口接收所述命令控制器发送的作业描述信息,并对其进行处理;还负责通过所述心跳信息接口接收部署器的心跳信息,并据此更新作业信息描述队列和节点信息队列以及控制任务的部署。如图2所示,所述部署器使用部署模块具体部署应用。部署模块由以下部分组成环境配置器,用于设置环境变量;资源分配器,用于初始化资源列表,并获取本机详细信息;参数配置器,用于配置所述任务的参数;启动器,用于启动任务产生新的子进程;监控器,用于监控任务的运行状态;清理器,用于清理所述任务运行时产生的所有工作目录及残留信息;数据同步器,用于将所述任务中的数据同步到存储结构中;数据下载器,用于从所述存储结构中下载数据。需要说明的是,上述环境配置器,资源分配器,参数配置器,数据同步器,启动器,数据下载器,监控器和清理器,所述每个都是完整的程序,可以单独使用,特别是监控器可以单独作为监控程序去监控程序的运行。进一步的,有些任务需要用到数据同步器,有些程序不需要用到,数据下载器也是同样的原理。所述部署模块进行部署的通用过程为部署程序首先需要使用环境配置器配置环境变量,比如JAVA_PATH等,使用资源分配器获得本机资源,使用数据同步器把数据同步到ZOOKEEPER上,使用参数配置器配置相应的参数,使用下载器从ZOOKEEPER上下载数据,使用启动器启动程序,使用监控器,监控程序的执行。最后程序结束时,调用清理器清理软件的残留。如图3所示,本实施例还提供一种采用hadoop集群自动部署系统的自动部署方法,包括S1:初始化系统;如图4所示,作为优选,该步骤进一步分为启动所述主控器;所述部署器初始化hadoop集群信息结构;所述部署器初始化hadoop集群信息结构,master为0,slaves为O。收集机器名、IP、CPU个数、内存总量、硬盘总量以及hadoop节点的信息等并将其封装为心跳信息,然后调用主控器提供的心跳信息接口将心跳信息发送给主控器。初始化时,假设机器内部没有运行hadoop节点;启动作业提交子模块。S2 :用户使用所述命令控制器提交作业;如图5所示,作为优选,该步骤进一步分为用户根据自身的需求在所述存储结构中建立工作目录;提交任务前,用户必须在存储结构中建立自己的工作目录,把处理程序打成jar包放到用户所建立的那个目录里,同时也要把数据放到相同的目录中。所述命令控制器根据用户的需求生成作业信息表并提交作业;命令控制器负责根据用户填写的hadoop的环境配置表并提交作业。预先处理作业描述信息表。根据信息表中的num属性,把作业信息表变成这么多数字的相同任务。一般在第二类任务时,num属性才会大于或者等于一。命令控制器将调用主控器提供的作业提交接口将作业发送给主控器,并通过此调用接口收到主控器返回的作业I D。S3 :所述主控器依据S2所提交的作业,对作业进行分析,并以任务的形式对作业进行分配;如图6所示,作为优选,该步骤进一步分为所述主控器对所述命令控制器提交的作业进行分析;当用户提交作业时,主控器分析提交的作业动作。若是作业提交请求则将作业描述信息存放于作业等待队列中等待分配;若是作业删除请求则在作业等待队列、作业分发队列、作业运行队列中查找需要被删除的作业,若该作业在作业等待队列中则将其直接删除。若在作业分发队列或作业运行队列中则将其移动到作业删除队列以等待分发。所述主控器依据对作业的分析结果,并以任务的形式对作业进行分配;如果是第一任务,则检查机群中是否有hadoop集群,如果有,任务执行失败;如果没有,则执行任务。如果指定了特定的机器,则把master任务分到那台机器上。如果是第二类任务,则检查机群中是否有master,如果有,任务继续执行,随机的把slave分配到空闲的机器上。如果是第三任务,则检查机群中是否有hadoop集群;如果没有,则先部署默认的hadoop集群,然后再执行第三类任务;如果有,则径直执行第三类任务。S4 :所述部署器接收到S3所分配的任务进行部署。
作为优选,该步骤进一步分为主节点部署和从节点部署如图7所示,所述主节点部署过程如下所述所述部署器接收所述主控器分配的任务;所述环境配置器配置环境变量;在本机给当前程序创建一个工作目录,从存储结构里下载相应的软件包到此目录下,在此目录下解压软件包,设置软件运行的环境变量$JAVA_PATH,并加入到环境变量表中,执行脚本执行配置程序hadoop-config. sh,初始化hadoop执行环境。所述资源分配器获取所述部署器所在的本机的详细信息;初始化资源列表获取本机详细信息。比如IP,预留的网络端口,操作系统,芯片架构,芯片核心数等参数,获取主节点IP,分配端口 port。所述数据同步器将部署器所接收到的任务数据同步到所述存储结构中;在ZOOKEEPER上创建/hadoop节点,在节点上写上IP和起始端口信息,这些信息是字符。所述参数配置器配置部署所述任务的相关参数;把无类型的字符流转换成相应的类型,并赋给相应的变量,配置HDFS,将写入HDFS的name: fs. default, name和value:hdfs://ip:port 到 core-site. xml,配置 map reduce 主节点信息,将主节点 IP 信息和起始端口信息写入mapred-site. xml,配置map reduce的http端口,将分配的端口号写入至丨J mapred-site. xml。所述启动器启动该任务;产生一个新的子进程,在子进程中执行程序,同时配上参数列表和环境变量表。所述监控器监控该任务的`执行状态;分配一个线程作为影子监控子程序的执行,接受针对本程序的消息,如果接到从主控器停止的消息,向程序发送停止的信号,如果接到重新开始的信号就重新开始程序的执行,同时,使用WaitpidO监控程序内部的信号,程序结束或是错误时都会向主控器进行报告。任务执行完成后,所述清理器清理执行任务时的所有工作目录及残留信息;停止程序,回收端口,把端口放回到资源列表中,清理工作目录。如图8所示,所述从节点部署过程如下所述所述部署器接收所述主控器的分配任务;所述环境配置器设置环境变量;在本机给当前程序创建一个工作目录,从共享文件系统里下载相应的软件包到此目录下,在此目录下解压软件包,设置软件运行的环境变
并加入到环境变量表中,执行脚本执行配置程序hadoop-config. sh,初始化hadoop执行环境;所述资源分配器获取所述部署器所在的本机的详细信息;初始化资源列表获取本机详细信息。比如IP,预留的网络端口,操作系统,芯片架构,芯片核心数等参数;所述数据下载器从所述存储结构中下载任务数据;从ZOOKEEPER上/hadoop节点上下载数据主节点IP和起始端口的信息,如果没有则一直等待;所述参数配置器配置部署所述任务的相关参数;所述启动器启动该任务;产生一个新的子进程,在子进程中执行程序,同时配上参数列表和环境变量表;所述监控器监控该任务的执行状态;分配一个线程作为影子监控子程序的执行,接受针对本程序的消息,如果接到从主控器停止的消息,向程序发送停止的信号,如果接到重新开始的信号就重新开始程序的执行,同时,使用waitpidO监控程序内部的信号,程序结束或是错误时都会向主控器进行报告;任务执行完成后,所述清理器清理执行任务时的所有工作目录及残留信息;停止程序,回收端口,把端口放回到资源列表中,清理工作目录。在现有技术当中,配置繁琐,需要对于Mesos源码十分熟悉,而且还要对另外的计算框架非常精通。本发明提供了一种hadoop集群的自动部署系统及方法,通过设置命令控制器,主控器,部署器,和存储结构,且通过所述部署器内的部署模块进一步设置有环境配置器,资源分配器,参数配置器,数据同步器,启动器,数据下载器,监控器和清理器,使hadoop集群的自动部署和回收得以实现,并且能动态监测程序的运行。系统使用者(即用户)无需精通本系统的计算框架,配置简单,仅仅需要填写环境配置表;且该系统结构简单,维护起来方便,大幅度提高维护效率,进而减少人力成本。特别适合在云环境下自动部署,稍加改进也可以实现部署其他软件。以上所述实施例仅表达了本发明的一种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种hadoop集群的自动部署系统,其特征在于,包括 命令控制器,用于根据用户需求生成作业描述信息并提交作业; 主控器,用于接收并处理所述命令控制器所提交的作业; 部署器,用于向所述主控器提供心跳信息,并接收主控器所分配的任务,进而部署相关任务; 存储结构,用于存储用户提交的应用数据、应用的计算结果及日志。
2.根据权利要求1所述的hadoop集群的自动部署系统,其特征在于所述主控器包括作业提交子模块,用于将所述命令控制器生成的作业描述信息作为输入参数,并分析作业描述信息,依据所述作业描述信息进行作业。
3.根据权利要求1所述的hadoop集群的自动部署系统,其特征在于,所述部署器包括部署模块,用于部署所述主控器所分配的任务。
4.根据权利要求3所述的hadoop集群的自动部署系统,其特征在于,所述部署模块包括 环境配置器,用于设置环境变量; 资源分配器,用于初始化资源列表,并获取本机详细信息; 参数配置器,用于配置所述任务的参数; 启动器,用于启动任务产生新的子进程; 监控器,用于监控任务的运行状态; 清理器,用于清理所述任务运行时产生的所有工作目录及残留信息。
5.根据权利要求3所述的hadoop集群的自动部署系统,其特征在于,所述部署模块还包括 数据同步器,用于将所述任务中的数据同步到存储结构中。
6.根据权利要求3所述的hadoop集群的自动部署系统,其特征在于,所述部署模块还包括 数据下载器,用于从所述存储结构中下载数据。
7.一种采用权利要求1所述的hadoop集群自动部署系统的自动部署方法,其特征在于,包括 51:初始化系统; 52:用户使用所述命令控制器提交作业; 53:所述主控器依据S2所提交的作业,对作业进行分析,并以任务的形式对作业进行分配; 54:所述部署器接收S3所分配的任务进行部署。
8.根据权利要求7所述的方法,其特征在于所述SI进一步包括 启动所述主控器; 所述部署器初始化hadoop集群信息结构; 启动作业提交子模块。
9.根据权利要求7所述的方法,其特征在于所述S2进一步包括 用户根据自身的需求在所述存储结构中建立工作目录; 所述命令控制器根据用户的需求生成作业信息表并提交作业。
10.根据权利要求7所述的方法,其特征在于所述S3进一步包括所述主控器对所述命令控制器提交的作业进行分析;所述主控器依据对作业的分析结果,以任务的形式对所述作业进行分配。
11.根据权利要求7所述的方法,其特征在于所述S4进一步包括主节点部署过程所述部署器接收所述主控器分配的任务;所述环境配置器设置环境变量;所述资源分配器获取所述部署器所在的本机的详细信息;所述数据同步器将部署器所接收到的任务数据同步到所述存储结构中;所述参数配置器配置部署所述任务的相关参数;所述启动器启动该任务;所述监控器监控该任务的执行状态;任务执行完成后,所述清理器清理执行任务时的所有工作目录及残留信息。
12.根据权利要求7所述的方法,其特征在于所述S4进一步包括从节点部署过程所述部署器接收所述主控器分配的任务;所述环境配置器设置环境变量;所述资源分配器获取所述部署器所在的本机的详细信息;所述数据下载器从所述存储结构中下载任务数据;所述参数配置器配置部署所述任务的相关参数;所述启动器启动该任务;所述监控器监控该任务的执行状态;任务执行完成后,所述清理器清理执行任务时的所有工作目录及残留信息。
全文摘要
本发明提供了一种hadoop集群的自动部署系统及方法,包括命令控制器,用于根据用户需求生成作业描述信息并提交作业;主控器,用于接收并处理所述命令控制器所提交的作业描述信息;部署器,用于向所述主控器提供心跳信息,并接收主控器所分配的任务,进而部署相关任务;存储结构,用于存储用户提交的应用数据、应用的计算结果及日志;且通过所述部署器内的部署模块进一步设置有环境配置器,资源分配器,参数配置器,数据同步器,启动器,数据下载器,监控器和清理器,使hadoop集群的自动部署和回收得以实现,并且能动态监测程序的运行。
文档编号G06F9/50GK103064742SQ201210572570
公开日2013年4月24日 申请日期2012年12月25日 优先权日2012年12月25日
发明者须成忠, 王明阳, 洪爵, 皇甫亚光 申请人:中国科学院深圳先进技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1