首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

基于Alluxio的多HDFS集群的路由方法及装置 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:苏宁云商集团股份有限公司

摘要:本发明公开了一种基于Alluxio的多HDFS集群的路由方法及装置,所述方法包括:将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表;HDFS客户端去Alluxio的主节点Master端获取路由表并将其拉取本地;根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群。本发明解决了Federation加Viewfs配置方案管理维护不便的问题。

主权项:1.一种基于Alluxio的多HDFS集群的路由方法,其特征在于,所述方法包括:将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表;HDFS客户端去Alluxio的主节点Master端获取路由表并将其拉取到本地;根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群;在HDFS的客户端利用获取的路由表去解析HDFS客户端的RPC的请求路径后,通过将路径在路由表做前缀匹配,找到该路径位于的HDFS集群,并将该请求转发给各HDFS集群的NameNode中,所述NameNode收到后给HDFS的客户端返回响应;其中,所述获取路由表进一步包括:在HDFS的客户端添加Alluxio的客户端JAR包,所述Alluxio的客户端JAR包作为HDFS的客户端的插件去获取Alluxio的主节点Master端的路由表;在HDFS的客户端获取路由表信息后,还对获取的路由表进行缓存处理,形成的所述路由表采用HashMap的数据结构实现。

全文数据:基于Alluxio的多HDFS集群的路由方法及装置技术领域本发明属于大数据生态系统分布式存储领域,具体地说,是涉及一种基于Alluxio的多HDFS集群的路由方法及装置。背景技术Hadoop分布式文件系统HDFS是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。多台计算机联网协同工作有时也称为一个集群就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统。分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储。换句话说,它们是横跨在多台计算机上的存储系统。存储在分布式文件系统上的数据自动分布在不同的节点上。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理来自网络和其它地方的超大规模数据提供所需的扩展能力。HDFS集群借此来存储所有需要分析的输入数据以及由MapReduce作业生成的任何输出结果。HDFS是一种基于数据块的文件系统,它跨越集群中的多个节点,并且使用用户数据可以存储在文件中。它提供了传统的分层文件组织,以便用户或应用程序可以操作创建、重命名、移动或删除文件和目录。它还提供了一个流接口,借助于该接口,可使用MapReduce框架运行所选的任何应用程序。大数据中,HDFS集群以Master-Slave模式运行,主要有两类节点:一个Namenode即Master和多个Datanode即Slave。NameNode名字节点:单一主元数据服务器,其中包含每个文件、文件位置以及这些文件及其所在的DataNode内的所有数据块的内存映射;Namenode管理着文件系统的Namespace,它维护着文件系统树filesystemtree以及文件树中所有的文件和文件夹的元数据metadata。DataNode数据节点:每个集群节点均有一个从属DataNode,它为读写请求提供服务以及按照NameNode的指令执行数据块创建、删除和复制;Datanode是文件系统的工作节点,他们根据客户端或者是NameNode的调度存储和检索数据,并且定期向NameNode发送他们所存储的块block的列表。由于是单个Namenode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个Namenode的吞吐量。在只有一个Namenode的HDFS中,此Namenode的宕机无疑会导致整个集群不可用。目前的Hadoop集群都是单Namenode对外提供服务。明显地,当用户量大时会出现服务宕机问题,就算备份standby服务器激活也会导致崩溃。因此,对于分布式存储Hadoop集群,主节点的元数据和客户端的RPC远程过程调用协议请求通常会成为性能瓶颈,为解决性能瓶颈问题,现在一般使用“Federation+viewfs”来做集群的横向扩展。对于HDFS而言,Federation是Hadoop-0.23.0中为解决HDFS单点故障而提出的NameNode水平扩展方案。该方案可以为HDFS服务创建多个Namenode,从而提高集群的扩展性和隔离性。为了水平拓展Namenode服务,Federation提供了针对多个Namenode的管理服务参见“http:hadoop.apache.orgdocscurrenthadoop-project-disthadoop-hdfsFederation.html”,这些Namenode被聚合在一个大的集群中每个Namenode之间不需要任何交流。Datanode用于公共的存储,每个Namenode都会在Datanode有自己的阻塞池blockpools,所以多个Namenode在同一台机器间互不影响数据,其中一台Namenode并不影响该Datanode向其他Datanode汇报数据,Federation提供无限制的水平拓展。对于HDFS而言,ViewFsViewFileSystem,“视图文件系统”提供了管理多个Hadoop文件系统命名空间的方式。在HDFS联盟的集群中有多个NameNode因此有多个命名空间时,ViewFs特别有用。ViewFs与某些Linux或Unix系统的客户端挂载表类似,可以被用于创建个性化的命名空间视图和整个集群共同的视图。由于ViewFs需要在所有客户端进行配置,管理起来比较复杂,不同的客户端需要不同的配置,新增客户端或者新增用户目录,都需要全量变更客户端的配置,增加了配置管理的管理负担和后期运维的复杂性。发明内容本发明的目的是,提供了一种基于Alluxio的多HDFS集群的路由方法及装置,以解决原有的“Federation+ViewFs”配置方案管理维护不便的问题。为解决上述技术问题,本发明采用的技术方案如下:一种基于Alluxio的多HDFS集群的路由方法,所述方法包括:将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表;HDFS客户端去Alluxio的主节点Master端获取路由表并将其拉取本地;根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群。进一步地,所述获取路由表进一步包括:在HDFS的客户端添加Alluxio的客户端JAR包,所述Alluxio的客户端JAR包作为插件去获取Alluxio的主节点Master端的路由表。进一步地,在HDFS的客户端利用获取的路由表去解析HDFS客户端的RPC的请求路径后,通过将路径在路由表做前缀匹配,找到该路径位于的HDFS集群,并将该请求转发给各HDFS集群的NameNode中,所述NameNode收到后给HDFS的客户端返回响应。进一步地,HDFS中需要做路由的路径在AlluxioMaster的挂载的方式为同名挂载。进一步地,在HDFS的客户端获取路由表信息后,还对获取的路由表进行缓存处理。进一步地,形成的所述路由表采用HashMap的数据结构实现。进一步地,Alluxio的客户端和主节点Master端的连接为短连接。基于本发明的另一构思,还提供一种基于Alluxio的多HDFS集群的路由装置,所述装置包括:路由表信息生成模块,用于将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表;路由信息提取模块,用于通过Alluxio的主节点Master端获取路由表并将其拉取到本地客户端;路由信息转发模块,用于根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群。进一步地,在所述路由信息提取模块的客户端安装有插件,所述插件为Alluxio的客户端JAR包。进一步地,所述装置还包括:缓存模块,用于对路由信息提取模块对拉取的路由表进行缓存处理,按序进行解析和转发。与现有技术相比,本发明所述的一种基于Alluxio的多HDFS集群的路由方法及装置,达到了如下技术效果;1、本发明将路由表放在AlluxioMaster中,该Master是高可用的,所以路由表也是高可用的;2、本发明的路由功能以插件的形式进行提供,对客户端是用户是透明的,也便于后期的配置维护;3、本发明将Alluxio客户端和Master端的连接由本身的长连接改为短连接,提高服务的可用性,稳定性和吞吐量;4、本发明的HDFS客户端可以通过路径解析,然后请求相应的HDFSnamenode,故同时访问多个HDFS集群的数据,然后进行融合处理,从而实现跨集群的数据访问,多集群之间可互相交互数据;5、本发明将HDFS集群进行拆分以后,NameNode对HDFS客户端的RPC响应时间也提升了许多,尤其在多集群的情况下,性能会进一步提升。附图说明图1为本发明实施例所述的基于Alluxio的多HDFS集群的路由方法的流程示意图。图2为实现本发明实施例所述的基于Alluxio的多HDFS集群的路由方法的架构原理图。图3为采用本发明实施例所述的基于Alluxio的多HDFS集群的路由方法进行压力测试的逻辑架构图。图4为本发明实施例所述的基于Alluxio的多HDFS集群的路由装置的结构原理图。具体实施方式为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述,但不作为对本发明的限定。Alluxio是一个基于内存的分布式文件系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。在大数据领域,最底层的是分布式文件系统HDFS,如AmazonS3、ApacheHDFS等,而较高层的应用则是一些分布式计算框架,如Spark、MapReduce、HBase、Flink等,这些分布式框架,往往都是直接从分布式文件系统中读写数据,效率比较低,性能消耗比较大。而如果我们将其架构与底层分布式文件系统与上层分布式计算框架之间,以文件的形式在内存中对外提供读写访问服务的话,那么Alluxio可以为那些大数据应用提供一个数量级的加速,而且它只要提供通用的数据访问接口,就能很方便的切换底层分布式文件系统。与其他诸如HDFS、HBase、Spark等大数据相关框架一致,Alluxio也是一个主从结构的系统。它的主节点为Master,负责管理全局的文件系统元数据,比如文件系统树等,而从节点为Worker,负责管理本节点数据存储服务。另外,Alluxio还有一个组件为Client,为用户提供统一的文件存取服务接口。当应用程序需要访问Alluxio时,通过客户端先与主节点Master通讯,获取对应文件的元数据,然后再和对应Worker节点通讯,进行实际的文件存取操作。所有的Worker会周期性地发送心跳给Master,维护文件系统元数据信息和确保自己被Master感知仍在集群中正常提供服务,而Master不会主动发起与其他组件的通信,它只是以回复请求的方式与其他组件进行通信。这与HDFS、HBase等分布式系统设计模式是一致的。本发明正是基于Alluxio的Master作为多HDFS集群路由功能的路由表的管理者这一基本思想,设计一种对客户端用户完全透明,配置管理维护简单,且采用单一的HDFS客户端便可以同时访问多个HDFS集群的方法。参照图1、图2所示,本发明实施例所公开的一种基于Alluxio的多HDFS集群的路由方法,包括如下过程:步骤一:在Alluxio的Master端,将HDFS中需要做路由的路径挂载到Alluxio的Master上,形成路由表MountTable;步骤二:HDFS的客户端去Alluxio的主节点Master获取路由表并将其拉取本地;步骤三:HDFS的客户端根据拉取回来的路由表进行解析,解析出RPC的请求路径,然后根据解析后的路径转发给对应的HDFS集群。具体来说,在步骤二中,所述获取路由表进一步包括:在HDFS的客户端添加Alluxio的客户端JAR包,将Alluxio的客户端JAR包作为一个插件的形式去获取Alluxio的主节点Master端的路由表,也就是说通过插件Alluxio的客户端JAR包去Alluxio的Master将路由表拉取到HDFS客户端。一方面,本发明利用Alluxio的Mount功能,将路由表放在Alluxio的Master中,而该Master是高可用的,所以路由表也是高可用的;另一方面,路由功能以插件的形式进行提供,对客户端用户也是完全透明的;此外,本发明中将Alluxio客户端和Master端的连接由本身的长连接改为短连接,在客户端和Master端完成一次通信之后,socket连接会被断开;在做路由功能的时候,获取到录取表之后,这个连接就不再使用了,所以client主动将其关闭掉,这样可以提高服务的可用性、稳定性和吞吐量。在本发明的实施例中,在HDFS客户端利用获取的路由表去解析客户端的RPC的请求路径后,通过将路径在路由表MountTable做前缀匹配,找到该路径位于的HDFS集群,并将该请求转发给各HDFS集群的NameNode中,实现路由转发功能,所述NameNode在收到后给HDFS的客户端返回响应。在本发明的实施例中,在HDFS的客户端发起向Alluxio的主节点Master端获取路由表信息时,Alluxio的客户端和Master端基于thrift-RPC框架共同实现来自Alluxio的客户端服务请求。为了实现对客户端用户透明,本发明实施例中HDFS中需要做路由的路径在AlluxioMaster的挂载方式为同名挂载,也即在路由表中,挂载点和被挂载点的路径是完全一致的,采用的命令格式如下:alluxiofsmountuserhdfs:nameserviceIduser;由于在客户端的每个请求过程中多了一次getMountTable的RPC请求和路径解析,所以性能会下降。在设计过程中为了将性能下降降低到最小,本发明做了如下的优化设计:方法一,在HDFS的客户端获取路由表信息后,还对获取的路由表进行缓存处理,从而减少每次客户端的请求都去拉取路由表。方法二,形成的所述路由表采用HashMap的数据结构实现。HashMap,是指基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作get和put提供稳定的性能。本发明实施例所公开的基于Alluxio的多HDFS集群的路由方法,可以实现多集群之间互相交互数据,HDFS客户端可以同时访问多个HDFS集群的数据,然后进行融合处理。配合参照图3所示,布置多HDFS集群路由,进行压力测试,压力测试环境如下表1所示:表1测试结果如下表2所示:表2结果表明,将HDFS集群进行拆分以后,Namenode对HDFS客户端的RPC响应时间提升接近一倍;由于将高并发的RPC请求分发到不同的Namenode上面,从而可以减低响应时间,提高吞吐量。从表2可看出,在2个HDFS集群,在50个用户进行压测的情况的时候,TPS提升40%,响应时间下降了20%;也就是说,在多集群的情况下,性能会进一步提升。参照图4所示,与上述实施例的方法相对应地,本发明还提供了一种基于Alluxio的多HDFS集群的路由装置,所述装置包括:路由表信息生成模块,用于将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表MountTable;路由信息提取模块,用于去Alluxio的主节点Master端获取路由表并将其拉取到本地客户端;路由信息转发模块,用于根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群;HDFS的Namenode则负责处理HDFS的客户端通过MountTable解析后转发过来的请求。在本实施例中,在所述路由信息提取模块的客户端安装有插件,所述插件为Alluxio的客户端JAR包,路由功能以插件的形式进行提供,对客户端用户是透明的。在本实施例中,所述装置还包括:缓存模块,用于对路由信息提取模块对拉取的路由表进行缓存处理,按序进行解析和转发,从而减少每次客户端的请求都去拉取路由表。本发明实施例中的装置用以执行上一实施例中的方法,本实施例中装置未详尽之处,请参照上一实施例中的方法所述。上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

