如今,大数据已经成为时代的主题,企业对大数据的应用也愈加深入,随着大数据的普及,有很多大数据的观念需要被质疑,首先一点就是人们普遍认为你可以简单地利用Hadoop,并且Hadoop易于使用。
问题是,Hadoop是一项技术,而大数据和技术无关。大数据是和业务需求有关的。事实上,大数据应该包括Hadoop和关系型数据库以及任何其它适合于我们手头任务的技术。
例如,在Hadoop中对一个数据集做广泛并且探索性的分析是很有意义的,但关系型存储对于那些尚未发现的东西进行运行分析则更好。Hadoop对于在一个数据集中寻找最低水平的细节也很好用,但关系型数据库对于数据的存储转换和汇总则更有意义。因此底线是,对于你的任何需求,要使用正确的技术。
对于Hadoop如何组合和处理大数据的技巧和方法,数据专家Anoop曾经在另一篇文章中提到过,一般情况下,为了得到最终的结果,数据需要加入多个数据集一起被处理和联合。Hadoop中有很多方法可以加入多个数据集。MapReduce提供了Map端和Reduce端的数据连接。这些连接是非平凡的连接,并且可能会是非常昂贵的操作。Pig和Hive也具有同等的能力来申请连接到多个数据集。Pig提供了复制连接,合并连接和倾斜连接(skewed join),并且Hive提供了map端的连接和完整外部连接来分析数据。
在大数据/Hadoop的世界,一些问题可能并不复杂,并且解决方案也是直截了当的,但面临的挑战是数据量。在这种情况下需要不同的解决办法来解决问题。一些分析任务是从日志文件中统计明确的ID的数目、在特定的日期范围内改造存储的数据、以及网友排名等。所有这些任务都可以通过Hadoop中的多种工具和技术如MapReduce、Hive、Pig、Giraph和Mahout等来解决。这些工具在自定义例程的帮助下可以灵活地扩展它们的能力。
Hadoop是一个框架,不是一个解决方案,在解决大数据分析的问题上人们误认为Hadoop可以立即有效工作,而实际上对于简单的查询,它是可以的。但对于难一些的分析问题,Hadoop会迅速败下阵来,因为需要你直接开发Map/Reduce代码。出于这个原因,Hadoop更像是J2EE编程环境而不是商业分析解决方案。”所谓框架意味着你一定要在之上做个性化和业务相关的开发和实现,而这些都需要成本。
Hadoop是一个用来做一些非常复杂的数据分析的杰出工具。但是具有讽刺意味的是,它也是需要大量的编程工作才能得到这些问题的答案。 这一点不止在数据分析应用方面,它其实反映了目前使用开源框架时候不得不面对的选型平衡问题。当你在选型开源框架或代码的时候,既要考虑清楚它能够帮到你多少,节省多少时间和成本,提高多少效率。也要知道由此而产生多少新增的成本,比如工程师的学习成本、开发和维护成本,以及未来的扩展性,包括如果使用的框架升级了,你和你的团队是否要做相应的升级;甚至还要有安全性方面的考虑,毕竟开源框架的漏洞也是众所周知的。
评论:
在大数据时代下,很多人都认为Hadoop易于使用,因此在大数据的应用过程中,Hadoop也是冲锋陷阵,然而,Hadoop也会面临不能解决的问题,Hadoop并非无所不能,因此,用户在运用Hadoop过程中,应当量力而为。