首页> 中国专利> 多个Hadoop集群的访问方法、装置和计算机设备

多个Hadoop集群的访问方法、装置和计算机设备

摘要

本发明提供了一种多个Hadoop集群的访问方法、装置和计算机设备,方法包括:确定每个Hadoop集群已开启kerberos认证且各个Hadoop集群的KDC不同的情况下,获取kerberos认证对应的krb5.conf文件;将多个krb5.conf文件进行合并处理;确定每个YARN ResourceManger组件和HDFS NameNode组件的主机名hostname,及确定kerberos认证对应的域Realm;确定多个hostname和Realm间的映射,并将hostname和Realm间的映射设置在domain_realm栏;判断本地缓存中是否存在UserGroupInformation对象;如果本地缓存中存在UserGroupInformation对象,则获取UserGroupInformation对象,并对多个Hadoop集群进行访问。由此,可以实现一个客户端同时访问开启kerberos并且KDC不同的多个Hadoop集群,可以提高访问效率。

著录项

  • 公开/公告号CN114579516A

    专利类型发明专利

  • 公开/公告日2022-06-03

    原文格式PDF

  • 申请/专利权人 杭州玳数科技有限公司;

    申请/专利号CN202210166936.6

  • 发明设计人 郝卫亮;

    申请日2022-02-23

  • 分类号G06F16/13;G06F16/182;H04L9/40;

  • 代理机构常州佰业腾飞专利代理事务所(普通合伙);

  • 代理人陈红桥

  • 地址 311121 浙江省杭州市余杭区仓前街道余杭塘路2301号海智中心6幢102室-1楼、102室-2楼

  • 入库时间 2023-06-19 15:32:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-06-03

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及大数据技术领域,具体涉及一种多个Hadoop集群的访问方法、一种多个Hadoop集群的访问装置和一种计算机设备。

背景技术

对于多个Hadoop(Hadoop是分布式系统基础架构)集群,集群之间不能互相访问,尤其是在每个集群都开启了kerberos并且每个集群的kerberos各有一个不同KDC(KeyDistribution Center,密钥分发中心)这种场景下,同一个客户端更是不能同时访问这样的多个Hadoop集群,其中,Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证,为了对集群进行访问,相关技术中通常的做法是在多个Hadoop集群kerberos之间配置互信。

然而,相关技术中的配置kerberos互信过程繁琐也可能增加不安全性,并且有些情况下集群与集群之间是不允许配置互信的,因此同一个客户端无法安全地、同时访问多个开启kerberos且没有配置互信的Hadoop集群。

发明内容

本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的第一个目在于提出一种多个Hadoop集群的访问方法,可以提高访问效率。

本发明的第二个目的在于提出一种多个Hadoop集群的访问装置。

本发明的第三个目的在于提出一种计算机设备。

为达到上述目的,本发明第一方面实施例提出了一种多个Hadoop集群的访问方法,包括以下步骤:

确定每个Hadoop集群已开启kerberos认证且各个所述Hadoop集群的KDC不同的情况下,获取所述kerberos认证对应的krb5.conf文件;

将多个所述krb5.conf文件进行合并处理;

确定每个Hadoop集群的YARN ResourceManger组件和HDFS NameNode组件,并确定每个所述YARN ResourceManger组件和所述HDFS NameNode组件的主机名hostname,及确定所述kerberos认证对应的域Realm;

确定多个所述hostname和所述Realm间的映射,并将所述hostname和所述Realm间的映射设置在domain_realm栏;

判断本地缓存中是否存在UserGroupInformation对象;

如果本地缓存中存在所述UserGroupInformation对象,则获取所述UserGroupInformation对象,并对多个Hadoop集群进行访问。

另外,根据本发明上述实施例提出的多个Hadoop集群的访问方法还可以具有如下附加的技术特征:

根据本发明的一个实施例,将多个所述krb5.conf文件进行合并处理,包括:

从多个所述krb5.conf文件中随机选取一个krb5.conf文件作为基准krb5.conf文件;

以所述基准krb5.conf文件作为合并的基准,将多个所述krb5.conf文件进行合并处理。

根据本发明的一个实施例,多个Hadoop集群的访问方法,还包括:

