基于Hadoop架构的分布式视频存储管理方法及系统与流程

文档序号:11254309阅读:1508来源:国知局
基于Hadoop架构的分布式视频存储管理方法及系统与流程

本发明涉及分布式视频存储技术,尤其涉及一种基于hadoop架构的分布式视频存储管理方法及系统。

技术背景

随着智慧城市概念的不断发展,视频监控系统逐渐被普及。视频监控系统由于前端监控设备的增加且高清化,将产生海量的视频数据。动态变化的监控设备连接管理以及海量视频数据的存储对监控系统的管理、存储性能都提出了严峻的考验。如何存储并管理这些视频数据,是我们急于解决的问题。

现有的视频存储管理方案主要是基于视频服务器的,它由前端监控设备、视频服务器和视频存储设备三部分构成。前端监控设备负责获取监控的视频数据(h.264格式),然后通过rtsp协议传送到视频服务器。视频服务器收到摄像头发来的视频流数据后对视频数据进行编码和分割,生成视频文件,然后存储到存储设备中。现有的视频存储管理方案存在如下问题:

(1)负载过重。由于视频数据在写入和读取的时候都需要经过视频服务器,如果有几百路视频数据同时写入时,可能会有上百mb的带宽需求,当前端监控设备的数量增加到一定程度时,视频服务器难以承受几百甚至上千路视频数据的并发写入,因此视频服务器将成为整个存储系统的单一故障点。

(2)连接分配不均衡。现有的方案中,存储系统与前端监控设备建立连接任务,大都由视频服务器来完成,这样导致了(1)总所述的问题。也有方案采用静态节点分配的方法与前端监控设备建立连接,这样导致了连接任务分配不均衡,使部分点节点负载过重,另一部分节点负载过轻。

针对以上几个问题,本发明引入分布式hadoop架构及其设计理念,在传统的hadoop的master-slave架构上进行优化,解决负载均衡的问题。同时考虑到控制管理和视频数据流的存储问题,给出了实时动态的节点管理方案。



技术实现要素:

本发明的目的是解决现有视频存储管理方案的问题与不足,提供了一种基于hadoop架构的分布式视频存储管理方法及系统,以解决前端监控设备接入到视频服务器或管理节点所引发的负载过重、连接分配不均衡的问题,从而实现视频数据的高效存储。

为了实现上述目的,本发明采用如下的技术方案:

1.一种分布式视频存储系统,由前端监控设备、云存储系统(管理节点、存储节点)构成。前端监控设备包含n个网络摄像机,它能够实时采集视频信号,并通过rtsp协议将采集的视频流传输到指定的流媒体服务器上。云存储系统包含一个管理节点和m个存储节点,管理节点负责管理整个集群,并为新接入集群的前端监控设备分配存储节点,同时负责处理监控设备的断线重连等问题。每个存储节点上嵌入视频流接收、编码、分割软件,它负责接收并存储实时的视频流,并监控视频流连接是否断开。前端监控设备与云存储系统通过网络单元连接。

2.一种分布式视频存储管理方法,管理节点时刻监控整个集群的运行状况,包括各个存储节点的空闲磁盘空间大小、视频连接任务的数量等。每当有新的前端监控设备要接入集群时,管理节点查看各个存储节点的状态信息,利用动态的负载均衡机制为监控设备分配一个存储节点,同时通知该存储节点建立与该监控设备的连接任务。存储节点接收到管理节点发送的命令后,启动与该监控设备的连接任务,将实时的视频流切割并存储到本地的文件系统中,最后利用ipc机制通知管理节点建立该视频相应的元信息和数据块索引,让管理节点来管理该视频文件。具体包括如下步骤:

(1)配置前端监控设备,将网络摄像头接入网络。通知管理节点有新的前端监控设备需要接入云存储系统;

(2)管理节点获取前端监控设备的配置信息

(3)利用动态负载均衡机制为视频连接任务分配一个存储节点,并通知该存储节点启动视频连接任务

(4)存储节点接收到消息后,根据配置信息启动对应的视频连接任务

(5)存储节点获取视频流,并生成视频文件,通知管理节点来管理该视频文件

本发明的效益是:利用动态的负载均衡机制,将获取监控视频流的任务下发到各个存储节点上执行,有效避免了视频服务器在并发获取视频流过程中出现的负载过重、连接分配不均衡的问题,提高了分布式存储系统的可用性及性能,解决了大规模监控系统中的分布式视频存储问题。另外,在存储节点上获取监控视频流的同时,可以直接对视频流进行转码处理,使得视频处理的方案更加灵活。最后将视频文件按hdfs的块大小进行切片,并生成对应的校验信息,直接通知管理节点来管理该视频文件,省去了重复上传到hdfs的过程。

附图说明:

图1:基于hadoop架构的分布式视频存储系统

图2:总体执行框图

图3:动态负载均衡程序执行框图

图4:存储节点启动视频连接任务执行框图

图5:存储节点存储视频文件执行框图

具体实施方式:

下面结合附图和具体实施方式对本发明做进一步说明。

1.一种分布式视频存储系统

如图1,本系统主要由前端监控设备、云存储系统构成。

前端监控设备包括网络摄像机1、网络摄像机2……和网络摄像机n,每个网络摄像机配置后可以接入到网络中,它能够实时采集视频信号,并通过rtsp协议将采集的视频流传输到指定的服务器上。前端监控设备的数量通常比较庞大,因此要求存储系统能够承受大量的并发写入需求,另外网络摄像机往往会出现设备故障、连接断线等故障,因此也需要系统能及时地处理此类问题。前端监控设备与云存储系统通过网络单元连接。

