基于容器技术的Hadoop集群系统及快速构建方法与流程

文档序号:12494438阅读:363来源:国知局
基于容器技术的Hadoop集群系统及快速构建方法与流程

本发明涉及大数据和云计算技术领域,具体来讲涉及基于容器技术的Hadoop集群系统及快速构建方法。



背景技术:

在大数据技术领域,以Hadoop生态为代表的大数据技术经过多年的发展已经被越来越多的使用。软件研发人员往往需要进行多节点Hadoop集群的开发调试,经常遇到的一个问题是研发环境中的服务器数量不够用。与此类似,测试人员和运维人员在对Hadoop集群功能进行验证时,经常需要快速搭建一套多节点的Hadoop集群环境,也会遇到服务器数量不够用和部署环境配置繁琐导致时效性不高的情况。另外,对于数据分析人员,也经常有快速部署Hadoop集群进行数据分析应用的需求。

针对以上的问题和需求,过去采用基于虚拟机的解决方案,通过对计算、存储、网络等资源的复用,在一定程度上缓解服务器数量不够用的情况。但是,随着研发人员的不断增长,并不能满足各类大数据技术人员对Hadoop集群快速部署上线的需求;同时,虚拟机的解决方案也存在启动慢、时效性低的问题。

此外,当使用Docker容器技术部署Hadoop集群时,由于Hadoop集群节点间通过节点域名来相互通信,因此必须在制作Hadoop镜像的时候,手动添加静态域名解析条目,这也会导致Hadoop容器集群部署在Docker平台上的可用性非常差。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种基于容器技术的Hadoop集群系统及快速构建方法,能够快速部署Hadoop集群,解决服务器数量不够用的情况,提高Hadoop容器集群部署在Docker平台上的可用性。

为达到以上目的,本发明采取一种基于容器技术的Hadoop集群系统,包括:

客户端,用于向容器管理节点提交请求,包括部署请求和镜像打包请求;

镜像仓库,用于提供镜像的存储、查询、拉取服务;

多个容器运行节点,用于提供容器的运行环境和镜像打包环境,还用于从镜像仓库拉取相应的镜像进行部署,每个容器运行节点内设置多个容器;

容器管理节点,客户端提交请求的唯一入口,用于将请求部署的容器调度到容器运行节点运行,还用于管控容器运行节点的资源状态,向DNS服务更新成功部署容器的域名信息;

服务发现组件,用于配置共享和服务发现,以及记录容器运行节点间的通信信息,接受运行容器的注册信息。

本发明还提供一种基于容器技术的Hadoop集群快速构建方法,包括:

S1.环境初始化,配置不同容器运行节点的容器之间通过VXLAN进行通信,配置各容器运行节点的虚拟网桥不在同一网段;

S2.使用相同的基础操作系统,安装SSH和JAVA运行环境,制作DNS服务镜像、Hadoop Master服务镜像和Hadoop Slave服务镜像的打包文件,执行镜像打包,且镜像打包完成后上传至镜像仓库保存;

S3.用户通过客户端依次向容器管理节点提交部署DNS服务、Hadoop Master服务和Hadoop Slave服务的请求,容器管理节点调度相应请求到容器运行节点进行部署,并进行对应服务的注册;进入部署Hadoop Master服务的容器的命令行,运行Hadoop集群自身的启动脚本,部署完成。

在上述技术方案的基础上,所述S1中,在容器运行节点间建立一个重叠网络,在启动容器运行节点的Docker守护进程时,配置连接到服务发现组件的参数。

在上述技术方案的基础上,所述S2中,制作Hadoop Master服务镜像和Hadoop Slave服务镜像的打包文件包括,先配置基础操作系统镜像,安装SSH和JAVA运行环境;配置SSH无密码访问;再以解压方式上传Hadoop安装包;接着上传Hadoop配置文件;单独上传Slave文件;最后配置namenode格式化脚本;然后按照Dockerfile格式整理形成打包文件。

在上述技术方案的基础上,所述S2中执行镜像打包,包括,配置Hadoop配置文件中的slave文件,先写入Hadoop Master服务所部署的容器名,再根据想要部署的Hadoop Slave节点数目,循环追加写入Hadoop Slave所部署的容器名,形成的slave文件放置于镜像打包时指定的拷贝目录下;分别运行Docker的镜像打包命令,构建DNS服务镜像、Hadoop Master服务镜像和Hadoop Slave服务镜像,打包参数为镜像名和对应的Dockerfile文件目录路径。

