Hadoop 适用范围

首先咱们看一下Hadoop解决了什么问题。Hadoop就是解决了大数据(大到一台计算机没法进行存储,一台计算机没法在要求的时间内进行处理)的可靠存储和处理。算法

  • HDFS,在由普通PC组成的集群上提供高可靠的文件存储,经过将块保存多个副本的办法解决服务器或硬盘坏掉的问题。编程

  • MapReduce,经过简单的Mapper和Reducer的抽象提供一个编程模型,能够在一个由几十台上百台的PC组成的不可靠集群上并发地,分布式地处理大量的数据集,而把并发、分布式(如机器间通讯)和故障恢复等计算细节隐藏起来。而Mapper和Reducer的抽象,又是各类各样的复杂数据处理均可以分解为的基本元素。这样,复杂的数据处理能够分解为由多个Job(包含一个Mapper和一个Reducer)组成的有向无环图(DAG),而后每一个Mapper和Reducer放到Hadoop集群上执行,就能够得出结果。服务器


  • Hadoop的局限和不足 可是,MapRecue存在如下局限,使用起来比较困难。
    • 抽象层次低,须要手工编写代码来完成,使用上难以上手。并发

    • 只提供两个操做,Map和Reduce,表达力欠缺。app

    • 一个Job只有Map和Reduce两个阶段(Phase),复杂的计算须要大量的Job完成,机器学习

    • 处理逻辑隐藏在代码细节中,没有总体逻辑分布式

    • 中间结果也放在HDFS文件系统中oop

    • ReduceTask须要等待全部MapTask都完成后才能够开始性能

    • 时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够学习

    • 对于迭代式数据处理性能比较差

    好比说,用MapReduce实现两个表的Join都是一个颇有技巧性


    可是基于Hadoop MapReduce这么多的局限性,出现了不少新技术来解决这些问题。比较突出的技术就是Spark.一下作些介绍。

    Apache Spark

    Apache Spark是一个新兴的大数据处理的引擎,主要特色是提供了一个集群的分布式内存抽象,以支持须要工做集的应用。拥有Hadoop MapReduce所具备的优势;但不一样于MapReduce的是Job中间输出结果能够保存在内存中,从而再也不须要读写HDFS,所以Spark能更好地适用于数据挖掘与机器学习等须要迭代的MapReduce的算法。

相关文章
相关标签/搜索