云存储系统包含一个管理节点和m个存储节点。管理节点负责管理整个云存储系统,它实时监控着各个存储节点的磁盘利用率、视频连接任务数等信息。同时它负责给各个存储节点下发视频连接任务,当有新的前端监控设备要接入集群时,管理节点利用动态负载均衡机制为前端监控设备分配一个存储节点,通知该存储节点建立与监控设备的连接任务。存储节点负责存储视频文件,同时它接收管理节点发送过来的命令,与前端监控设备建立连接任务,获取实时视频流并存储在本地。存储节点也监控着视频连接任务的状态,若前端监控设备出现故障或者网络拥塞导致连接任务断开,存储节点则尝试重连设备,若失败次数超过上限,则向管理节点汇报连接失败故障。管理节点与存储节点通过网络单元连通。

2.一种分布式视频存储管理方法

本方法包括以下步骤:

如图2,

(0)开始-200

开始条件:配置前端监控设备,使其能够接入到网络中,并通知管理节点有新的前端监控设备需要接入存储系统;

(1)管理节点获取新前端监控设备的配置信息-201

当新的前端监控设备需要接入存储系统时,管理节点主动地获取该设备的配置信息,这些配置信息包括网络摄像机的ip地址、端口号、登录名、密码等。利用这些配置信息,服务器可以通过rtsp协议将视频流获取到本地文件系统中。

(2)利用动态负载均衡机制为视频连接任务分配一个存储节点,并通知该存储节点启动视频连接任务-202

如图3,子流程:

a.开始-300

开始条件:一个新的前端监控设备ci(camera_i)需要接入存储系统,并且管理节点m(master)已经获取到监控设备ci的配置文件di(device_i.ini);

b.管理节点m查询所有存储节点s1、s2……和sj(slave_j)的容量与负载状况,并将查询结果存放在datanodeinfo数组中-301

查询结果主要包括:容量、已经使用的容量、剩余容量、流接口服务线程数、数据节点在集群中的位置等信息。这些信息基本概括了各个存储节点的负载情况。datanodeinfo的每一个元素包含一个存储节点的容量与负载状况信息;

c.对datanodeinfo数组的元素进行筛选,过滤掉不满足视频连接任务的存储节点sm-302

遍历datanodeinfo数组,查询每个存储节点的状态信息。若存储节点sm的剩余容量小于设定的容量下限值sc_min,或者流接口服务线程数(视频连接任务数)大于设定的连接上限值con_max,则删除该元素datanodeinfo[sm_index];

d.判断datanodeinfo数组是否为空-303。若datanodeinfo数组为空,则返回节点分配失败错误-308,跳转到步骤i。如果不为空,则进入步骤e

如果datanodeinfo数组为空,则所有的存储节点均不满足节点分配条件,即集群的剩余存储空间过小或者集群的视频连接负荷过高,管理员应该根据此错误提醒进行故障检查,增加集群的存储空间、清理垃圾文件;

e.对datanodeinfo数组中的每一个元素计算出一个综合评分score_1、score_2……和score_i-304

评分计算规则:score_i=剩余容量/(2*容量)+剩余连接数/(2*con_max)

其中剩余连接数=连接上限值con_max–流接口服务线程数;

f.将datanodeinfo数组按综合评分降序排序-305

g.从排序后的datanodeinfo数组中取出第一个元素,并返回其主机地址-306

排序后datanodeinfo数组的第一个元素即为综合评分最高的存储节点,该节点磁盘剩余空间较大、视频连接任务数较少,更适合新前端监控设备ci的连接任务;

h.管理节点m根据步骤g返回的主机地址,将前端监控设备ci的配置信息di发送到对应的存储节点sj上,并通知sj启动视频连接任务-307

i.程序结束-309

(3)存储节点接收到消息后,根据配置信息启动对应的视频连接任务-203

如图4,子流程:

a.开始-400

开始条件:存储节点sj接收到管理节点m发送的启动消息、前端监控设备ci的配置信息di;

b.存储节点sj尝试与前端监控设备ci建立连接任务-401

存储节点sj根据配置信息di指定的摄像头ip地址、端口号、登录名、密码等信息,利用rtsp协议与该摄像头建立连接任务。

c.判断连接任务是否建立成功-402

a)若连接失败,则将重连计数器retry_counter加1-404。若retry_counter的值大于重连上限max_retry,则返回连接失败错误,进入步骤d,否则返回步骤b-405;

重连计数器用于统计第一次连接任务失败后尝试连接的次数;

b)若连接成功,则进入步骤e;

d.通知管理节点该视频连接任务建立失败,并汇报连接失败的详细信息,进入步骤f-406

e.获取视频流并按时间段分割成视频文件,存储在本地文件系统中-403

f.程序结束-407

(4)存储节点获取视频流,并生成视频文件,通知管理节点来管理该视频文件-204

如图5,子流程:

a.开始-500

开始条件:存储节点sj成功建立与前端监控设备ci的连接任务,并且有新的视频文件生成;

b.利用ffmpeg等工具将h.264格式的视频流转换成mp4格式的视频文件,将视频文件按照时间段进行切割并保存到本地文件系统中-501

c.根据hdfs文件块的大小(dfs.block.size定义,默认为64mb),将视频文件进行切块-502

d.对每个视频切块生成一个校验文件,并与视频切块的名称相对应-503

e.存储节点sj通知管理节点m创建视频文件对应的元数据和数据块索引,并让管理节点m来管理该视频文件-504

f.将视频文件的hdfs路径、视频文件所述监控设备号ci、视频大小等关键信息录入到hbase数据块中,方便用户索引-505

g.视频文件上传成功,返回步骤a,等待下一个视频文件生成-506。

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