在上述技术方案的基础上,所述S2中,将DNS服务镜像、Hadoop Master服务镜像和Hadoop Slave服务镜像的打包文件,通过Docker的加载命令,由客户端上传至镜像仓库保存。

在上述技术方案的基础上,所述S3中,客户端向容器管理节点提交部署DNS服务的请求,请求至少包含容器名、DNS服务镜像版本和容器所在的叠加网络信息,容器管理节点调度该请求到容器运行节点进行部署,并进行DNS服务注册。

在上述技术方案的基础上,所述S3中,DNS服务部署后,客户端向容器管理节点提交部署Hadoop Master服务的请求,请求至少包含容器名、Hadoop Master服务镜像、DNS地址和容器所在的叠加网络信息,容器管理节点调度该请求到容器运行节点进行部署,并进行Hadoop Master服务注册。

在上述技术方案的基础上,所述S3中,DNS服务和Hadoop Master服务部署后,客户端向容器管理节点提交部署Hadoop Slave服务的请求,请求至少包含容器名、Hadoop Slave服务镜像、DNS地址和容器所在的叠加网络信息,容器管理节点调度该请求到容器运行节点进行部署,并进行Hadoop Slave服务注册;若有多个Hadoop Slave服务,依次部署完成。

在上述技术方案的基础上,所述S3中,运行Docker命令进入部署Hadoop Master服务的容器的命令行,赋予执行权限给Hadoop集群自身的启动脚本,运行该启动脚本,待启动完成后,进行标准化的检查操作。

本发明的有益效果在于:

1、本发明基于Docker技术,对于一台物理服务器而言,Docker根据物理服务器上的配置不同,提供几十甚至上百的个容器,如果有多台物理服务器作为容器运行节点,则能提供更多的容器。因此,Hadoop集群经过Docker技术的容器化改造后,可以在Docker平台上实现快速的部署上线。

2、Hadoop集群的运行环境和服务被打包成一体化的镜像,借助容器环境一致性、应用轻量级和快速启停的特性,就可以实现快速部署的一套Hadoop集群,同时也一定程度解决了研发环境中物理服务器数量不够用的情况,节省了物理服务器资源;解决了开发、测试、运维环境不一致带来的繁琐的环境配置问题。

3、Docker容器基于内核虚拟化的资源隔离技术,多个Hadoop集群节点可以部署在同一台服务器上,解决了研发环境中的物理服务器数量不够用的问题。

4、在Hadoop集群的快速部署方面,使用集群DNS方案,增加一个部署DNS服务的容器,每一个Hadoop容器进行服务注册后,都同步更新集群DNS服务器的域名解析条目,这样Hadoop集群节点通过DNS服务请求就能访问到集群中的任意节点,从而取代了手动修改容器hosts文件带来的大量重复工作,进一步提高Hadoop集群的部署效率。

附图说明

图1为本发明实施例基于容器技术的Hadoop集群系统结构框图;

图2为本发明实施例基于容器技术的Hadoop集群快速构建方法流程图;

图3为本发明实施例Hadoop集群部署的流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

如图1所示,本发明基于容器技术的Hadoop集群系统,包括客户端、容器管理节点、镜像仓库、服务发现组件和多个容器运行节点,每个容器运行节点内设置多个容器,所有容器运行节点都采用Docker引擎作为容器运行环境,所有容器运行节点的容器中,一个部署DNS服务,一个部署Hadoop Master服务,其余部署Hadoop Slave服务。其中:

客户端,用于用户向容器管理节点提交请求,包括部署请求和镜像打包请求。

镜像仓库,用于提供镜像的存储、查询、拉取服务。

多个容器运行节点,用于提供容器的运行环境和镜像打包环境;接收到容器部署请求后,还用于从镜像仓库拉取相应的镜像进行部署。

容器管理节点,是客户端提交请求的唯一入口,在接收到容器部署请求后,用于将用户请求部署的容器调度到容器运行节点上运行;还用于管控容器运行节点的资源状态;此外,在每个Hadoop容器部署成功后,向DNS服务更新该容器的域名信息;这些信息以键值对的方式存储和提供查询,键值的内容主要有容器名、容器监听的IP地址、容器监听的端口等。