如果本地缓存中不存在所述UserGroupInformation对象,则设置JVM环境参数java.security.krb5.conf来指定合并后的krb5.conf文件路径;

通过调用UserGroupInformation.loginUserFromKeytabAndReturnUGI方法创建UserGroupInformation对象,并将创建好的UserGroupInformation对象存储于本地缓存中。

根据本发明的一个实施例,在对多个Hadoop集群进行访问之前,还包括:

获取票据信息,并判断所述票据信息是否过期;

在所述票据信息过期时,重新创建UserGroupInformation对象。

根据本发明的一个实施例,对多个Hadoop集群进行访问,包括:

调用doAs方法对Hadoop集群进行访问。

为实现上述目的,本发明第二方面实施例提出了一种多个Hadoop集群的访问装置,包括:

获取模块,用于确定每个Hadoop集群已开启kerberos认证且各个所述Hadoop集群的KDC不同的情况下,获取所述kerberos认证对应的krb5.conf文件;

合并模块,用于将多个所述krb5.conf文件进行合并处理;

确定模块,用于确定每个Hadoop集群的YARN ResourceManger组件和HDFSNameNode组件,并确定每个所述YARN ResourceManger组件和所述HDFS NameNode组件的主机名hostname,及确定所述kerberos认证对应的域Realm;

设置模块,用于确定多个所述hostname和所述Realm间的映射,并将所述hostname和所述Realm间的映射设置在domain_realm栏;

判断模块,用于判断本地缓存中是否存在UserGroupInformation对象;

访问模块,用于如果本地缓存中存在所述UserGroupInformation对象,则获取所述UserGroupInformation对象,并对多个Hadoop集群进行访问。

为实现上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本发明第一方面实施例提出的多个Hadoop集群的访问方法。

本发明的技术方案,可以实现同一个客户端同时访问开启kerberos并且KDC不同的多个Hadoop集群,可以提高访问效率。

附图说明

图1为本发明实施例的多个Hadoop集群的访问方法的流程图。

图2为本发明一个实施例的多个krb5.conf文件进行合并的流程图。

图3为本发明一个实施例的在同一个客户端中完成对多个集群的kerberos认证的流程图。

图4为本发明实施例的多个Hadoop集群的访问装置的方框示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前进行参数处理时缺乏灵活性和可扩展性,导致任务提交效果较差,例如在任务类型逐渐增多,每种任务的参数处理各不相同,对应的处理逻辑就变得难以维护。尤其是在任务需要根据不同集群环境的去构建任务运行参数信息的时候。比如任务在集群A执行的用户需要为admin,在集群B执行的用户需要为root,需要根据环境的不同来动态处理运行参数之一----提交用户。如何实现一种高扩展的参数处理方式显得尤为重要。如何将参数处理设计成简单易扩展成为了要解决的首要问题。

图1为本发明实施例的多个Hadoop集群的访问方法的流程图。

本发明实施例,应用场景可以是多个开启kerberos且没有配置互信的Hadoop集群,其执行主体可以是客户端,通过本发明实施例,可以使同一个客户端可以同时访问多个开启kerberos且没有配置互信的Hadoop集群。

如图1所示,多个Hadoop集群的访问方法包括以下步骤:

S1,确定每个Hadoop集群已开启kerberos认证且各个Hadoop集群的KDC不同的情况下,获取kerberos认证对应的krb5.conf文件。

其中,每个Hadoop中包含YARN、HDFS等组件,krb5.conf为kerberos的配置文件,kerberos与Hadoop可以是一对多的关系,Hadoop开启kerberos需要将krb5.conf拷贝过来,进行认证的时候会用到。

具体地,在需要对多个待访问的Hadoop集群进行访问时,首先确定其均已开启kerberos认证,且可确定各个集群的kerberos各有一个不同KDC,之后,获取各个kerberos认证对应的krb5.conf文件,即可获取到多个krb5.conf文件。

S2,将多个krb5.conf文件进行合并处理。

具体地,可以程序自动化的方式合并步骤S1中获取到的krb5.conf文件,涉及的程序编程语言可以是Java语言,从而节省大部分的人工操作。

