现在的位置: 首页 > 综合 > 正文

Hadoop:Google分布式存储/计算/查询系统的开源实现

2012年10月12日 ⁄ 综合 ⁄ 共 1310字 ⁄ 字号 评论关闭

  Google的伟大很大程度上得益于其强大的数据存储和计算能力,GFS和Bigtable使得其基本摆脱了昂贵的人力运维,并节省了机器资源;MapReduce使其可以很快看到各种搜索策略试验的效果。鉴于此,国内外出现了很多的模仿者,它们都是所谓的“高科技”企业,且往往还打上“云计算”的标签。从头到尾实现一套Google的存储/计算/查询系统是极其复杂的,也只有寥寥无几的几个巨头可以做到,Hadoop做为一种开源的简化实现,帮了很多科技公司的大忙。前些时候,Yahoo将Hadoop的创始人收于麾下,使得Hadoop完成华丽大转身,性能实现了一个飞跃式提升。
  Hadoop主要包括HDFS(分布式文件系统,对应GFS),MapReduce(分布式计算系统)和HBase(分布式查询系统,对应Bigtable),其中以HDFS和MapReduce较为成熟。另外,Hadoop还包括一些辅助系统,如分布式锁服务ZooKeeper,对应Google Chubby。这一套系统的设计目标如下:
  1. 简化运维:在大规模集群中,机器宕机,网络异常,磁盘错都属于正常现象,因此错误检查,自动恢复是核心架构目标。Google的解决方案就已经做到了机器随时加入/离开集群。
  2. 高吞吐量:高吞吐量和低延迟是两个矛盾的目标,Hadoop优先追求高吞吐量,设计和实现中采用了小操作合并,基于操作日志的更新等提高吞吐量的技术。
  3. 节省机器成本:Hadoop鼓励部署时利用大容量的廉价机器(性价比高但是机器故障概率大),数据的存储和服务也分为HDFS和HBase两个层次,从而最大限制地利用机器资源。
  4. 采用单Master的设计:单Master的设计极大地简化了系统的设计和实现,由此带来了机器规模限制和单点失效问题。对于机器规模问题,由于Hadoop是数据/计算密集型系统,而不是元数据密集型系统,单Master设计的单个集群可以支持成千上万台机器,对于现在的几乎所有应用都不成问题;而单点失效问题可以通过分布式锁服务或其它机制有效地解决。

  Google的其它模仿者包括,Microsoft dyrad(模范Google MapReduce),Hypertable(Hadoop HBase开发团队核心成员开始的一个开源项目,C++实现的Bigtable)。Google的解决方案不是万能的,然而相对我们普通人已经是几乎不可逾越了。Hadoop做为Google的这个模型的简化实现,有很多不足,这里先列出几点,以后将通过阅读Hadoop源代码和论文逐渐展开分析。Hadoop的几个明显缺点如下:
  1. 采用Java实现。Java的IO处理虽然没有性能瓶颈,但是对于CPU密集型的任务是一个噩耗。这点可以通过对比HBase和Hypertable两个开源的Bigtable实现来做初步的验证。
  2. 开源项目。开源本身是一柄双刃剑,它方便了大多数人,但是对于一个有一定规模的公司,项目发展方向的把握,技术保密,技术支持等都是采用Hadoop这种开源项目必须考虑的问题。另外,Hadoop作为一个比较新的项目,性能和稳定性的提升还需要一定时间。
  3. (待续)

抱歉!评论已关闭.