CN107122238A - 基于Hadoop云计算框架的高效迭代机制设计方法 - Google Patents

基于Hadoop云计算框架的高效迭代机制设计方法 Download PDF

Info

Publication number
CN107122238A
CN107122238A CN201710284534.5A CN201710284534A CN107122238A CN 107122238 A CN107122238 A CN 107122238A CN 201710284534 A CN201710284534 A CN 201710284534A CN 107122238 A CN107122238 A CN 107122238A
Authority
CN
China
Prior art keywords
node
functions
hadoop cloud
iterative
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710284534.5A
Other languages
English (en)
Other versions
CN107122238B (zh
Inventor
朱颢东
李红婵
南姣芬
张志锋
赵进超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Youyida Electronic Technology Co ltd
Original Assignee
Zhengzhou University of Light Industry
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou University of Light Industry filed Critical Zhengzhou University of Light Industry
Priority to CN201710284534.5A priority Critical patent/CN107122238B/zh
Publication of CN107122238A publication Critical patent/CN107122238A/zh
Application granted granted Critical
Publication of CN107122238B publication Critical patent/CN107122238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于Hadoop云计算框架研究技术领域,具体涉及Hadoop云计算框架的迭代功能研究设计,尤其涉及一种基于Hadoop云计算框架的高效迭代机制设计方法,包括:在Hadoop云计算框架中设计一个应用程序编程接口API;调用应用程序编程接口API在主节点创建一个循环迭代主体控制模块;调用应用程序编程接口API在从节点对迭代过程中被重复使用的数据进行缓存和索引;为主节点中循环迭代主体控制模块设计任务调度和容错机制。本发明提供一种基于Hadoop云计算框架的高效迭代机制设计方法,设计出一个具备高效迭代机制的E‑Hadoop云计算框架。

Description

基于Hadoop云计算框架的高效迭代机制设计方法
技术领域
本发明属于Hadoop云计算框架研究技术领域,具体涉及Hadoop云计算框架的迭代功能研究设计,尤其涉及一种基于Hadoop云计算框架的高效迭代机制设计方法。
背景技术
传统的Hadoop云计算框架并不支持高效的迭代操作,它仅通过一种较为低效的手段实现该操作:首先人为制定一系列MapReduce任务,然后再精心编写相应的驱动程序来指导这些任务的迭代执行。这虽然能够解决海量数据处理或大数据处理中的迭代操作,但是这将产生两个严重问题:1)即使从节点中使用的大部分数据在整个迭代过程并不发生变化,但每次迭代也必须从HDFS中重新下载,这将导致主节点频繁的I/O操作,浪费大量网络资源和CPU资源;2)每次迭代操作之后对迭代终止点的检测需要一个额外的MapReduce任务,这将导致Hadoop云计算框架每次迭代都要浪费一次网络资源和CPU资源。这两个问题都大大降低了该云计算框架迭代操作的性能,进而降低了处理海量数据或大数据的性能。
发明内容
本发明的目的在于克服上述传统的Hadoop云计算框架中迭代功能方面的不足,探索提高Hadoop云计算框架迭代性能的方法,提供了一种基于Hadoop云计算框架的高效迭代机制设计方法,设计出一个具备高效迭代机制的E-Hadoop云计算框架。
为了实现上述目的,本发明采用以下技术方案:
基于Hadoop云计算框架的高效迭代机制设计方法,一个Hadoop云计算平台有多个节点,其中所述节点分为主节点和从节点,所述Hadoop云计算平台为搭建了Hadoop云计算框架的多台主机或服务器,包括以下步骤:
步骤1:在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
步骤2:调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
步骤3:调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
步骤4:为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
步骤4.1:对Hadoop云计算框架中的任务调度机制进行设计,包括:
步骤4.1.1:在主节点存储从节点到主节点所使用过的数据之间的映射关系;
步骤4.1.2:主节点接收从节点发送的Heartbeat信号;
步骤4.1.3:主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
步骤4.2:对Hadoop云计算框架中的容错机制进行设计,包括:
步骤4.2.1:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
步骤4.2.2:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在该从节点上正在执行的及已完成的Map任务置为空闲状态。
优选地,所述应用程序编程接口API中有以下函数:LoopMap函数,LoopReduce函数,SetMaxNumOfIterations函数,SetFixedPointThreshold函数,SetIterationInput函数,AddStepInput函数,MapperInputCache函数,ReducerInputCache函数,ReducerOutputCache函数。
优选地,在步骤1之前,还包括:
选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase,选取其中一台主机或服务器作为Master主机或Master服务器,其余主机或服务器作为Slaver主机或Slaver服务器,并将Master主机或Master服务器作为Hadoop云计算平台的主节点,将Slaver主机或Slaver服务器作为Hadoop云计算平台的从节点。
优选地,所述步骤2包括:
步骤2.1:通过Java迭代器类创建一个Java迭代器对象iterator;
步骤2.2:调用LoopMap函数,所述LoopMap函数通过Map函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Map函数与当前迭代次数相关联;
步骤2.3:调用LoopReduce函数,所述LoopReduce函数通过Reduce函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Reduce函数与当前迭代次数相关联;
步骤2.4:调用SetMaxNumOfIterations函数,所述SetMaxNumOfIterations函数通过将MapReduce迭代程序的最大迭代次数传递给Java迭代器对象iterator的End变量,设置MapReduce迭代程序的最大迭代次数;
步骤2.5:调用SetFixedPointThreshold函数,所述SetFixedPointThreshold函数通过将迭代过程中相邻两次迭代结果的精度误差阈值传递给Java迭代器对象iterator的Err变量,设置迭代过程中相邻两次迭代结果的精度误差阈值;
步骤2.6:调用SetIterationInput函数,所述SetIterationInput函数通过LoopMap函数将不同迭代的输入数据作为数据源,将数据源与迭代过程相关联;
步骤2.7:调用AddStepInput函数,所述AddStepInput函数通过Java迭代器对象iterator的Cursor变量及SetIterationInput函数,将当前迭代的输出传递给下次迭代。
优选地,所述步骤3包括:
步骤3.1:调用MapperInputCache函数,所述MapperInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点的Map过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表MapperInputCacheTable;
步骤3.2:调用ReducerInputCache函数,所述ReducerInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerInputCacheTable;
步骤3.3:调用ReducerOutputCache函数,所述ReducerOutputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输出数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerOutputCacheTable。
优选地,在步骤4之后,还包括:
步骤5:验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性,包括:
步骤5.1:整合步骤1至步骤4,实现具备高效迭代机制的改进的Hadoop云计算框架,所述改进的Hadoop云计算框架为E-Hadoop云计算框架;
步骤5.2:选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
步骤5.3:在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase;
步骤5.4:选定数据集,编写MapReduce迭代程序,在Hadoop云计算平台上进行测试并记录测试结果;
步骤5.5:在选定的多台主机或服务器上搭建一个E-Hadoop云计算平台,并安装JDK和HBase;
步骤5.6:基于和步骤5.4中相同的数据集,编写MapReduce迭代程序,在E-Hadoop云计算平台上进行和步骤5.4中相同的测试并记录测试结果;
步骤5.7:比较步骤5.4和步骤5.6中记录的测试结果,验证具备高效迭代机制的E-Hadop云计算框架的可行性,即验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性。
优选地,所述主节点为NameNode节点和SecondaryNameNode节点;所述从节点为DataNode节点,一个Hadoop云计算平台有多个从节点;所述MapReduce过程包括Map过程和Reduce过程,MapReduce迭代程序包括Map函数和Reduce函数。
基于上述所述的基于Hadoop云计算框架的高效迭代机制设计方法的基于Hadoop云计算框架的高效迭代机制设计系统,包括:
第一创建模块,用于在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
第二创建模块,用于调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
缓存索引模块,用于调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
任务调度容错模块,用于为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
对Hadoop云计算框架中的任务调度机制进行设计,包括:
在主节点存储从节点到主节点所使用过的数据之间的映射关系;
主节点接收从节点发送的Heartbeat信号;
主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
对Hadoop云计算框架中的容错机制进行设计,包括:
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在该从节点上正在执行的及已完成的Map任务置为空闲状态。
优选地,还包括:
部署模块,用于选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;搭建模块,用于在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase,选取其中一台主机或服务器作为Master主机或Master服务器,其余主机或服务器作为Slaver主机或Slaver服务器,并将Master主机或Master服务器作为Hadoop云计算平台的主节点,将Slaver主机或Slaver服务器作为Hadoop云计算平台的从节点。
优选地,还包括:
验证模块,用于验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性,包括:
整合步骤1至步骤4,实现具备高效迭代机制的改进的Hadoop云计算框架,所述改进的Hadoop云计算框架为E-Hadoop云计算框架;
选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase;
选定数据集,编写MapReduce迭代程序,在Hadoop云计算平台上进行测试并记录测试结果;
在选定的多台主机或服务器上搭建一个E-Hadoop云计算平台,并安装JDK和HBase;
基于和步骤5.4中相同的数据集,编写MapReduce迭代程序,在E-Hadoop云计算平台上进行和步骤5.4中相同的测试并记录测试结果;
比较步骤5.4和步骤5.6中记录的测试结果,验证具备高效迭代机制的E-Hadop云计算框架的可行性,即验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性。
优选地,所述第二创建模块进一步包括:
创建子模块,用于通过Java迭代器类创建一个Java迭代器对象iterator;
第一关联模块,用于调用LoopMap函数,所述LoopMap函数通过Map函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Map函数与当前迭代次数相关联;
第二关联模块,用于调用LoopReduce函数,所述LoopReduce函数通过Reduce函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Reduce函数与当前迭代次数相关联;
第一设置模块,用于调用SetMaxNumOfIterations函数,所述SetMaxNumOfIterations函数通过将MapReduce迭代程序的最大迭代次数传递给Java迭代器对象iterator的End变量,设置MapReduce迭代程序的最大迭代次数;
第二设置模块,用于调用SetFixedPointThreshold函数,所述SetFixedPointThreshold函数通过将迭代过程中相邻两次迭代结果的精度误差阈值传递给Java迭代器对象iterator的Err变量,设置迭代过程中相邻两次迭代结果的精度误差阈值;
第三关联模块,用于调用SetIterationInput函数,所述SetIterationInput函数通过LoopMap函数将不同迭代的输入数据作为数据源,将数据源与迭代过程相关联;
迭代传递模块,用于调用AddStepInput函数,所述AddStepInput函数通过Java迭代器对象iterator的Cursor变量及SetIterationInput函数,将当前迭代的输出传递给下次迭代。
优选地,所述缓存索引模块进一步包括:
第一缓存索引子模块,用于调用MapperInputCache函数,所述MapperInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点的Map过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表MapperInputCacheTable;
第二缓存索引子模块,用于调用ReducerInputCache函数,所述ReducerInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerInputCacheTable;
第三缓存索引子模块,用于调用ReducerOutputCache函数,所述ReducerOutputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输出数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerOutputCacheTable。
与现有技术相比,本发明具有的有益效果:
1.在设计的E-Hadoop云计算框架的循环迭代主体控制模块的帮助下,用户仅负责编写MapReduce迭代程序,E-Hadoop云计算框架负责自动执行迭代操作,很大程度上把用户从繁重的迭代任务管理工作中解放出来,减轻了用户的负担,利于用户采用该框架解决更多的实际问题。
2.本发明设计的任务调度和容错方案,可以实现E-Hadoop云计算框架进行海量数据处理或大数据处理过程中频繁迭代时任务的高效调度以及调度失败时进行及时的容错。
3.本发明无论是对海量数据或大数据处理的基本方法研究,还是对国民经济的发展,都具有极其重要的意义。首先,在海量数据或大数据处理方法研究方面,该发明不但有助于建立海量数据或大数据相关的分析系统和处理模型、为海量数据或大数据的处理提供有效的手段,而且还能推动智能技术和方法在海量数据或大数据处理领域的广泛应用和发展。其次,从海量数据或大数据处理技术的角度出发,由于该发明能进一步提高海量数据或大数据处理的性能,因而能够为人类了解更多的未知世界提供更有效的工具和手段。最后,通过本发明所设计的E-Hadoop云计算框架,能够帮助人们快速有效地了解蕴涵于海量数据或大数据中的一些规律,这将更加有利于人们利用这些规律为人类的生活和生产服务,例如采用E-Hadoop云计算框架探索存在于高复杂性基因微阵列大数据中的某些异常,可以有助于快速发现人类的某些不正常基因,从而起到快速预测和预防疾病的作用。因此,本发明所设计的E-Hadoop云计算框架不但能为海量数据或大数据在现实生活的广泛应用打下一定的基础,而且还能为探索这些数据中的规律和奥秘提供有力的工具,具有极其重要的意义。
附图说明
图1为本发明基于Hadoop云计算框架的高效迭代机制设计方法基本流程示意图之一。
图2为本发明基于Hadoop云计算框架的高效迭代机制设计方法基本流程示意图之二。
图3为本发明基于Hadoop云计算框架的高效迭代机制设计系统的结构示意图之一。
图4为本发明基于Hadoop云计算框架的高效迭代机制设计系统的结构示意图之二。
具体实施方式
为了便于理解,对本发明的具体实施方式中出现的部分名词作以下解释说明:
Hadoop:是一个由Apache基金会开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。Hadoop云计算框架最核心的设计是:HDFS和MapReduce。Hadoop由许多元素构成,其最底部是HDFS,用于存储Hadoop集群中所有存储节点上的文件。HDFS对于本文的上一层是MapReduce。本发明中,Hadoop为Hadoop 2.2.0及以上版本。
HDFS:Hadoop Distributed File System的缩写,Hadoop云计算平台分布式文件系统。HDFS有高容错性的特点,可以部署在低廉的硬件上;并且提供高吞吐量来访问应用程序的数据,适合超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。HDFS为海量的数据提供了存储。
MapReduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念Map(映射)和Reduce(归约),是MapReduce的主要思想。极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map函数,用来把一组key/value对映射成一组新的key/value对,指定并发的Reduce函数,用来保证所有映射的key/value对共享相同的键组。MapReduce为海量的数据提供了计算。Map过程为Map函数的执行过程,Reduce过程为Reduce函数的执行过程;Map任务为执行Map函数的任务,Reduce任务为执行Reduce函数的任务。
I/O:计算机用语,输入/输出。
key/value对:键值对,可以通过key值得出value值。
API:Application Programming Interface的缩写,应用程序编程接口应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Heartbeat:是Linux-HA工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在Heartbeat项目里,由Heartbeat模块实现了这两个功能。Heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,二者之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
JDK:JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序开发。JDK是整个Java开发的核心,它包含了Java的运行环境,Java工具和Java基础的类库。本发明中,JDK为jdk 1.7.0_45及以上版本。
迭代器:迭代器是一种模式,可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即无需关心该序列的底层结构,使用迭代器即可遍历该对象的内部。
HBase:是一个分布式的、面向列的开源数据库,HBase在Hadoop上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,是一个适合非结构化数据存储的数据库。HBase是基于列的而不是基于行的模式。本发明中,HBase为HBase 0.96.0及以上版本。
HBaseConfiguration类:HBaseConfiguration类继承自Configuration类,Configuration类属于Hadoop核心包中实现的类,Configuration类的主要作用是提供对配置参数的访问途径。除了继承自Configuration类之外,HBaseConfiguration类还实现了一些私有或共有的方法。从功能上讲,HBaseConfiguration类也是提供对HBase配置参数的访问,通过HBaseConfiguration类可以对HBase进行配置。
HTableDescriptor类:HTableDescriptor类包含了表的名字以及表的列族信息。
实例化:在面向对象的编程中,通常把用类创建对象的过程称为实例化。
NameNode:元数据节点,用来管理文件系统HDFS的命名空间。NameNode维护着文件系统树及整棵树内所有的文件和目录。这些信息以两种文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。NameNode也记录着每个文件中各个块(block)所在的数据节点信息,但并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建。
SecondaryNameNode:检查点节点,用于定时对NameNode进行数据快照备份,尽量降低NameNode崩溃之后,导致数据的丢失,从NameNode获得命名空间镜像文件和编辑日志文件,把二者重新合并后发给NameNode,减轻NameNode的负担并保险地备份。
DataNode:数据存储节点,用来存储数据文件。HDFS将一个文件分割成多个块(block),这些块可能存储在一个DataNode上或者多个DataNode上。DataNode负责实际的底层的文件的读写,如果客户端Client程序发起读HDFS上的文件的命令,首先将这些文件分成块,然后DataNode告知Client这些块是存储在哪些DataNode上的,之后,Client将直接和存储这些块的DataNode进行交互。
Freebase:Freebase是个创作共享类网站,所有内容都由用户添加,采用创意共用许可证,可以自由引用。Freebase数据集中的条目都采用结构化数据的形式,其中所有的内容都是格式化的,数据之间可以很容易地联系在一起,为信息的查询和处理提供了巨大的方便。
LiveJournal:是一个综合型社交网站,有论坛、博客等功能。LiveJournal最大特色是“朋友清单”,每个用户都有朋友页。LiveJournal允许用户自定义自己的帐户,S2编程语言的杂志允许成员修改模板。
Billion Triples Challenge数据集:Semantic Web Challenge即语义Web挑战的竞赛数据集,一个基准图谱数据库。
PageRank:网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。
Descendant Query:后代查询算法,可用于计算社交网络中与某人相识的所有人的列表,分析用户的交友信息等情况。
下面结合附图和具体的实施例对本发明做进一步的解释说明:
实施例一:
如图1所示,本发明的一种基于Hadoop云计算框架的高效迭代机制设计方法,包括以下步骤:
步骤S11:在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
步骤S12:调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
步骤S13:调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
步骤S14:为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
步骤S141:对Hadoop云计算框架中的任务调度机制进行设计,包括:
步骤S1411:在主节点存储从节点到主节点所使用过的数据之间的映射关系;
步骤S1412:主节点接收从节点发送的Heartbeat信号;
步骤S1413:主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
步骤S142:对Hadoop云计算框架中的容错机制进行设计,包括:
步骤S1421:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
步骤S1422:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在该从节点上正在执行的及已完成的Map任务置为空闲状态。
值得说明的是,所述主节点为NameNode节点和SecondaryNameNode节点;所述从节点为DataNode节点,一个Hadoop云计算平台有多个从节点;所述MapReduce过程包括Map过程和Reduce过程,MapReduce迭代程序包括Map函数和Reduce函数;所述迭代过程为MapReduce迭代程序的迭代运行过程。
实施例二:
如图2所示,本发明的另一种基于Hadoop云计算框架的高效迭代机制设计方法,包括以下步骤:
步骤S21:选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
步骤S22:在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase,选取其中一台主机或服务器作为Master主机或Master服务器,其余主机或服务器作为Slaver主机或Slaver服务器,并将Master主机或Master服务器作为Hadoop云计算平台的主节点,将Slaver主机或Slaver服务器作为Hadoop云计算平台的从节点;
步骤S23:在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API,所述应用程序编程接口API有以下函数:LoopMap函数,LoopReduce函数,SetMaxNumOfIterations函数,SetFixedPointThreshold函数,SetIterationInput函数,AddStepInput函数,MapperInputCache函数,ReducerInputCache函数,ReducerOutputCache函数;
步骤S24:调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块,包括:步骤S241:通过Java迭代器类创建一个Java迭代器对象iterator,描述如下:
public final static Iterator<String>iterator();
步骤S242:调用LoopMap函数,所述LoopMap函数通过Map函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Map函数与当前迭代次数相关联,描述如下:
步骤S243:调用LoopReduce函数,所述LoopReduce函数通过Reduce函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Reduce函数与当前迭代次数相关联,描述如下:
步骤S244:调用SetMaxNumOfIterations函数,所述SetMaxNumOfIterations函数通过将MapReduce迭代程序的最大迭代次数传递给Java迭代器对象iterator的End变量,设置MapReduce迭代程序的最大迭代次数,描述如下:
步骤S245:调用SetFixedPointThreshold函数,所述SetFixedPointThreshold函数通过将迭代过程中相邻两次迭代结果的精度误差阈值传递给Java迭代器对象iterator的Err变量,设置迭代过程中相邻两次迭代结果的精度误差阈值,描述如下:
步骤S246:调用SetIterationInput函数,所述SetIterationInput函数通过LoopMap函数将不同迭代的输入数据作为数据源,将数据源与迭代过程相关联,描述如下:
Void SetIterationInput(Context DataSource,Int SpecificIteration)
{
LoopMap(DataSource.getCurrentKey(),
DataSource.getCurrentValue(),SpecificIteration);
}
步骤S247:调用AddStepInput函数,所述AddStepInput函数通过Java迭代器对象iterator的Cursor变量及SetIterationInput函数,将当前迭代的输出传递给下次迭代,描述如下:
步骤S25:调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引,以减少从主节点频繁下载所述数据时产生的I/O及数据传输等费时的操作,包括:步骤S251:调用MapperInputCache函数,所述MapperInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点的Map过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表MapperInputCacheTable,描述如下:
步骤S252:调用ReducerInputCache函数,所述ReducerInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerInputCacheTable,描述如下:
步骤S253:调用ReducerOutputCache函数,所述ReducerOutputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输出数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerOutputCacheTable,描述如下:
步骤S26:为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
步骤S261:对Hadoop云计算框架中的任务调度机制进行设计,包括:
步骤S2611:在主节点存储从节点到主节点所使用过的数据之间的映射关系;
步骤S2612:主节点接收从节点发送的Heartbeat信号;
步骤S2613:主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据,即利用索引表MapperInputCacheTable检索该从节点缓存的数据并重用,利用索引表ReducerInputCacheTable检索该从节点缓存的数据并重用;若否,则主节点指派该任务给其他从节点;
步骤S262:对Hadoop云计算框架中的容错机制进行设计,包括:
步骤S2621:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
步骤S2622:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在此从节点上正在执行的及已完成的Map任务置为空闲状态;
步骤S27:验证基于Hadoop云计算框架的高效迭代机制的可行性,包括:
步骤S271:整合步骤S21至步骤S26的设计,实现具备高效迭代机制的改进的Hadoop云计算框架,所述改进的Hadoop云计算框架为E-Hadoop云计算框架;
步骤S272:选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
步骤S273:在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase;
步骤S274:选定数据集,编写MapReduce迭代程序,在Hadoop云计算平台上进行测试并记录测试结果;
步骤S275:在选定的多台主机或服务器上搭建一个E-Hadoop云计算平台,并安装JDK和HBase;
步骤S276:基于和步骤S274中相同的数据集,编写MapReduce迭代程序,在E-Hadoop云计算平台上进行和步骤S274中相同的测试并记录测试结果;
步骤S277:比较步骤S274和步骤S276中记录的测试结果,验证具备高效迭代机制的E-Hadoop云计算框架的可行性,即验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性。
作为一种可实施的方式,选取4台主机,每台主机的操作系统均为CentOS 6.4,将选取的4台主机部署在带宽为100M/S的同一局域网192.168.32.0/24内,IP地址分别为192.168.32.16,192.168.32.17,192.168.32.18和192.168.32.19;在选取的4台主机上搭建一个Hadoop云计算平台作为前期开发平台;Hadoop版本为Hadoop 2.2.0,JDK版本为jdk1.7.0_45,HBase版本为HBase 0.96.0;选取IP地址为192.168.32.16的主机为Master主机,其余主机均为Slaver主机;将Master主机作为主节点,即作为NameNode节点和SecondaryNameNode节点,其余3台Slaver主机均作为从节点,即作为DataNode节点。
作为一种可实施的方式,分别搭建了一个Hadoop云计算平台和一个E-Hadoop云计算平台作为性能测试平台,这两个平台都搭建在同一套集群设备上,该集群设备由5台服务器组成,每台服务器的操作系统均为CentOS 6.4,Hadoop版本为Hadoop 2.2.0,JDK版本为jdk 1.7.0_45,HBase版本为HBase 0.96.0;将选取的服务器集群部署在带宽为100M/S的同一局域网192.168.32.0/24内,IP地址分别为192.168.32.20,192.168.32.21,192.168.32.22,192.168.32.23和192.168.32.24,选取IP地址为192.168.32.20的服务器为Master服务器,其余4台服务器均为Slaver服务器;其中Master服务器作为主节点,即作为NameNode节点和SecondaryNameNode节点,其余4台Slaver服务器均作为从节点,即作为DataNode节点。
作为一种可实施的方式,采用如下数据集对Hadoop云计算框架和E-Hadoop云计算框架做性能测试比较:
1.Freebase数据集:一个关系数据集,大小12G;
2.LiveJournal数据集:一个存储半结构化数据的数据集,主要由社交网络的边缘元组组成,大小18G;
3.Billion Triples Challenge数据集:一个基准图谱数据集,大小120G。
根据各个数据集的特点,实验中在Freebase数据集和LiveJournal数据集上做PageRank测试,在LiveJournal数据集和Billion Triples Challenge数据集上做DescendantQuery测试。
分别使用Hadoop云计算平台和E-Hadoop云计算平台对上述数据集进行PageRank测试和Descendant Query测试,在测试过程中,HDFS文件块大小为32MB,记录各个测试过程所消耗的总时间,单位为s,当循环迭代主体控制模块中设置的最大迭代次数为200次,在迭代过程中相邻两次迭代结果的精度误差阈值为(0,10-4]时,其部分实验对比结果如表1所示:
表1 Hadoop云计算平台和E-Hadoop云计算平台部分实验对比结果(单位:s)
从表1中对比结果可知,在PageRank测试中,对于Freebase数据集,在E-Hadoop云计算平台上的运行时间比Hadoop云计算平台上的运行时间节省了约44.2%;对于LiveJournal数据集,在E-Hadoop云计算平台上的运行时间比Hadoop云计算平台上的运行时间节省了约42.6%。在Descendant Query测试中,对于LiveJournal数据集,在E-Hadoop云计算平台上的运行时间比Hadoop云计算平台上的运行时间节省了约61.7%;对于BillionTriplesChallenge数据集,在E-Hadoop云计算平台上的运行时间比Hadoop云计算平台上的运行时间节省了约44%。
由上可知,本发明设计的E-Hadoop云计算框架较Hadoop云计算框架具有较明显的优势,加快了MapReduce迭代程序的运行速率,节省了网络开支,具有高效的迭代功能,提高了处理大数据的性能,验证了本发明设计的基于Hadoop云计算框架的高效迭代机制设计方法的可行性。
值得说明的是,一个Hadoop云计算平台有多个从节点;所述MapReduce过程包括Map过程和Reduce过程,MapReduce迭代程序包括Map函数和Reduce函数;所述迭代过程为MapReduce迭代程序的迭代运行过程;所述ReducerOutputCacheTable索引表的功能包括:降低计算迭代终止条件的代价,即如果在迭代中通过对比当前和前次的Reduce过程的输出结果检测其终止条件,则只需利用ReducerOutputCacheTable索引表在相应从节点找到前次Reduce过程的输出结果并与当前Reduce过程的输出结果进行计算。
实施例三:
如图3所示,本发明的一种基于Hadoop云计算框架的高效迭代机制设计系统,包括:
第一创建模块31,用于在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
第二创建模块32,用于调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
缓存索引模块33,用于调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
任务调度容错模块34,用于为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
对Hadoop云计算框架中的任务调度机制进行设计,包括:
在主节点存储从节点到主节点所使用过的数据之间的映射关系;
主节点接收从节点发送的Heartbeat信号;
主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
对Hadoop云计算框架中的容错机制进行设计,包括:
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在该从节点上正在执行的及已完成的Map任务置为空闲状态。
实施例四:
如图4所示,本发明的另一种基于Hadoop云计算框架的高效迭代机制设计系统,包括:
部署模块41,用于选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
搭建模块42,用于在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase,选取其中一台主机或服务器作为Master主机或Master服务器,其余主机或服务器作为Slaver主机或Slaver服务器,并将Master主机或Master服务器作为Hadoop云计算平台的主节点,将Slaver主机或Slaver服务器作为Hadoop云计算平台的从节点;
第一创建模块43,用于在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
第二创建模块44,用于调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
缓存索引模块45,用于调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
任务调度容错模块46,用于为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
对Hadoop云计算框架中的任务调度机制进行设计,包括:
在主节点存储从节点到主节点所使用过的数据之间的映射关系;
主节点接收从节点发送的Heartbeat信号;
主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
对Hadoop云计算框架中的容错机制进行设计,包括:
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在此从节点上正在执行的及已完成的Map任务置为空闲状态;
验证模块47,用于验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性,包括:整合步骤1至步骤4,实现具备高效迭代机制的改进的Hadoop云计算框架,所述改进的Hadoop云计算框架为E-Hadoop云计算框架;
选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase;
选定数据集,编写MapReduce迭代程序,在Hadoop云计算平台上进行测试并记录测试结果;
在选定的多台主机或服务器上搭建一个E-Hadoop云计算平台,并安装JDK和HBase;
基于和步骤5.4中相同的数据集,编写MapReduce迭代程序,在E-Hadoop云计算平台上进行和步骤5.4中相同的测试并记录测试结果;
比较步骤5.4和步骤5.6中记录的测试结果,验证具备高效迭代机制的E-Hadop云计算框架的可行性,即验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性。
所述第二创建模块44进一步包括:
创建子模块441,用于通过Java迭代器类创建一个Java迭代器对象iterator;
第一关联模块442,用于调用LoopMap函数,所述LoopMap函数通过Map函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Map函数与当前迭代次数相关联;
第二关联模块443,用于调用LoopReduce函数,所述LoopReduce函数通过Reduce函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Reduce函数与当前迭代次数相关联;
第一设置模块444,用于调用SetMaxNumOfIterations函数,所述SetMaxNumOfIterations函数通过将MapReduce迭代程序的最大迭代次数传递给Java迭代器对象iterator的End变量,设置MapReduce迭代程序的最大迭代次数;
第二设置模块445,用于调用SetFixedPointThreshold函数,所述SetFixedPointThreshold函数通过将迭代过程中相邻两次迭代结果的精度误差阈值传递给Java迭代器对象iterator的Err变量,设置迭代过程中相邻两次迭代结果的精度误差阈值;
第三关联模块446,用于调用SetIterationInput函数,所述SetIterationInput函数通过LoopMap函数将不同迭代的输入数据作为数据源,将数据源与迭代过程相关联;
迭代传递模块447,用于调用AddStepInput函数,所述AddStepInput函数通过Java迭代器对象iterator的Cursor变量及SetIterationInput函数,将当前迭代的输出传递给下次迭代。
所述缓存索引模块45进一步包括:
第一缓存索引子模块451,用于调用MapperInputCache函数,所述MapperInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点的Map过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表MapperInputCacheTable;
第二缓存索引子模块452,用于调用ReducerInputCache函数,所述ReducerInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerInputCacheTable;
第三缓存索引子模块453,用于调用ReducerOutputCache函数,所述ReducerOutputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输出数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerOutputCacheTable。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,一个Hadoop云计算平台有多个节点,其中所述节点分为主节点和从节点,所述Hadoop云计算平台为搭建了Hadoop云计算框架的多台主机或服务器,包括以下步骤:
步骤1:在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
步骤2:调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
步骤3:调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
步骤4:为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
步骤4.1:对Hadoop云计算框架中的任务调度机制进行设计,包括:
步骤4.1.1:在主节点存储从节点到主节点所使用过的数据之间的映射关系;
步骤4.1.2:主节点接收从节点发送的Heartbeat信号;
步骤4.1.3:主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
步骤4.2:对Hadoop云计算框架中的容错机制进行设计,包括:
步骤4.2.1:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
步骤4.2.2:主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在该从节点上正在执行的及已完成的Map任务置为空闲状态。
2.根据权利要求1所述的基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,所述应用程序编程接口API中有以下函数:LoopMap函数,LoopReduce函数,SetMaxNumOfIterations函数,SetFixedPointThreshold函数,SetIterationInput函数,AddStepInput函数,MapperInputCache函数,ReducerInputCache函数,ReducerOutputCache函数。
3.根据权利要求1所述的基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,在步骤1之前,还包括:
选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase,选取其中一台主机或服务器作为Master主机或Master服务器,其余主机或服务器作为Slaver主机或Slaver服务器,并将Master主机或Master服务器作为Hadoop云计算平台的主节点,将Slaver主机或Slaver服务器作为Hadoop云计算平台的从节点。
4.根据权利要求2所述的基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,所述步骤2包括:
步骤2.1:通过Java迭代器类创建一个Java迭代器对象iterator;
步骤2.2:调用LoopMap函数,所述LoopMap函数通过Map函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Map函数与当前迭代次数相关联;
步骤2.3:调用LoopReduce函数,所述LoopReduce函数通过Reduce函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Reduce函数与当前迭代次数相关联;
步骤2.4:调用SetMaxNumOfIterations函数,所述SetMaxNumOfIterations函数通过将MapReduce迭代程序的最大迭代次数传递给Java迭代器对象iterator的End变量,设置MapReduce迭代程序的最大迭代次数;
步骤2.5:调用SetFixedPointThreshold函数,所述SetFixedPointThreshold函数通过将迭代过程中相邻两次迭代结果的精度误差阈值传递给Java迭代器对象iterator的Err变量,设置迭代过程中相邻两次迭代结果的精度误差阈值;
步骤2.6:调用SetIterationInput函数,所述SetIterationInput函数通过LoopMap函数将不同迭代的输入数据作为数据源,将数据源与迭代过程相关联;
步骤2.7:调用AddStepInput函数,所述AddStepInput函数通过Java迭代器对象iterator的Cursor变量及SetIterationInput函数,将当前迭代的输出传递给下次迭代。
5.根据权利要求2所述的基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,所述步骤3包括:
步骤3.1:调用MapperInputCache函数,所述MapperInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点的Map过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表MapperInputCacheTable;
步骤3.2:调用ReducerInputCache函数,所述ReducerInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerInputCacheTable;
步骤3.3:调用ReducerOutputCache函数,所述ReducerOutputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输出数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerOutputCacheTable。
6.根据权利要求1所述的基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,在步骤4之后,还包括:
步骤5:验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性,包括:
步骤5.1:整合步骤1至步骤4,实现具备高效迭代机制的改进的Hadoop云计算框架,所述改进的Hadoop云计算框架为E-Hadoop云计算框架;
步骤5.2:选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
步骤5.3:在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase;
步骤5.4:选定数据集,编写MapReduce迭代程序,在Hadoop云计算平台上进行测试并记录测试结果;
步骤5.5:在选定的多台主机或服务器上搭建一个E-Hadoop云计算平台,并安装JDK和HBase;
步骤5.6:基于和步骤5.4中相同的数据集,编写MapReduce迭代程序,在E-Hadoop云计算平台上进行和步骤5.4中相同的测试并记录测试结果;
步骤5.7:比较步骤5.4和步骤5.6中记录的测试结果,验证具备高效迭代机制的E-Hadop云计算框架的可行性,即验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性。
7.根据权利要求1所述的基于Hadoop云计算框架的高效迭代机制设计方法,其特征在于,所述主节点为NameNode节点和SecondaryNameNode节点;所述从节点为DataNode节点,一个Hadoop云计算平台有多个从节点;所述MapReduce过程包括Map过程和Reduce过程,MapReduce迭代程序包括Map函数和Reduce函数。
8.基于权利要求1-7所述的基于Hadoop云计算框架的高效迭代机制设计方法的基于Hadoop云计算框架的高效迭代机制设计系统,其特征在于,包括:
第一创建模块,用于在Hadoop云计算框架中创建一个用于简化MapReduce迭代程序编写的应用程序编程接口API;
第二创建模块,用于调用应用程序编程接口API,在主节点创建一个循环迭代主体控制模块;
缓存索引模块,用于调用应用程序编程接口API,在从节点对迭代过程中被重复使用的数据进行缓存和索引;
任务调度容错模块,用于为主节点中循环迭代主体控制模块设计任务调度和容错机制,包括:
对Hadoop云计算框架中的任务调度机制进行设计,包括:
在主节点存储从节点到主节点所使用过的数据之间的映射关系;
主节点接收从节点发送的Heartbeat信号;
主节点检查从节点是否空闲,若是,则主节点为该从节点指派一个任务,并且在该任务执行过程中使用该从节点中缓存的数据;若否,则主节点指派该任务给其他从节点;
对Hadoop云计算框架中的容错机制进行设计,包括:
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行或已完成的Map任务置为空闲状态,并将该Map任务分配给其他从节点执行;
主节点周期性地Ping从节点,检查从节点的状态是否可用,当检测到从节点失效时,则将在该从节点上正在执行的Reduce任务置为空闲状态;若在Reduce过程的输出数据写入与该Reduce对应的输出文件中之前,存放中间key/value对的从节点失效,则将在该从节点上正在执行的及已完成的Map任务置为空闲状态。
9.根据权利要求8所述的基于Hadoop云计算框架的高效迭代机制设计系统,其特征在于,还包括:
部署模块,用于选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
搭建模块,用于在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase,选取其中一台主机或服务器作为Master主机或Master服务器,其余主机或服务器作为Slaver主机或Slaver服务器,并将Master主机或Master服务器作为Hadoop云计算平台的主节点,将Slaver主机或Slaver服务器作为Hadoop云计算平台的从节点。
10.根据权利要求8所述的基于Hadoop云计算框架的高效迭代机制设计系统,其特征在于,还包括:
验证模块,用于验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性,包括:
整合步骤1至步骤4,实现具备高效迭代机制的改进的Hadoop云计算框架,所述改进的Hadoop云计算框架为E-Hadoop云计算框架;
选定多台主机或服务器,并将所述多台主机或服务器部署在同一局域网内;
在选定的多台主机或服务器上搭建一个Hadoop云计算平台,并安装JDK和HBase;
选定数据集,编写MapReduce迭代程序,在Hadoop云计算平台上进行测试并记录测试结果;
在选定的多台主机或服务器上搭建一个E-Hadoop云计算平台,并安装JDK和HBase;
基于和步骤5.4中相同的数据集,编写MapReduce迭代程序,在E-Hadoop云计算平台上进行和步骤5.4中相同的测试并记录测试结果;
比较步骤5.4和步骤5.6中记录的测试结果,验证具备高效迭代机制的E-Hadop云计算框架的可行性,即验证基于Hadoop云计算框架的高效迭代机制设计方法的可行性;
优选地,所述第二创建模块进一步包括:
创建子模块,用于通过Java迭代器类创建一个Java迭代器对象iterator;
第一关联模块,用于调用LoopMap函数,所述LoopMap函数通过Map函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Map函数与当前迭代次数相关联;
第二关联模块,用于调用LoopReduce函数,所述LoopReduce函数通过Reduce函数及将当前迭代次数传递给Java迭代器对象iterator的Cursor变量,将Reduce函数与当前迭代次数相关联;
第一设置模块,用于调用SetMaxNumOfIterations函数,所述SetMaxNumOfIterations函数通过将MapReduce迭代程序的最大迭代次数传递给Java迭代器对象iterator的End变量,设置MapReduce迭代程序的最大迭代次数;
第二设置模块,用于调用SetFixedPointThreshold函数,所述SetFixedPointThreshold函数通过将迭代过程中相邻两次迭代结果的精度误差阈值传递给Java迭代器对象iterator的Err变量,设置迭代过程中相邻两次迭代结果的精度误差阈值;
第三关联模块,用于调用SetIterationInput函数,所述SetIterationInput函数通过LoopMap函数将不同迭代的输入数据作为数据源,将数据源与迭代过程相关联;
迭代传递模块,用于调用AddStepInput函数,所述AddStepInput函数通过Java迭代器对象iterator的Cursor变量及SetIterationInput函数,将当前迭代的输出传递给下次迭代;
优选地,所述缓存索引模块进一步包括:
第一缓存索引子模块,用于调用MapperInputCache函数,所述MapperInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点的Map过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表MapperInputCacheTable;
第二缓存索引子模块,用于调用ReducerInputCache函数,所述ReducerInputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输入数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerInputCacheTable;
第三缓存索引子模块,用于调用ReducerOutputCache函数,所述ReducerOutputCache函数通过实例化HBase的HBaseConfiguration类和HTableDescriptor类,把循环迭代过程中从节点Reduce过程的输出数据缓存到相应的从节点、并为缓存的数据建立索引表ReducerOutputCacheTable。
CN201710284534.5A 2017-04-25 2017-04-25 基于Hadoop云计算框架的高效迭代机制设计方法 Active CN107122238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710284534.5A CN107122238B (zh) 2017-04-25 2017-04-25 基于Hadoop云计算框架的高效迭代机制设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710284534.5A CN107122238B (zh) 2017-04-25 2017-04-25 基于Hadoop云计算框架的高效迭代机制设计方法

