Hadoop在多数据中心分布式计算环境中的应用研究

2016-12-26 16:19吴爱芝
现代商贸工业 2016年26期

吴爱芝

摘 要:针对Hadoop和MapReduce在空间大数据处理上存在的局限性,研究Hadoop平台在分布式计算环境中跨多数据中心的应用。提出了层次化Hadoop分布式计算框架,通过虚拟HDFS文件视图实现全局数据访问,由任务调度器自动将任务分解到对应的数据中心所在计算节点上,给出了任务处理和调度流程。

关键词:数据密集型计算;多数据中心;Hadoop平台;层次化分布式计算

中图分类号:TB

文献标识码:A

doi:10.19311/j.cnki.16723198.2016.26.159

1 Hadoop平台在处理空间大数据上的局限性

Hadoop和Map/Reduce是Google提出的一个软件架构,用于大规模数据集的并行运算,具有多种优点:简单方便的编程界面、高数据处理能力、高扩展能力和容错性。因此Map/Reduce已经被广泛应用在多种计算体系结构内。但是我们注意到,Hadoop运行平台仍然存在着很重大的缺陷,影响其在空间数据处理方面的广泛、深入地应用:

(1)Hadoop只能运行在一个局域网中的计算集群或者数据中心,不能支持广域网上大规模分布的多数据中心的并行数据处理。

(2)当前Hadoop不包括用户安全机制,不同节点间的通讯采用无密码的SSH机制。因此Hadoop不适合分布式、多数据中心、多管理域的空间数据架构。

(3)现有Hadoop执行流程是将一个任务(执行代码)制作副本后并发同时在多个slave node上执行,这些任务之间互不干扰和交互,子任务的分配没有什么原则和选择,可以说是一种与数据无关的任务分配和处理。

本研究致力于大规模分布式多数据中心的空间数据并行处理关键技术,力争能够在多集群计算机上并行处理分布在多数据中心的数据集,达到较高的数据吞吐能力和处理能力。

2 基于多数据中心的分布式Hadoop运行框架

Hadoop运行(runtime)系统是架构在局域网单计算集群上。本研究尝试扩展Hadoop运行系统,分布各个原Hadoop工作节点和TaskTrackler到分布式数据中心的多计算集群,进行分布式数据集的并行处理。保持Hadoop主节点(Master node)的应用程序接口不变以兼容已有的Hadoop应用程序。

可选的技术方案有两种:一种是将各类不同的集群系统硬件平台进行统一的封装(即在现有各类集群系统之上增加一层特殊用途的架构层),转化成一致的虚拟集群系统平台,在此虚拟平台上进行各类MapReduce任务的处理;另一种是直接在各个集群系统之间建立联系,实现资源的交互和任务的协同处理,该技术很接近网格计算的思想和方法。本文中借鉴了第一种思想,构建统一的资源管理和任务调度层,来汇集各集群硬件资源,记录各数据中心的信息,以数据为驱动来统一匹配和调度相应的处理资源。该平台的总体架构如图1所示,使其可以在分布式多数据中心环境中得以应用和实施。

该层次化Hadoop分布式计算架构也采用主从模式(master/slave),具有一个Master Node(也可称为Global Name Node)和多个Slave Node。Master Node是整个平台的资源调度和任务管理层,负责将用户提交的处理任务(task)分解为更小单位的子任务(sub-task),使得这些子任务可以在特定的Slave Node(对应为一个集群系统)上被执行(Master Node上的Sub- ob Adapter负责完成这种匹配),该Slave Node所对应的集群系统上具有该子任务处理所需的数据。

为实现该平台上各个子任务能分配到所处理数据所在的集群系统(数据中心)上,需要在Master Node上登记和管理各个集群系统所在数据中心上所有数据的元数据。基于大规模分布式文件系统管理的思想,本文中利用Virtual HDFS来存储全局的数据文件元信息,记录在分布式处理平台中注册和调度的所有数据中心上的数据信息。

在Virtual HDFS文件系统中,并不存储具体的数据,只记录各个集群系统中HDFS文件系统中所存储的数据文件的基础信息(主要是与位置和属性有关的元信息)。该Virtual HDFS中的信息需要依靠分布在各个数据中心的HDFS文件系统定期进行更新和交互,用户在进行数据处理任务编码和运行之前,通过Virtual HDFS中所提供的元信息来查询和选择所需要的数据文件,当任务提交后处理平台会自动地将编程模型中的数据集或文件名转换为对应的真实访问路径。

3 基于多数据中心的分布式任务处理流程

借助Master Node上记录的Virtual HDFS元信息和计算向数据迁移的思想,将空间数据处理任务映射到相应的数据中心和处理节点上(遵循location-aware manner方式),可实现空间数据处理任务的跨域分布式任务处理和计算。

