大数据开源框架特点大总结

来源:互联网 发布:趣购购物商城php源码 编辑:程序博客网 时间:2024/05/01 02:39

1. ElasticSearch

1.1 ElasticSearch的优点:

  • 高并发。实测es单机分配10g内存单实例,写入能力1200qps,60g内存、12核CPU起3个实例预计可达到6000qps。
  • 同机房单条数据写入平均3ms(比mysql慢,mg不清楚)
  • 容错能力比mg强。比如1主多从,主片挂了从片会自动顶上
  • 满足大数据下实时读写需求,无需分库(不存在库的概念)。
  • 易扩展。实例间做下配置即可扩展并发性和容积,自动分配的写入机制,无需操心传统db中多主同步的诟病
  • 支持较复杂的条件查询,group by、排序都不是问题
  • 具有一定的关系性,但不用担心大字段的问题

1.2 ElasticSearch的缺点:

  • 不支持事务;
  • 读写有一定延时;
  • 无权限管理.

2. Lucene

       Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作。

2.1 Lucene的优点

       成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。

2.2 Lucene的缺点

       需要额外的开发工作。所有的扩展,分布式,可靠性等都需要自己实现;非实时,从建索引到可以搜索中间有一个时间延迟,而当前的“近实时”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步完善。

3. Redis

3.1 Redis的优点

  • 读写性能优异
  • 支持数据持久化,支持AOF和RDB两种持久化方式
  • 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
  • 数据结构丰富:除了支持string类型的value外还支持string、hash、set、sortedset、list等数据结构。

3.2 Redis的缺点

  • Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
  • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
  • Redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
  • Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

4. HBase

4.1 HBase的优点

  • 列的可以动态增加,并且列为空就不存储数据,节省存储空间.

  • Hbase自动切分数据,使得数据存储自动具有水平scalability.

  • Hbase可以提供高并发读写操作的支持

4.2 HBase的缺点

  • 不能支持条件查询,只支持按照Row key来查询。

  • 暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉。

5. Hadoop

5.1 Hadoop的优点

  • Hadoop集群的扩展性是其一大特点,Hadoop可以扩展至数千个节点,对数据持续增长,数据量特别巨大的需求很合适。
  • Hadoop的成本是其另一大优势,由于Hadoop是开源项目,而且不仅从软件上节约成本,硬件上的要求也不高。目前去IOE潮流风行,低成本的Hadoop也是一大推手。
  • Hadoop生态群活跃,其周边开源项目丰富,HBase, Hive,Impala等等基础开源项目众多。

5.2 Hadoop的缺点

  • 全量场景,任务内串行
  • 重吞吐量,响应时间完全没有保证
  • 中间结果不可见,不可分享
  • 单输入单输出,链式浪费严重
  • 链式MR不能并行
  • 粗粒度容错,可能会造成陷阱
  • 图计算不友好
  • 迭代计算不友好
  • 不能支持秒级计算,只适合做离线数据分析任务

持续更新中……

0 0