百亿数量级的大数据项目,软硬件总体预算只有30万左右,需求是进行复杂分析查询,性能要求多数分析请求达到秒级响应。
遇到这样的项目需求,预算不多的情况,似乎只能考虑基于Hadoop来实施。 理论上Hadoop撑住百亿数量级没问题,但想要秒级响应各种查询分析就不行了。我们先大概分析一下Hadoop的优缺点。
Hadoop
Hadoop目前几乎是大数据的代名词,很多企业都基于Hadoop搭建自己的大数据业务。
以下是Hadoop的主要优点:
1. Hadoop集群的扩展性是其一大特点,Hadoop可以扩展至数千个节点,对数据持续增长,数据量特别巨大的需求很合适。
2. Hadoop的成本是其另一大优势,由于Hadoop是开源项目,而且不仅从软件上节约成本,硬件上的要求也不高。目前去IOE潮流风行,低成本的Hadoop也是一大推手。
3. Hadoop生态群活跃,其周边开源项目丰富,HBase, Hive,Impala等等基础开源项目众多。
那么Hadoop的不足有哪些呢?
Hadoop不适合做实时分析系统。
1. 从通讯层的技术上来说有如下原因:
任务分配Server不会将信息Push到计算Node,而是让计算Node通过心跳去Pull任务。
基于框架的通用性,MapReduce代码也会在HDFS中传送,在各计算Node展开,再通过启动新JVM进程装载并运行。
类似的JVM进程启停有5、6次之多。
Reduce Task只能在全部Map Task完成之后才能启动。
2. 缺乏专业的支持服务
因为是开源项目,缺少专业的商业支持服务,公司需要储备专业Hadoop知识的专家来保证系统的正常运转。
3. Hadoop可以支持百亿的数据量,但很难应对秒级响应的需求
即使是数亿的数据量,Hadoop也只适合做分钟级别的离线分析系统。