S3,确定每个Hadoop集群的YARN ResourceManger组件和HDFS NameNode组件,及确定每个YARN ResourceManger组件和HDFS NameNode组件的主机名hostname,并确定kerberos认证对应的域Realm。

需要说明的是,Hadoop集群具体来说包含两个组件:HDFS组件和YARN组件,两者逻辑上分离,但物理上常在一起。YARN组件负责海量数据运算时的资源调度,YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。HDFS组件负责海量数据的存储,HDFS组件中的角色主要有DataNode、Secondary和NameNode。

本发明实施例中,YARN ResourceManger组件是指YARN中的ResourceManger组件,其中,ResourceManager是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等。HDFS NameNode组件是指YARN中的NameNode组件。

需要说明的是,Realm为KDC中的一个域数据库。

具体地,先确定每个Hadoop集群的YARN ResourceManger组件和HDFS NameNode组件的主机名hostname,并确定kerberos认证对应的域Realm,Realm的数量可以是多个。

S4,确定多个hostname和Realm间的映射,并将hostname和Realm间的映射设置在domain_realm栏。

需要说明的是,认证时会查找Realm,查找的逻辑是先从domain_realm中根据主机名匹配Realm,如果没有找到则使用libdefaults中的default_realm。因此,将hostname和Realm间的映射放置在domain_realm一栏,方便对Realm的查找。

S5,判断本地缓存中是否存在UserGroupInformation对象。

S6,如果本地缓存中存在UserGroupInformation对象,则获取UserGroupInformation对象,并对多个Hadoop集群进行访问。

其中,UserGroupInformation为Hadoop中实现kerberos认证而实现的一个类。在本地内存中可使用map的数据结构将UserGroupInformation对象缓存下来。

具体地,客户端在其本地缓存中尝试获取UserGroupInformation对象,如果本地缓存中存在UserGroupInformation对象,则获取到UserGroupInformation对象;如果本地缓存中不存在UserGroupInformation对象,则未获取到UserGroupInformation对象。在获取到UserGroupInformation对象后,对多个Hadoop集群进行访问,如此实现对多个Hadoop集群已开启kerberos认证且各个Hadoop集群的KDC不同的Hadoop集群的同时访问。

也就是说,本发明实施例实现了同一个客户端可同时访问开启kerberos并且KDC不同的多套Hadoop集群,这样省去了对多套Hadoop集群进行kerberos互信的繁琐配置流程,从而提高了对接多套开启kerberos认证Hadoop集群的效率。

本发明实施例的多个Hadoop集群的访问方法,可以实现同一个客户端同时访问开启kerberos并且KDC不同的多个Hadoop集群,可以提高访问效率。

在本发明的一个实施例中,上述步骤S2的,将多个krb5.conf文件进行合并处理,可包括:从多个krb5.conf文件中随机选取一个krb5.conf文件作为基准krb5.conf文件;以基准krb5.conf文件作为合并的基准,将多个krb5.conf文件进行合并处理。

具体而言,如图2所示,在开始合并时,首先遍历多个krb5.conf文件,并从krb5.conf文件中随机选取一个krb5.conf文件作为基准文件,例如可将第一个Hadoop集群的krb5.conf文件作为基准文件,之后,将后面集群的krb5.conf文件内容追加在第一个krb5.conf文件上面,相同的option以第一个krb5.conf文件为准不会覆盖。之后,在domain_realm一栏填充hostname和Realm的映射。

在本发明的一个实施例中,多个Hadoop集群的访问方法还包括:如果本地缓存中不存在UserGroupInformation对象,则设置JVM环境参数java.security.krb5.conf来指定合并后的krb5.conf文件路径;通过调用UserGroupInformation.loginUserFromKeytabAndReturnUGI方法创建UserGroupInformation对象,并将创建好的UserGroupInformation对象存储于本地缓存中。

在一个示例中,在对多个Hadoop集群进行访问之前,还可包括:获取票据信息,并判断票据信息是否过期;在票据信息过期时,重新创建UserGroupInformation对象。

进一步地,对多个Hadoop集群进行访问,可包括:调用doAs方法对Hadoop集群进行访问。

