大数据处理流程

来自CloudWiki
跳转至: 导航搜索

具体的大数据处理方法有很多,根据长时间的实践,可以总结出一个基本的大数据处理流程。整个处理流程可以概括为4步,分别是采集、导入和预处理、统计和分析以及挖掘。

(1)采集

大数据的采集是指利用多个数据库来接收客户端(如Web、APP或者传感器形式等)的数据,并且用户可以通过这些数据库来进行简单的查询和处理工作。比如,电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据,除此之外,Key-Value型数据库(如Redis)、文档型数据库(如MonogoDB)、图型数据库(如Neo4j)等NoSQL数据库也常用于数据的采集。

在大数据的采集过程中,其主要特点和挑战是并发数高,因为同时有可能会有成千上万的用户来进行访问和操作。比如火车票售票网站和淘宝,它们并发的访问量在峰值时达到上百万,所以需要在采集端部署大量数据库才能支撑,并且如何在这些数据库之间进行负载均衡和分片的确是需要深入的思考和设计。

(2)导入和预处理

虽然采集端本身会有很多数据库,但是如果要对这些海量数据进行有效的分析,还是应该将这些来自前端的数据导入到一个集中的大型分布式数据库(SequoiaDB)或者分布式存储集群(OneProxy)中,并且可以在导入基础上做一些简单的清洗和预处理工作。也有一些用户会在导入时使用来自Twitter、LinkedIn等公司相继开源的流式计算系统Storm、分布式发布订阅消息系统Kafka、雅虎之前开源的S4等对数据进行流式计算,来满足部分业务的实时计算需求。

导入与预处理过程的特点和挑战主要是导入的数据量大,每秒钟的导入量经常会达到百兆,甚至千兆级别。

(3)统计与分析

统计与分析主要利用分布式数据库,或者分布式计算集群来对存储于其内的海量数据进行普通的分析和分类汇总等,以满足大多数常见的分析需求。在些这方面,一些实时性需求会用到易安信(EMC,一家美国信息存储资讯科技公司)的分布式数据库GreenPlum、Oracle的新一代数据库云服务器Exadata以及基于MySQL的列式存储Infobright等,而一些批处理或者基于半结构化数据的需求可以使用Hadoop。

统计与分析这部分的主要特点和挑战是分析涉及的数据量大,其对系统资源,特别是I/O会有极大的占用。

(4)挖掘

与前面统计和分析过程不同的是,数据挖掘一般没有什么预先设定好的主题,主要是在现有数据上面进行基于各种算法的计算,从而起到预测(Predict)的效果,以便实现一些高级别数据分析的需求。比较典型算法有用于聚类的K-Means、用于统计学习的SVM和用于分类的Naive Bayes,主要使用的工具有Hadoop的Mahout等。

该过程的特点和挑战主要是用于挖掘的算法很复杂,并且计算涉及的数据量和计算量都很大,还有常用数据挖掘算法都以单线程为主。

数据来自各个方面,在面对庞大而复杂的大数据,选择一个合适的处理工具显得很有必要,工欲善其事,必先利其器,一个好的工具不仅可以使工作事半功倍,也可以让人们在竞争日益激烈的云计算时代,挖掘大数据价值,及时调整战略方向。

参考文档:《Hadoop大数据构建与应用》