天天看点

Hadoop不是解决大数据问题的唯一方案

    1.对于大数据的渴望

  很多人相信他们拥有正真“大”的数据, 但通常情况并非如此。 当考虑数据容量和理解大多数人对“大数据”处理的想法的时候, 我们应当参考这篇研究论文, 没有人会因为买了一个集群的服务器而被辞退, 它告诉了我们一些有趣的事实。 Hadoop是被设计成用来处理在TB或PB级别的数据的, 而世界上大多数的计算任务处理的是100GB以下的输入数据。(Microsoft和Yahoo在这个数据统计上的中位数是14GB,而90% Facebook的任务处理的是100GB以下的数据)。对于这样的情况来说, 纵向扩展的解决方案就会在性能上胜过横向扩展(scale-out)的解决方案。

  (译者注:纵向扩展scale-up通常是指在一台机器上增加或更换内存、CPU、硬盘或网络设备等硬件来实现系统整体性能的提升, 横向扩展(scale-out)指的是通过在集群中增加机器来提升集群系统整体性能的提升。论文中比较了对Hadoop系统进行各种纵向扩展和横向扩展之 后, 在性能指标上进行评测的试验。结论是在某些情况下在一台机器上的纵向扩展会比在Hadoop集群中增加机器得到更高的系统性能,而且性价比会更好。这个结 论打破了大多数人对Hadoop系统的简单认识, 那就是一定要用若干廉价的机器组成集群才能到达最好的整体性能。 )

  所以你需要问自己:

  我是否有超过几个TB的数据?

  我是否有稳定、海量的输入数据?

  我有多少数据要操作和处理?

  2.你在队列中

  当你在Hadoop系统中提交计算任务的时候, 最小的延迟时间是1分钟 。 这意味系统对于客户的商品购买信息要花1分钟的时间才能响应并提供相关商品推荐。这要求系统有非常忠实和耐心的客户, 盯着电脑屏幕超过60秒钟等待结果的出现。 一种好的方案是将库存中的每一件商品都做一个预先的相关商品的计算, 放在Hadoop上。 然后提供一个网站,或者是移动应用来访问预先存储的结果,达到1秒或以下的即时响应。 Hadoop是一个非常好的做预先计算的大数据引擎。 当然,随着需要返回的数据越来越复杂,完全的预先计算会变得越来越没有效率。

  所以你需要问自己:

  用户期望的系统响应时间大概在什么范围?

  哪些计算任务是可以通过批处理的方式来运行的?

  (译者注:原作者应该是用了B2C电子商务网站上经典的商品推荐功能作为用例,描述如何用Hadoop实现这个功能。)

  

继续阅读