如图2所示,本发明基于容器技术的Hadoop集群快速构建方法,包括步骤:

S1.环境初始化,配置不同容器运行节点的容器之间通过VXLAN进行通信,配置各容器运行节点的虚拟网桥不在同一网段。

S2.使用相同的基础操作系统,安装SSH和JAVA运行环境,制作DNS服务镜像、Hadoop Master服务镜像和Hadoop Slave服务镜像的打包文件,执行镜像打包,且镜像打包完成后上传至镜像仓库保存;

S3.用户通过客户端依次向容器管理节点提交部署DNS服务、Hadoop Master服务和Hadoop Slave服务的请求,容器管理节点调度相应请求到容器运行节点进行部署,并进行对应服务的注册;进入部署Hadoop Master服务的容器的命令行,运行Hadoop集群自身的启动脚本,部署完成。

具体的,步骤S1视为环境初始化阶段,要配置不同容器运行节点的容器之间通过VXLAN协议进行通信的功能,实际上是在容器运行节点间建立一个重叠网络,由于基于Docker的容器平台是内置VXLAN驱动的,因此只需在初始化时做相应重叠网络配置即可。重叠网络的配置会用到容器管理节点的服务发现组件,因此,首先在启动容器运行节点的Docker守护进程时,配置连接到服务发现组件的参数;然后使用命令创建一个供Hadoop集群使用的重叠网络;再配置各容器运行节点的虚拟网桥docker0不在同一网段。

步骤S2中,三种服务镜像打包文件的制作,使用相同的基础操作系统、SSH和JAVA运行环境,能够保证后续开发、测试、运维环境的一致性,具体构建内容如下:

DNS服务镜像打包,首先配置基础操作系统镜像,安装SSH和JAVA运行环境,如果镜像构建环境可以连接互联网,则使用在线源安装,否则需要使用离线安装包。接着安装DNS服务,当前可选DNS软件很多,如最常用的dnsmasq,需要根据具体所选的DNS服务提前准备好配置文件,包括上级和本地的DNS服务地址配置,上传至安装目录。最后写上DNS服务的启动脚本,使容器运行时服务能自动启动。对以上流程按照Dockerfile格式整理,即可形成DNS服务镜像的打包文件。

Hadoop Master服务镜像打包,首先配置基础操作系统镜像,安装SSH和JAVA运行环境,如果镜像构建环境可以连接互联网,则使用在线源安装,否则需要提供离线安装包。接着配置生成SSH公钥/私钥对和无密码访问的脚本,用于Hadoop节点无密码登录;再接着使用ADD命令上传预先准备的Hadoop安装包,注意这里的Hadoop安装包是在与当前镜像使用的操作系统和JDK版本相同环境下编译所打的包;然后配置标准的Hadoop目录结构和环境变量,上传已提前准备好且写入了Hadoop运行参数的、按Hadoop标准格式命名的配置文件到相应目录下;最后写上namenode格式化脚本,使容器运行时自动运行该脚本。对以上流程按照Dockerfile格式整理即可形成Hadoop Slave服务镜像的打包文件。

Hadoop Slave服务镜像打包,与Hadoop Master服务镜像打包基本相同,区别之处在于,最后写上namenode格式化脚本,使容器运行时自动运行该脚本之前,需要配置上传Hadoop配置文件中的Slave文件到相应的目录下的命令。

步骤S2中,执行镜像打包,包括两个部分:

一是配置Hadoop配置文件中的slave文件,先写入Hadoop Master服务所部署的容器名,再根据想要部署的Hadoop Slave节点数目,循环追加写入Hadoop Slave所部署的容器名,形成的slave文件放置于镜像打包时指定的拷贝目录下。二是分别运行Docker的镜像打包命令,构建DNS服务镜像、Hadoop Master服务镜像和Hadoop Slave服务镜像,打包参数为镜像名和对应的Dockerfile文件目录路径。

所述S2中,Hadoop集群部署所需的三种服务镜像就构建完成,但这时的服务镜像保存在本地的容器运行节点之中,只供本地部署使用,因此还需要通过Docker的加载命令,将三种镜像上传至本地或者网络上的镜像仓库保存,以方便后续的各方的复用。

