基于Hadoop对海量数据进行实时统计的系统和方法【
技术领域:
】[0001]本发明涉及网络通信
技术领域:
,特别涉及一种基于Hadoop对海量数据进行实时统计的方法和装置。【
背景技术:
】[0002]随着信息数据的爆炸性增长以及各个行业业务的需要,目前出现了分布式系统基础架构Hadoop,Hadoop提供集群的高速运算与海量存储。[0003]HBase是一个分布式的、面向列的一个具有高可靠性、可伸缩的开源数据库,是Hadoop项目的子项目,就如同Bigtable利用了Google文件系统(FileSystem)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。[0004]目前,基于Hadoop可以对海量数据进行离线式统计,其实现方式包括:获取并先缓存海量数据;对存储的海量数据进行处理;在到达一个上传周期,比如一个星期后,将处理后的海量数据以离线方式上传到Hadoop的HBase数据库中。[0005]由此可见,在现有技术中,海量数据是以离线方式上传到HBase数据库中的,因此无法满足数据实时统计的要求。【
发明内容】[0006]本发明提供一种基于Hadoop对海量数据进行实时统计的方法和装置,能够将海量数据实时统计到HBase数据库中。[0007]一种基于Hadoop对海量数据进行实时统计的系统,包括:由多个节点组成的Hadoop集群及Hadoop集群中的Hbase数据库,内存数据库;还包括:[0008]网络数据处理单元,用于获取网络数据,对获取的网络数据进行解析;[0009]入队单元,用于将解析后的数据组织为结构化数据格式,存储到MQ队列中;[0010]Storm处理单元,用于通过Storm对MQ队列中的数据进行流式计算处理,获得处理后的数据,将获得的处理后的数据存入内存数据库中;[0011]上传单元,用于将所述内存数据库中预定量的数据汇总持久化至Hadoop集群的Hbase数据库中。[0012]所述内存数据库包括:Memcached数据库;[0013]所述Storm处理单元,进一步根据预设的Hbase数据库对应的row-key规则,将所述获得的处理后的数据存入所述Memcached数据库中。[0014]所述Hadoop集群包括:[0015]I个NameNode节点,I个SecondaryNameNode节点,I个zookeeper节点与18个DateNode节点。[0016]所述网络数据处理单元包括:[0017]Nutch爬虫子单元,用于利用Nutch爬虫获取网络数据;[0018]解析子单元,用于对Nutch爬虫子单元获取的网络数据进行清洗和过滤。[0019]所述上传单元,用于在每当计时到达预设第一时间长度时,将当前第一时间长度内存储到Memcached数据库中的数据汇总持久化至Hadoop集群的Hbase数据库中。[0020]一种基于Hadoop对海量数据进行实时统计的方法,建立由多个节点组成的Hadoop集群及Hadoop集群中的Hbase数据库;设置内存数据库,包括:[0021]获取网络数据,对获取的网络数据进行解析;[0022]将解析后的数据组织为结构化数据格式,存储到MQ队列中;[0023]通过Storm对MQ队列中的数据进行流式计算处理,获得处理后的数据;[0024]将获得的处理后的数据存入内存数据库中;[0025]将内存数据库中预定量的数据汇总持久化至Hadoop集群的Hbase数据库中。[0026]所述内存数据库包括:Memcached数据库;[0027]所述将获得的处理后的数据存入内存数据库中包括:[0028]根据预设的Hbase数据库对应的row-key规则,将所述获得的处理后的数据存入Memcached数据库中。[0029]所述建立由多个节点组成的Hadoop集群包括:[0030]利用21个节点组成Hadoop集群,所述21个节点包括I个NameNode节点,I个SecondaryNameNode节点,I个zookeeper节点与18个DateNode节点。[0031]所述获取网络数据,对获取的网络数据进行解析包括:[0032]由Nutch爬虫对获取的网络数据进行清洗和过滤。[0033]所述预定量的数据为在预设的第一时间长度内存储到Memcached数据库中的数据。[0034]可见,本发明实施例提供的一种基于Hadoop对海量数据进行实时统计的系统和方法,能够针对海量数据建立Hadoop集群及Hbase数据库,在获取到网络数据后,通过MQ队列、Storm流式计算的配合,能够使得获取到的网络数据逐一进入MQ队列,Storm再从MQ队列中逐一取出数据进行流式计算处理,这样,通过MQ队列与Storm的配合,则完成了对海量数据的实时处理,并且,为了保证实时存储的实现,还将Storm处理后的数据先存入内存数据库中,然后再从内存数据库中汇总至Hbase数据库中,这样,则大大提高了数据存储速度,保证了海量数据能够被实时统计到Hbase数据库中。【附图说明】[0035]图1是本发明一个实施例中基于Hadoop对海量数据进行实时统计的方法的流程图。[0036]图2是本发明另一个实施例中基于Hadoop对海量数据进行实时统计的方法的流程图。[0037]图3是图2所示的本发明实施例的处理示意图。[0038]图4是本发明一个实施例中基于Hadoop对海量数据进行实时统计的系统的结构示意图。【具体实施方式】[0039]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0040]本发明一个实施例提出了一种基于Hadoop对海量数据进行实时统计的方法,参见图1,该方法包括:[0041]步骤101:建立由多个节点组成的Hadoop集群及Hadoop集群中的Hbase数据库;[0042]步骤102:设置内存数据库;[0043]步骤103:获取网络数据,对获取的网络数据进行解析;[0044]步骤104:将解析后的数据组织为结构化数据格式,存储到MQ队列中;[0045]步骤105:通过Storm对MQ队列中的数据进行流式计算处理,获得处理后的数据;[0046]步骤106:将获得的处理后的数据存入内存数据库中;[0047]步骤107:将内存数据库中预定量的数据汇总持久化至Hadoop集群的Hbase数据库中。[0048]可见,本发明实施例提供的一种基于Hadoop对海量数据进行实时统计的系统和方法,能够针对海量数据建立Hadoop集群及Hbase数据库,在获取到网络数据后,通过MQ队列、Storm流式计算的配合,能够使得获取到的网络数据逐一进入MQ队列,Storm再从MQ队列中逐一取出数据进行流式计算处理,这样,通过MQ队列与Storm的配合,则完成了对海量数据的实时处理,并且,为了保证实时存储的实现,还将Storm处理后的数据先存入内存数据库中,然后再从内存数据库中汇总至Hbase数据库中,这样,则大大提高了数据存储速度。可见,本发明实施例保证了海量数据能够被实时统计到Hbase数据库中。[0049]在本发明一个实施例中,内存数据库可以为多种类型的数据库,比如可以包括:Memcached数据库;[0050]为了进一步提高数据被存储到Hbase数据库中的效率,在将获得的处理后的数据存入内存数据库中时,具体可以是根据预设的Hbase数据库对应的row-key规则,将所述获得的处理后的数据存入Memcached数据库中。[0051]在本发明一个实施例中,建立由多个节点组成的Hadoop集群包括:[0052]利用21个节点组成Hadoop集群,所述21个节点包括I个NameNode节点,I个SecondaryNameNode节点,I个zookeeper节点与18个DateNode节点。[0053]在本发明一个实施例中,所述获取网络数据,对获取的网络数据进行解析包括:由Nutch爬虫从网页上获取网络数据,并对获取的网络数据进行清洗和过滤等处理。[0054]在本发明一个实施例中,可以定时将内存数据库中的数据持久化到Hbase数据库中。此时,上述预定量的数据为在预设的第一时间长度内存储到Memcached数据库中的数据。[0055]本发明另一个实施例也提出了一种基于Hadoop对海量数据进行实时统计的方法,参见图2,该方法包括:[0056]步骤201:搭建Hadoop大数据平台,利用21个节点组成Hadoop集群,从21个节点组成的集群中,设置I个NameNode节点,I个SecondaryNameNode节点,I个zookeeper节点与18个DateNode节点;并且,建立出Hadoop集群中的Hbase数据库。[0057]步骤202:预先设置Memcached数据库。[00当前第1页1 2