你的位置:首页 > 数据库

[数据库]数据挖掘的一般性过程

   在最开始阶段,我们进行初始数据的收集工作,根据不同的业务场景,可能会涉及到的一些技术领域:分散日志收集技术,诸如Scribe、Flume为代表的开源日志收集系统;数据消息传递相关的技术,各种开源的消息队列MQ,诸如ActiveMQ、RocketMQ、Kafka等;各种爬虫技术、网页解析技术;数据库数据转换技术,如Apache的Sqoop等;

     在数据处理阶段,通常我们会有两种不同的处理方式,一种是在数据落地之前,我们进行预处理,典型如Storm为代表的实时处理系统,还有近一两年比较火的Spark Streming;还有一种就是落地之后进行的批量离线处理,如Hadoop的MapReduce,以及使用Spark进行处理。当然,对于数据的预处理,并不是说一定要用到什么框架,但是这个过程肯定是需要的,我们需要对数据进行进一步得过滤、规整操作。

   然后是数据的落地,对于规整之后的数据,我们需要进行落地存储,然后才能做进一步的处理。对于一般性的大规模存储,目前有很多开源的分布式文件系统方案,典型如HDFS,但更多的是存入数据仓库中,或者一些NoSQL中。其中以Hadoop生态中的Hive以及Hbase为代表。

   然后在整个数据被规整到存储落地的过程中,是一整套完整的数据处理流程,是一个完善的数据处理平台,我们可能还会涉及到一些分布式的协调系统,典型如Zookeeper;还涉及到一些分布式平台的监控,如Ganglia和Nagios的结合使用,以及Puppet、Zabbix等等相关技术。

   然后接着就是数据的价值体现,对于部分业务来说,处理过的数据已经是可以直接使用了,例如通过数据仓库的操作,直接对外展现;而部分数据则是需要对其进行统计分析,例如通过对Hive的各种操作,生产的各种BI报表,我们则可以从中找到现有数据的规律,进而完善我们的业务策略;而部分业务则希望现有的数据对未来数据能够产生影响,所以引入了各种数据深度挖掘的东西,例如在大规模数据挖掘场景下的Mahout以及Spark的MLlib等;还有部分业务则是想把这些数据作为一个搜索数据源,那这个时候我们会对数据索引化的操作。

 

 

摘选自http://blogchong.baijia.baidu.com/article/209901