如图3所示,步骤S3的详细流程如下:

S301.用户通过客户端向容器管理节点提交部署DNS服务的请求,请求至少包含容器名、DNS服务镜像版本和容器所在的叠加网络信息,本实施例中,DNS服务的容器指定使用宿主机的53端口,53端口为DNS的默认端口。

S302.容器管理节点接收到部署请求后,调度该请求到容器运行节点进行部署。调度时,管理节点会根据一定的策略来计算最适合运行容器的节点,常用的策略主要有:随机调度、基于宿主机资源的调度或指定宿主机调度。基于宿主机资源的调度又分为集中式调度和分散式调度,当Hadoop集群节点不多且宿主机资源够用时,建议采用集中调度策略尽可能将Hadoop集群节点运行在一个容器运行节点上面,既减少了跨容器运行节点的网络消耗,又尽量节省整个容器平台资源给其他项目使用,当然实际实施时可以根据具体情况来决定调度策略。部署完成后,容器运行节点向容器管理节点的服务发现组件发送DNS服务注册消息,完成服务的注册。

S303.判断DNS服务是否部署成功,若是,进入S304;若否,进入S301。

S304.客户端向容器管理节点提交部署Hadoop Master服务的请求,请求至少包含容器名、Hadoop Master服务镜像、DNS地址和容器所在的叠加网络信息。

S305.容器管理节点接收到该部署请求后,调度该请求到容器运行节点进行部署。调度时,管理节点会根据一定的策略来计算最适合运行容器的节点,常用的策略主要有:随机调度、基于宿主机资源的调度或指定宿主机调度。基于宿主机资源的调度又分为集中式调度和分散式调度,当Hadoop集群节点不多且宿主机资源够用时建议采用集中调度策略尽可能将Hadoop集群节点运行在一个容器运行节点上面,既减少了跨容器运行节点的网络消耗,又尽量节省整个容器平台资源给其他项目使用,当然实际实施时可以根据具体情况来决定调度策略。部署完成后,容器运行节点向容器管理节点的服务发现组件发送Hadoop Master服务注册消息,完成服务的注册,并同步更新DNS服务,以保证DNS保存Hadoop集群中所有节点的域名解析,从而使得Hadoop集群中的任意节点都可以通过域名来相互通信。

S306.判断Hadoop Master服务是否部署成功,若是,进入S307;若否,进入S304。

S307.客户端向容器管理节点提交部署Hadoop Slave服务的请求,请求至少包含容器名、Hadoop Slave服务镜像、DNS地址和容器所在的叠加网络信息。

S308.容器管理节点接收到部署请求后,调度该请求到容器运行节点进行部署。调度时,管理节点会根据一定的策略来计算最适合运行容器的节点,常用的策略主要有:随机调度、基于宿主机资源的调度或指定宿主机调度。基于宿主机资源的调度又分为集中式调度和分散式调度,当Hadoop集群节点不多且宿主机资源够用时建议采用集中调度策略尽可能将Hadoop集群节点运行在一个容器运行节点上面,既减少了跨容器运行节点的网络消耗,又尽量节省整个容器平台资源给其他项目使用,当然实际实施时可以根据具体情况来决定调度策略。部署完成后,容器运行节点向容器管理节点的服务发现组件发送Hadoop Slave服务注册消息,完成服务在整个容器平台的注册,并同步更新DNS服务,以保证DNS保存Hadoop集群中所有节点的域名解析,从而使得Hadoop集群中的任意节点都可以通过域名来相互通信。

S309.判断Hadoop Slave服务是否部署成功,若是,进入S310;若否,进入S307。

S309.判断Hadoop Slave服务是否全部部署完成,若是,进入S311;若否,进入S307。此步骤是为了,如果有多个Hadoop Slave服务需要布置,则需要循环S307到S309,依次部署完成。

S311.运行Docker命令进入部署Hadoop Master服务的容器的命令行,赋予执行权限给Hadoop集群自身的启动脚本,并运行该启动脚本,待启动完成后,进行标准化的检查操作,保证部署完整,如无问题,至此Hadoop集群部署完成。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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