权利要求:1.一种基于Alluxio的多HDFS集群的路由方法,其特征在于,所述方法包括:将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表;HDFS客户端去Alluxio的主节点Master端获取路由表并将其拉取到本地;根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群。2.如权利要求1所述的多HDFS集群的路由方法,其特征在于,所述获取路由表进一步包括:在HDFS的客户端添加Alluxio的客户端JAR包,所述Alluxio的客户端JAR包作为HDFS的客户端的插件去获取Alluxio的主节点Master端的路由表。3.如权利要求1所述的多HDFS集群的路由方法,其特征在于,在HDFS的客户端利用获取的路由表去解析HDFS客户端的RPC的请求路径后,通过将路径在路由表做前缀匹配,找到该路径位于的HDFS集群,并将该请求转发给各HDFS集群的NameNode中,所述NameNode收到后给HDFS的客户端返回响应。4.如权利要求1所述的多HDFS集群的路由方法,其特征在于,HDFS中需要做路由的路径在AlluxioMaster中的挂载的方式为同名挂载。5.如权利要求1所述的多HDFS集群的路由方法,其特征在于,在HDFS的客户端获取路由表信息后,还对获取的路由表进行缓存处理。6.如权利要求1所述的多HDFS集群的路由方法,其特征在于,形成的所述路由表采用HashMap的数据结构实现。7.如权利要求1所述的多HDFS集群的路由方法,其特征在于,Alluxio的客户端和主节点Master端的连接为短连接。8.一种基于Alluxio的多HDFS集群的路由装置,其特征在于,所述装置包括:路由表信息生成模块,用于将HDFS中需要做路由的路径挂载到Alluxio的主节点Master端,形成路由表;路由信息提取模块,用于通过Alluxio的主节点Master端获取路由表并将其拉取到本地客户端;路由信息转发模块,用于根据路由表中的信息解析客户端的RPC的请求路径,根据解析后的路径转发给对应的HDFS集群。9.如权利要求8所述的多HDFS集群的路由装置,其特征在于,在所述路由信息提取模块的客户端安装有插件,所述插件为Alluxio的客户端的JAR包。10.如权利要求8所述的多HDFS集群的路由装置,其特征在于,所述装置还包括:缓存模块,用于对路由信息提取模块对拉取的路由表进行缓存处理,按序进行解析和转发。

百度查询: 苏宁云商集团股份有限公司 基于Alluxio的多HDFS集群的路由方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。