Publications (2)

Publication Number Publication Date
CN107122238A true CN107122238A (zh) 2017-09-01
CN107122238B CN107122238B (zh) 2018-05-25

Family

ID=59725876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710284534.5A Active CN107122238B (zh) 2017-04-25 2017-04-25 基于Hadoop云计算框架的高效迭代机制设计方法

Country Status (1)

Country Link
CN (1) CN107122238B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109729121A (zh) * 2017-10-31 2019-05-07 阿里巴巴集团控股有限公司 一种云存储系统及用于云存储系统中实现自定义数据处理的方法
CN110109744A (zh) * 2019-05-15 2019-08-09 重庆八戒电子商务有限公司 一种多线程任务调度方法、装置、介质和电子设备
CN110134714A (zh) * 2019-05-22 2019-08-16 东北大学 一种适用于大数据迭代计算的分布式计算框架缓存索引
CN110795265A (zh) * 2019-10-25 2020-02-14 东北大学 一种基于乐观容错方法的迭代器
CN110795404A (zh) * 2019-10-31 2020-02-14 京东方科技集团股份有限公司 Hadoop分布式文件系统及其运行方法、修复方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103064728A (zh) * 2012-12-13 2013-04-24 河南工业大学 一种MapReduce任务的容错调度方法
CN103617087A (zh) * 2013-11-25 2014-03-05 华中科技大学 一种适合迭代计算的MapReduce优化方法
US20140067808A1 (en) * 2012-09-06 2014-03-06 International Business Machines Corporation Distributed Scalable Clustering and Community Detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140067808A1 (en) * 2012-09-06 2014-03-06 International Business Machines Corporation Distributed Scalable Clustering and Community Detection
CN103064728A (zh) * 2012-12-13 2013-04-24 河南工业大学 一种MapReduce任务的容错调度方法
CN103617087A (zh) * 2013-11-25 2014-03-05 华中科技大学 一种适合迭代计算的MapReduce优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
冯新建: ""基于MapReduce的迭代型分布式数据处理研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
徐彬彬: ""面向迭代作业的分布式并行处理优化与实现"", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109729121A (zh) * 2017-10-31 2019-05-07 阿里巴巴集团控股有限公司 一种云存储系统及用于云存储系统中实现自定义数据处理的方法
CN109729121B (zh) * 2017-10-31 2022-05-06 阿里巴巴集团控股有限公司 一种云存储系统及用于云存储系统中实现自定义数据处理的方法
CN110109744A (zh) * 2019-05-15 2019-08-09 重庆八戒电子商务有限公司 一种多线程任务调度方法、装置、介质和电子设备
CN110134714A (zh) * 2019-05-22 2019-08-16 东北大学 一种适用于大数据迭代计算的分布式计算框架缓存索引
CN110134714B (zh) * 2019-05-22 2021-04-20 东北大学 适用于大数据迭代计算的分布式计算框架缓存索引方法
CN110795265A (zh) * 2019-10-25 2020-02-14 东北大学 一种基于乐观容错方法的迭代器
CN110795265B (zh) * 2019-10-25 2021-04-02 东北大学 一种基于乐观容错方法的迭代器
CN110795404A (zh) * 2019-10-31 2020-02-14 京东方科技集团股份有限公司 Hadoop分布式文件系统及其运行方法、修复方法

