Excel、脚本语言、MPP数据库到Hadoop ——MB、GB、TB到PB

来源:互联网 发布:投诉淘宝店铺投诉电话 编辑:程序博客网 时间:2024/06/06 05:00

——最近因为某些原因不得不凑一片关于Hadoop的文章。不过个人对于目前Hadoop这种技术还没了解深入到可以分析于其他技术进行比较、技术发展方向等等这个层次,所以姑且先写这么一篇吧。虽然比较浅,不过算是对入职以后的工作经验的一个总结。

随着大数据这个词变得的火热,相关的大数据处理技术也在逐渐升温。当提到这些的时候,作为最成功的通用分布式处理框架之一,Hadoop这个词一定会飘过你的脑海。

海量数据处理、集群的线性扩展、避免单点故障的冗余运行机制,Hadoop带来的好处令人神往。但是Hadoop并非数据处理的万灵药,近年来呼吁理性对待Hadoop的呼声也越来越高,因为Hadoop本身也有着它的不足或者说不便利之处。

首要的一点就是:你的数据是不是真的足够大,必须要用Hadoop来处理?

看了Don’t use Hadoop when your data isn’t that big这篇文章,笔者结合自身的工作经验,通过本文分享一下关于数据处理中的技术选择。

Excel-带有强大的公式编辑以及数据透视、作图等功能,操作简单,适于将数据直观的展示出来。缺点就是只能处理结构化数据,处理能力和效率也偏低,批量处理的功能也很弱。当文件数量较多,或者单个文件超过几十MB以后,Excel很快就很难有所作为。

脚本语言-以Python为代表,语法简单,功能强大,可以将几个GB的数据放到内存中处理,或者对上百GB的数据进行流式处理。另外可以实现比较复杂的算法,同时通过一些第三方包,也提供了强大的数据展示功能。在本文提到的几种技术中,Python是伸缩性和适应性最好的,可以处理半结构或非结构的数据。缺点就是每次处理数据都要扫描文件,受限于磁盘IO。

MPP数据库-提供基于SQL的查询,具有良好且稳定的数据结构,并受益于集群的并行处理的性能提升,能够非常快速的响应数据处理和访问请求和TB级别的数据处理能力。在这几种技术中,MPP数据库提供的数据访问能力是最迅速的。

Hadoop-提供PB级别的数据处理能力,而且和MPP数据库不同,性能可以随着集群节点数量的提升实现线性的增长,理论上能够处理的数据集是无限的。但是缺点是处理灵活度不高,只适于进行可以并行计算的数据处理,用伪代码来表述就是只能提供类似于 SELECT G(…) FROM table GROUP BY F(…)这样的操作,数据的关系查询能力比较弱。

数据处理技术的发展,是从MB级别到PB级别处理能力的提升。而数据处理的目的则相反,是将PB级别的数据不断进行抽象以最终得到感兴趣的结论,这一结论往往只需要使用MB或者KB级别的信息来进行描述。

具体来讲,就是首先使用Hadoop的Mapreduce将HDFS中大规模的数据抽取出感兴趣的信息,以缩小数据集并对数据进行格式化。然后输入MPP数据库中,或者直接使用Python脚本对抽取出的数据进行分析并抽象出统计结果,或者输出需要使用Python脚本运行一些复杂算法的预处理结果。最后通过Python或者Excel来得到最终的分析结果。

0 0