一种基于Hbase的节省网络流量的MR运行方法与流程

文档序号:12377242阅读:405来源:国知局

本发明涉及一种,具体地说是一种基于Hbase的节省网络流量的MR运行方法。



背景技术:

当今世界,公司的日常运营经常会生成TB级别的数据。数据来源囊括了互联网装置可以捕获的任何类型数据,网站、社交媒体、交易型商业数据以及其它商业环境中创建的数据。考虑到数据的生成量,实时处理成为了许多机构需要面对的首要挑战。

MR为mapreduce的缩写,MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

使用hbase运行MR,由于HBase本身底层数据文件没有全部分布在MR运行节点上。因此在执行MR时,MR执行节点会跨网络读取其他节点上的数据文件,从而造成很多额外的网络开销。当集群数据有上TB或者PB是,传统的Hbase的Mapreduce很容易造成很大的网络开销,使集权有网络瘫痪的风险。



技术实现要素:

本发明的技术任务是提供一种基于Hbase的节省网络流量的MR运行方法,来解决网络开销大,集权有网络瘫痪的风险的问题。

本发明的技术任务是按以下方式实现的,

一种基于Hbase的节省网络流量的MR运行方法,步骤如下:

(1)、实现Mapreduce的InputFormat方法;

(2)、获取Hbase某张表的所有大的数据块(Region)信息;

(3)、根据每个数据块,获取他们的底层文件(Hfile);

(4)、将获取到的所有数据块的底层文件作为Mapreduce的输入;以每个底层文件为计算单元,执行mapreduce;

(5)、执行reduce,结束mapreduce。

步骤(4)中,执行mapreduce,MapReduce通过把对数据集的大规模操作分发给网络上的每个计算单元实现可靠性;每个计算单元周期性的返回它所完成的工作和最新的状态。

若一个计算单元保持沉默超过一个预设的时间间隔,主计算单元(类同Google File System中的主服务器)记录下这个计算单元状态为死亡,并把分配给这个计算单元的数据发到别的计算单元。

本发明的一种基于Hbase的节省网络流量的MR运行方法具有以下优点:结合MR的执行特点和HBase数据的存储特点,直接在每个数据文件上执行MR,从根本上解决了Mapreduce运行初期跨节点取数据的问题,从而很好的节省了网络开销,具有很好的推广使用价值。

附图说明

下面结合附图对本发明进一步说明。

附图1为一种基于Hbase的节省网络流量的MR运行方法的流程图。

具体实施方式

参照说明书附图和具体实施例对本发明的一种基于Hbase的节省网络流量的MR运行方法作以下详细地说明。

实施例:

本发明的一种基于Hbase的节省网络流量的MR运行方法,步骤如下:

(1)、实现Mapreduce的InputFormat方法;

(2)、获取Hbase某张表的所有大的数据块(Region)信息;

(3)、根据每个数据块,获取他们的底层文件(Hfile);

(4)、将获取到的所有数据块的底层文件作为Mapreduce的输入;以每个底层文件为计算单元,执行mapreduce;

(5)、执行reduce,结束mapreduce。

步骤(4)中,执行mapreduce,MapReduce通过把对数据集的大规模操作分发给网络上的每个计算单元实现可靠性;每个计算单元周期性的返回它所完成的工作和最新的状态。

若一个计算单元保持沉默超过一个预设的时间间隔,主计算单元(类同Google File System中的主服务器)记录下这个计算单元状态为死亡,并把分配给这个计算单元的数据发到别的计算单元。

一、映射和化简

简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如前面的例子里,有人发现所有学生的成绩都被高估了一分,它可以定义一个"减一"的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。

而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?它可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。

二、分布可靠

MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的返回它所完成的工作和最新的状态。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google File System中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。

化简操作工作方式与之类似,但是由于化简操作的可并行性相对较差,主节点会尽量把化简操作只分配在一个节点上,或者离需要操作的数据尽可能近的节点上;这个特性可以满足Google的需求,因为他们有足够的带宽,他们的内部网络没有那么多的机器。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

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