Also Published As

Publication number Publication date
CN107122238B (zh) 2018-05-25

Similar Documents

Publication Publication Date Title
Inoubli et al. An experimental survey on big data frameworks
CN107122238B (zh) 基于Hadoop云计算框架的高效迭代机制设计方法
US9158843B1 (en) Addressing mechanism for data at world wide scale
Tsai et al. Towards a scalable and robust multi-tenancy SaaS
Hasani et al. Lambda architecture for real time big data analytic
CN106101213A (zh) 信息分布式存储方法
Srinivasa et al. Guide to high performance distributed computing
Escriva et al. Kronos: The design and implementation of an event ordering service
CN106569896A (zh) 一种数据分发及并行处理方法和系统
Nguyen et al. Prefetching-based metadata management in advanced multitenant hadoop
CN107992354A (zh) 用于降低内存负载的方法以及装置
Won et al. Moving metadata from ad hoc files to database tables for robust, highly available, and scalable HDFS
Tsai et al. Data Partitioning and Redundancy Management for Robust Multi-Tenancy SaaS.
CN107943412A (zh) 一种分区分裂、删除分区中数据文件的方法、装置及系统
Serbanescu et al. Architecture of distributed data aggregation service
Alemi et al. CCFinder: using Spark to find clustering coefficient in big graphs
Wang et al. Pipeline provenance for cloud‐based big data analytics
Totaro et al. ISODAC: A high performance solution for indexing and searching heterogeneous data
Chullipparambil Big data analytics using Hadoop tools
Vokorokos et al. Performance optimization of applications based on non-relational databases
Li et al. Replichard: Towards tradeoff between consistency and performance for metadata
US10169083B1 (en) Scalable method for optimizing information pathway
Wu et al. FabricETP: A high-throughput blockchain optimization solution for resolving concurrent conflicting transactions
Nagdive et al. A review of Hadoop ecosystem for bigdata
CN113760822A (zh) 基于hdfs的分布式智慧校园文件管理系统优化方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: No. 136, Kexue Avenue, high tech Industrial Development Zone, Zhengzhou City, Henan Province