在层次化Hadoop分布式处理平台中,用户通过Virtual HDFS中所提供的元信息来选择所需要的数据文件名,在所提交的代码进行编译后,这些文件名会自动转换为特定集群系统上的HDFS访问地址,并且此代码将会在数据文件存放位置的一个或若干个集群上执行,可实现计算向数据迁移的目的。

面向多计算节点的层次化Hadoop分布式计算任务处理流程可分为以下7个步骤。

步骤1:数据选择:在作业提交之前,需要由程序员从Virtual HDFS查询和选择所需要处理的数据文件,这些文件名写在MapReduce程序中,将来会在作业分解和分配时转换为对应数据中心上HDFS的具体数据访问路径。

步骤2:作业提交:用户从客户端提交作业(MapReduce程序)和其配置信息(包括:参数、输入文件名、附加资源等),作业交给Master Node上的 ob Scheduler进行排队和等待,并为该作业分配ID号。

步骤3:程序编译和分解:在队列中的作业会根据所处理数据的位置分布情况被重新编译和分解,使得各个子作业能够在处理数据所存放位置集群上被执行。若某个作业所要处理的数据都在同一集群的数据中心(某个Slave Node)上,则将任务整体打包(程序 AR文件和配置信息)发送到对应的集群上执行;若所要处理的数据存储在不同的数据中心上,则该作业将被重新编译为Map-Map-Reduce或Map-Reduce-Map- Reduce模式的程序,使得该作业的子作业依次在对应的集群上被执行。

步骤4:子作业定位和分配:依据Virtual HDFS中所记录的各个数据的位置信息,以上子作业将按照数据依赖的方式定位和分配到对应的集群上被执行,在对应集群上将启动run ob()命令并读取本地文件系统开始进行子作业的处理。

步骤5:任务提交和执行:当打包和子作业传输到对应的集群上后,在其name node上将会被 obTracker再次分解为更小的计算任务task,并分配到所从属的若干个data node上进行最终的处理和执行,该过程将由data node上的TaskTracker来调度和完成。

步骤6:子作业完成和反馈:在某个集群中的name node将监控所有data node上任务的完成状态,当某个子作业所有的task都完成后,处理结果将存储在本地HDFS文件系统目录中。该作业执行结果的访问路径将由name node主动反馈给Master Node上的Sub- ob Adapter模块。

步骤7:作业完成和反馈:Master Node上的Sub- ob Adapter模块接收到某个子作业处理结果反馈后,将检查该子作业是否还有关联的其他子作业?还是它是一个简单的作业(所有处理子作业都在同一集群上处理)?若有后继关联的其他子作业,则启动后继子作业的执行和处理(已完成子作业的输出可以根据作业要求作为后继任务的输入参数)。当同属于一个作业job的所有子作业sub-job都完成后,将最终处理结果数据文件信息在Virtual HDFS上进行注册和登记,并向 ob Scheduler模块返回处理结果文件列表,最终根据作业ID向相应的用户返回程序处理结果访问链接路径。

4 结论

本研究力争在不破坏原有Map/Reduce计算模型的基础上,针对该模型存在的不足进行适应性改造和完善,以更好地支持分布式多中心数据模式的海量空间数据处理需要,设计基于多数据中心的Map/Reduce运行模型和软件体系结构,扩展Hadoop运行系统和架构,将各个原Hadoop工作节点和TaskTrackler分布到分布式数据中心的多计算集群,实现分布式数据集的并行处理。初步形成面向多数据中心(多机群环境)的分布式任务处理平台架构和工作流程,希望能为基于Hadoop的大规模分布式海量空间数据并行处理提供参考。

参考文献

[1] Yadav Krishna R, urnima Singh.MapReduce rogramming aradigm Solving Big-Data roblems by Using Data-Clustering Algorithm.International ournal of Advanced Research in Computer Engineering & Technology,2014,3(1),7780.

[2]Lu Huang,HaiShan Chen,TingTing Hu.Research on Hadoop Cloud Computing Model and its Applications[C].The Third International Conference on Networking and Distributed Computing,2012:5963.

[3]I. Tomasic,A.Rashkovska and M. Depolli.Using Hadoop MapReduce in a Multicluster Environment[C].The 36th International Convention on Information & Communication Technology Electronics & Microelectronics,2013:345350.

[4]Chun-Yu Wang, Tzu-Li Tai, ui-Shing Shu, yh-Biau Chang and Ce-Kuen Shieh.Federated MapReduce to Transparently Run Application on Multicluster Environment [C]. IEEE International Congress on Big Data,2014:296302.

[5]Y. Luo,B. lale,Z.Guo,W.W.Li, .Qiu,Y. Sun.Hierarchical MapReduce: towards simplified across-domain data processing.Concurrency and Computation: ractice and Experience,2014,26(4):878893.