具体而言,如图3所示,在获取UserGroupInformation对象时,如果UserGroupInformation对象不存在于本地缓存中,则创建UserGroupInformation对象,即先设置JVM环境参数java.security.krb5.conf来指定合并后krb5.conf文件路径(把合并好的krb5.conf文件路径赋值给java.security.krb5.conf),然后通过调用UserGroupInformation.loginUserFromKeytabAndReturnUGI方法创建UserGroupInformation对象,并将创建好的UserGroupInformation对象放到缓存中,并可使用“集群名+组件名+线程名”作为缓存的命名。如果缓存中存在UserGroupInformation对象,则直接获取UserGroupInformation对象后根据票据信息校验票据是否过期,如果过期则重新创建UserGroupInformation对象。

在获取到UserGroupInformation对象后,调用doAs方法进行对hadoop集群的访问,由此即可在同一个客户端中完成对多个集群的kerberos认证,涉及的编程语言可以是java。

本发明实施例应用到了袋鼠云数栈中。在数栈控制台上可以通过界面化的方式对接多个hadoop集群,对接过程比较简单只需要上传hadoop conf zip包(包含core-site.xml,hdfs-site.xml,yarn-site.xml)和kerberos zip包(包含keytab和krb5.conf),每个组件上配置好kerberos后可以点击编辑按钮便会弹出合并krb5.conf的界面,点击krb5.conf合并按钮后台一键进行合并。

综上,本发明实施例的多个Hadoop集群的访问方法,在任务提交之前,实现了一种高扩展的参数处理方式,使参数处理简单易扩展,具有灵活、易扩展的优点,解决了相关技术中处理逻辑难以维护的问题。

图4为本发明实施例的多个Hadoop集群的访问装置的方框示意图。

如图4所示,该多个Hadoop集群的访问装置,包括:获取模块10、合并模块20、确定模块30、设置模块40、判断模块50和访问模块60。

获取模块10用于确定每个Hadoop集群已开启kerberos认证且各个Hadoop集群的KDC不同的情况下,获取kerberos认证对应的krb5.conf文件;合并模块20用于将多个krb5.conf文件进行合并处理;确定模块30用于确定每个Hadoop集群的YARNResourceRanger组件和HDFS NameNode组件,并确定每个YARN ResourceManger组件和HDFSNameNode组件的主机名hostname,及确定kerberos认证对应的域Realm;设置模块40用于确定多个hostname和Realm间的映射,并将hostname和Realm间的映射设置在domain_realm栏;判断模块50用于判断本地缓存中是否存在UserGroupInformation对象;访问模块60用于如果本地缓存中存在UserGroupInformation对象,则获取UserGroupInformation对象,并对多个Hadoop集群进行访问。

需要说明的是,本发明实施例中多个Hadoop集群的访问装置的其他具体实施方式,可参见上述多个Hadoop集群的访问方法的具体实施方式,为避免冗余,此处不再赘述。

本发明实施例的多个Hadoop集群的访问装置,可以实现一个客户端同时访问开启kerberos并且KDC不同的多个Hadoop集群,且可以提高访问效率。

对应上述实施例,本发明还提出一种计算机设备。

本发明实施例的计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该计算机程序时,可实现根据本发明上述实施例的多个Hadoop集群的访问方法。

根据本发明实施例的计算机设备,处理器执行计算机程序时,确定每个Hadoop集群已开启kerberos认证且各个Hadoop集群的KDC不同的情况下,获取kerberos认证对应的krb5.conf文件;将多个krb5.conf文件进行合并处理;确定每个Hadoop集群的YARNResourceManger组件和HDFS NameNode组件,并确定每个YARN ResourceManger组件和HDFSNameNode组件的主机名hostname,及确定kerberos认证对应的域Realm;确定多个hostname和Realm间的映射,并将hostname和Realm间的映射设置在domain_realm栏;判断本地缓存中是否存在UserGroupInformation对象;如果本地缓存中存在UserGroupInformation对象,则获取UserGroupInformation对象,并对多个Hadoop集群进行访问。由此,可以实现一个客户端同时访问开启kerberos并且KDC不同的多个Hadoop集群,且可以提高访问效率。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号