Patentee after: Zhengzhou University of light industry

Country or region after: China

Address before: 450002 No. 5 Dongfeng Road, Jinshui District, Henan, Zhengzhou

Patentee before: ZHENGZHOU University OF LIGHT INDUSTRY

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240307

Address after: Room 226, Zone A, Optoelectronics Industrial Park, No. 55 Yulan Street, High tech Industrial Development Zone, Zhengzhou City, Henan Province, 450000

Patentee after: Zhengzhou Zhiduoxin Technology Co.,Ltd.

Country or region after: China

Address before: No. 136, Kexue Avenue, high tech Industrial Development Zone, Zhengzhou City, Henan Province

Patentee before: Zhengzhou University of light industry

Country or region before: China

TR01 Transfer of patent right

Effective date of registration: 20240606

Address after: 450000 room 36, 13 / F, unit 1, building 6, No.10, Wenhua North Road, Jinshui District, Zhengzhou City, Henan Province

Patentee after: ZHENGZHOU YOUYIDA ELECTRONIC TECHNOLOGY Co.,Ltd.

Country or region after: China

Address before: Room 226, Zone A, Optoelectronics Industrial Park, No. 55 Yulan Street, High tech Industrial Development Zone, Zhengzhou City, Henan Province, 450000

Patentee before: Zhengzhou Zhiduoxin Technology Co.,Ltd.

Country or region before: China